728x90

# Rtsne (차원 축소)

library(Rstne)
library(ggplot2)

ds <- iris[,-5]               # 품종 정보 제외

## 중복 데이터 제거
dup = which(duplicated(ds))
dup                           # 143번째 행 중복
ds <- ds[-dup,]
ds.y <- iris$Species[-dup]    # 중복을 제외한 품종 정보

## t-SNE 실행
tsne <- Rtsne(ds,dims=2, perplexity=10) # 2차원, 10개씩 샘플링

## 축소결과 시각화 
df.tsne <- data.frame(tsne$Y)  # 데이터 프레임으로 만들어줌
head(df.tsne)
ggplot(df.tsne, aes(x=X1, y=X2, color=ds.y)) + 
  geom_point(size=2) 

- 샘플 값이 달라지므로 회전이 되는데 실제론 동일함

- versicolor랑 virginica 는 중첩

 

 

# 4차원 데이터를 3차원 산점도로 내리기 (회귀면)

install.packages(c("rgl", "car"))
library("car")
library("rgl")

tsne <- Rtsne(ds,dims=3, perplexity=10)
df.tsne <- data.frame(tsne$Y)
head(df.tsne)

# 회귀면이 포함된 3차원 산점도
scatter3d(x=df.tsne$X1, y=df.tsne$X2, z=df.tsne$X3)

# 회귀면이 없는 3차원 산점도
points <- as.integer(ds.y)
color <- c('red','green','blue')
scatter3d(x=df.tsne$X1, y=df.tsne$X2, z=df.tsne$X3,
          point.col = color[points],   # 점의 색을 품종별로 다르게 
          surface=FALSE)               # 회귀면을 표시하지 않음 

set.seed(1) # 고정

 

 

# Tidyverse

- data science의 모임

- install.packages("tidyverse")

- 변수마다 해당되는 열 존재

- 관측값마다 해당되는 행 존재

- 값마다 해당하는 하나의 셀 존재

- dataframe과 유사 (dataframe보다 일관성, 모델링 쉬움)

# 티블 (tibble)

- dataframe 대신 사용

 

# tibble 생성

- as_tibble()

install.packages("tidyverse")

library("tidyverse")
ir <- iris
str(ir)
as_tibble(iris)

tibble(x=1:5, y=1, z=x^3+y)

# 티블을 데이터프레임으로 변환

tib1 <- as_tibble(iris)
tib1
df <- as.data.frame(tib1)
class(df)

 

 

 

Person <- c('Owen', 'Andrew', 'Natalie', 'Dylan')
Hobby <- c('skiing', 'Cycling', 'Taxidermy', 'Coding')
IQ <- c(1, 1, 100, 1)

classic <- data.frame(Person, Hobby, IQ)
str(classic)
classic

my_data <- tibble(Person, Hobby, IQ)
str(my_data)
my_data
glimpse(my_data)

 

 

name = c('전', '유')
born = c('1999-01-01', '1999-01-02')
year = c(2L, 4L) # int 형으로
grade = c('A+', 'A-')
height = c(178, 170)

# 티블 데이터 설정
tibble = tibble(name, born, year, grade, height)
tibble

# born 변수를 <date> 형식으로 저장
born = lubridate::as_date(born)  # 내부 함수
tibble(name, born, year, grade, height)

 

# 변수 이름 붙이기 쉬움

# 변수 이름 붙이는데 tibble 데이터가 더 자유로움
tibble(
  name = c("Jake", "Jessy", "Jack"),
  A__A = c("used", "used", "not used")
  )

 

 

# 엑셀 데이터 불러오기

library('readxl')
world_country = read_xlsx("data_country.xlsx")

똑같은 데이터 skip

(" " , skip = 2)  # 헤더부분 건너뜀

 

# csv 불러오기

data = read_csv(" ", delim='\t') # tab으로 구분되어있을 경우

 

# SPSS 형태의 데이터 불러오기

library('haven')
read_spss=("d.sav")

 

# STATA 형태의 데이터 불러오기

d = read_dta("")

 

 

# 기간에 대한 변수에 대한 빈도

count(data, 기간)

read_xls(".xls") %>%
  count(기간)

 

 

# %>%  => 찾아서 다음 실행

my_recoding_function = function(myvariable){
  if (is_character(myvariable)){
    myvariable=as.numeric(recode(myvariable, "-"="0"))
  }else{
    myvariable=as.numeric(myvariable)
  }
}

seould_library %>%
  filter(기간=2010)%>%
  select(ends_with("도서관"))%>%
  mutate_at(
    vars(ends_with("도서관")),
    my_recoding_function
  )%>%
  summarize_all(mean)

ends_with("도서관")    # 도서관으로 끝나는 것만

 

 

data2 = data %>%
  select(기간, 자치구, 계)


data2 %>%
  print(n=2)  # 2개만 출력

 

 

contains("도서") # 특정 단어 들어있는 것 선택

 

select(기간:공공도서관)  # 기간 부터 공공도서관까지

select(2:5)

select(-(2:5)) # 제외

 

반응형

'전공 공부 > 확률및통계' 카테고리의 다른 글

확률및통계 12주차 강의  (0) 2021.05.18
확률및통계 11주차 강의  (0) 2021.05.12
확률및통계 7주차 강의  (0) 2021.04.13
확률및통계 2차과제  (0) 2021.03.28
확률및통계 4주차 강의  (0) 2021.03.23
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기