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 |