반응형

p <- c(3,5,6,8)
q <- c(3,3,3)
p+q#
#recycling
#[1]  6  8  9 11
#경고메시지(들): 
#  In p + q : 두 객체의 길이가 서로 배수관계에 있지 않습니다
p <- c(3,5,6,8)
q <- c(2,3,4)
p+q#
#recycling
#[1]  6  8  9 11
#경고메시지(들): 
#  In p + q : 두 객체의 길이가 서로 배수관계에 있지 않습니다
#마지막것은 처음것으로 더한다.
#고수준 : 혼자 그릴수 있다.
#저수준 :그림이 있어야 그릴수 있다.

plot(airquality)#그림을 박스별로 그리는 것

#상자수염은 이상치 찾을때

library(readxl)
library(dplyr)
BostomHousing <- read_excel("BostonHousing.xls")
str(BostomHousing)
data <- tbl_df(BostomHousing)#데이터의 형태를 바꾼다. 이렇게 바꾸면 큰 데이터 프레임을 보기 쉽도록 해 준다.
#tbl_df -> as_tibble를 불러온다.
str(data)

View(data)
glimpse(data)

data(package ="MASS")
names(data)


library(psych)
pairs.panels(data[names(data)])#데이터 있는 것들을 이름을 가져와서 
#상관간계 보여 주는 것 
#0.70 과 -0.74
#rm lstat와 관계있다.
pairs.panels(data)
#plot에서 상관관계 
data <- data[ , -15]#오류난다.
data

names(data)
names(data) <- tolower(names(data))#소문자로 바꿔준다.
data_lm <- lm(medv ~ ., data = data)
#medv가격을 나타내는 주기 
#.한꺼번에 다 너주기 
data_lm
#이것은 작을 수록 좋다.

 

#excel cliboard에서 읽는 방법
x <- readClipboard()
read.table(file="clipboard", sep ="\t" , header = T)
read.clipboard()
#-----------------------------

#의사결정나무는 기초
data <- read.csv("churn.csv")

#결측치 있는 지 확인 
#sapply(data, function(x) sum(is.na(data) ))

str(data)
library(caret)
set.seed(1234)
#names(data) <- tolower(names(data))
#names(data)
names(data)[21] <- "churn"
index <- createDataPartition(y = data$churn, p = 0.7, list = F)
train <- data[index,]
test <- data[-index,]
3333*0.7
str(train)#2334

library(rpart)
library(rpart.plot)

rpart_tree <- rpart(churn ~. , train[,c(-1,-4)])# 첫번째 열을 stat -1빼고 -4 phone 열을 빼고 나무 만들었다.
rpart_tree <- rpart(churn ~. , train[,c(-1,-4 )] ,
                    control= rpart.control(minsplit =  10, 
                                           minbucket = 3, 
                                           cp = 0.03, 
                                           maxdepth = 10))
plot(rpart_tree)
text(rpart_tree, cex = 1.5)#나무 만들기
rpart.plot(rpart_tree, cex =1 )

#예측
t <- test[2, ]#필요한 정보만 주면 되기때문에 안맞아도 문제 없다.
predict(rpart_tree , newdata = t )#t라는 분이 해지 할지 안할지 
rpart_tree
printcp(rpart_tree)
plotcp(rpart_tree)

install.packages("rattle")
library(rattle)

fancyRpartPlot(rpart_tree)
fancyRpartPlot(rpart_tree, cex = 0.6)
rpart.plot(rpart_tree, cex = 1)

rpart_pred <- predict(rpart_tree, test[,c(-1,-4)], type="class")
library(caret)
confusionMatrix(rpart_pred, test$churn, positive ="True.")

rpart_tree$cptable
rpart.prune <- prune(rpart_tree, cp = 0.05, "CP")#사후적인 가지치기 
rpart.plot(rpart.prune)
rpart.plot(rpart.prune, cex = 0.7)

rpart_pred2 <- predict(rpart.prune,test[,c(-1,-4)], type="class")
confusionMatrix(rpart_pred2, test$churn, positive ="True.")

#accuracy높다고 좋은 것이 아니다. 
install.packages("party")
library(party)
party_tree <- ctree(churn ~ ., train[,c(-1,-4)])
plot(party_tree)

party_pred <- predict(party_tree, test[,c(-1,-4)],type="response")
confusionMatrix(party_pred,test$churn, positive = "True.")

confusionMatrix(rpart_pred2, test$churn, positive = "True.")$overall
confusionMatrix(party_pred, test$churn, positive = "True.")$overall
#---------------
#---------------
#연관성 규칙 
install.packages("arules")
install.packages("arulesViz")
install.packages("wordcloud")#wordcloud2한다.


library(arules)
library(arulesViz)
library(wordcloud)

data("Groceries")
summary(Groceries)
str(Groceries)
class(Groceries)
#"transactions"
#transactions 은 다룰 수 없다.그래서 as.data.frame으로 

#데이터 프레임으로 변환
groceries_df <- as(Groceries,"data.frame")#as class를 class이름 이 들어간다.
#data.frame
class(groceries_df)

itemName <- itemLabels(Groceries)
itemCount <- itemFrequency(Groceries)*9835

#워드 클라우드 
groceries_df
col <- brewer.pal(8, "Dark2") 
#x11()
wordcloud(words = itemName , ffreq = itemCount,min.freq = 1,
          scale = c(3, 0.2) , col = col, random.order = F)

#apriori 함수로 규칙 생성 
rules <- apriori(Groceries, parameter = list(support=0.01 , confidence = 0.35))

#생성된 규칙 검사
summary(rules)
inspect(rules)
inspect(rules, by ="lift")

getwd()
write.csv(as(rules, "data.frame"),"Geoceries_rules")
x11()

#규칙을  plot으로 표현하기 
plot(rules, method="scatterplot")
plotly_arules(rules, method ="scatterplot",
              measure = c("support","confidence"),shading = "lift")
plotly_arules(rules, method = "matrix",
              measure = c("support","confidence"),shading = "lift")
#연관 규칙 요구르트를 사면 야채를 산다 등 연관관계를 찾아내는 것 
#연관규칙 분석 
#산것은 1안산것은  0이다.

#지지도 전체에서 
#신뢰도 빵을 샀을때 우유가 등장한다. 지지도가 1이면 세트일 가능성이 있다. 
#향상도 빵을 사면 우유를 산다. 우유는 무조건 산다.지지도가 그부분을 설명 할 수 없다.
반응형

'Study > R' 카테고리의 다른 글

R-9  (0) 2020.09.05
R-8  (0) 2020.09.05
R-7  (0) 2020.09.05
R-6  (0) 2020.09.05
R-5  (0) 2020.09.05

+ Recent posts