반응형
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이면 세트일 가능성이 있다.
#향상도 빵을 사면 우유를 산다. 우유는 무조건 산다.지지도가 그부분을 설명 할 수 없다.
반응형