# 建立路径
setwd("F:\\8#机器学习\\第二步\\第一版1.0\\")
# 读取数据
set.seed(126)
user <- read.csv("完整版1.0_进模型_30.csv",stringsAsFactors = F)
# 查看数据
View(user[1:10,])
table(user$index_1)
summary(user)
str(user)
# 查看变量类型
sapply(user,class)
# 选择要的变量
user <- user[,c(6:57,59:64)]
# 将预测变量转化为因子
user$index_1 <- as.factor(user$index_1)
# 决策树可以对全数据做模型、也可手动分类做模型、缺失值和极值可以手动处理
# 举例 (此处不用)
user <- user[user$flag==1 | user$flag==2 | user$flag==3,]
user$flag <- NULL
##将数据分为训练集和测试集,比例为7:3
set.seed(123)
ind=sample(2, nrow(user), replace=TRUE, prob=c(0.7, 0.3))
user_train <- user[ind==1,]
user_test <- user[ind==2,]
# 检查训练和测试集中的亏损的比例情况
prop.table(table(user$index_1))
prop.table(table(user_train$index_1))
prop.table(table(user_test$index_1))
##################################训练模型###############################
# 安装包并且载入包
install.packages("C50")
library(C50)
# 构建模型
# model <- C5.0(train, class, trials = 1, costs = NULL)
# train: 一个包含训练数据的数据框
# class: 包含训练数据每一行的分类的一个因子向量
# trials: 为一个可选数值,用于控制自助法循环的次数(默认为1)
# costs: 为一个可选矩阵,用于给出与各种类型错误相对应的成本
# 该函数返回一个C5.0模型对象,该对象可用于预测
# 预测模型
# prediction <- predict(m, test, type = "class")
# m: 由C5.0(train, class, trials = 1, costs = NULL) 训练的一个模型
# test: 一个包含测试数据的数据框,该数据框和用来创建分类器的训练数据有相同的特征
# type: 取值为“”或者“”标示预测是最可能的类别值或者是原始的预测概率
# 该函数返回一个向量,根据参数type的取值,该向量含有预测的类别值或者原始的预测概率
# 实际操作
user_model <- C5.0(user_train[-53], user_train$index_1) # 准确率69.8 正确率 52%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##########################################################################################
######################################模型提升##############################################
##########################################################################################
##########################trials 循环#######################
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20) # 准确率71.9 正确率 55.9%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##########################minCases #######################
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20,
control= C5.0Control(minCases = 400)) # 准确率72.6 正确率 59.3%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##############几个参数调节#################
# 可调参数 CF 复杂度minCases每个叶节点上的最小样本数,trials:bosting次数
tc <- C5.0Control(subset = F,CF = 0.07,winnow = F,noGlobalPruning=F,minCases =488)
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20,
control= tc) # 准确率72.6 正确率 59.3%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
# 安装RWeka包 (出现问题的解决办法)
Sys.setenv(JAVA_HOME='E:\\java') # for 64-bit version
install.packages("rJava")
library(rJava)
install.packages("RWeka",dependencies = TRUE)
library(RWeka)
# OneR
kk <- user_train[,c(53,56:58)]
names(kk) <- c("index_1","a1","b1","c1")
mushroom_1R <- OneR(index_1 ~ ., data = kk)
mushroom_1R
summary(mushroom_1R)
# JRip
mushroom_JRip <- JRip(index_1 ~ ., data = kk)
mushroom_JRip
summary(mushroom_JRip)
# 根据前面的重要度从新选择变量
library(C50)
mushroom_c5rules <- C5.0(type ~ odor + gill_size, data = mushrooms, rules = TRUE)
summary(mushroom_c5rules)
#-----可以增加成本矩阵---------
error_cost <- matrix(c(0, 1, 2, 0), nrow = 2)
error_cost
# 建立模型
credit_cost <- C5.0(credit_train[-17], credit_train$default,
costs = error_cost)
# 成本矩阵中,预测正确的赋予0,将1预测为0的情况赋予成本2,将0预测为1的情况赋予成本1。
error_cost <- matrix(c(0, 1, 1.1, 0), nrow = 2)
# 简单画图
plot(user_cost,main="Whole Tree")
plot(user_boost20,subtree = 3,main="NO.3")
plot(user_cost,subtree = 13,main="NO.13")
########## 最优参数查找 ##############
rbind_zpp <- c()
rbind_null <- c()
i = 250
for (ll in 1:20){
# i =
k = 0.01
for(l in 1:20){
tc <- C5.0Control(subset = F,CF = k,winnow = F,noGlobalPruning=F,minCases = i)
user_boost20 <- C5.0(user_train[-53], user_train$index_1, trials = 20,
control = tc)
user_boost_pred20 <- predict(user_boost20, user_test)
zpp <- table(user_test$index_1,user_boost_pred20)
rbind_null$mincases <- i
rbind_null$CF <- k
rbind_null$zhunquelv <- zpp[2,1]/(zpp[1,1]+zpp[2,1])
rbind_null$zhengquelv <- (zpp[1,1]+zpp[2,2])/(zpp[1,1]+zpp[2,1]+zpp[1,2]+zpp[2,2])
rbind_null_1 <- as.data.frame(rbind_null)
rbind_zpp <- rbind(rbind_zpp,rbind_null_1)
k <- k + 0.01
print(k)
}
i <- i + 14
print(i)
}
write.csv(rbind_zpp,"最优参数.csv")
setwd("F:\\8#机器学习\\第二步\\第一版1.0\\")
# 读取数据
set.seed(126)
user <- read.csv("完整版1.0_进模型_30.csv",stringsAsFactors = F)
# 查看数据
View(user[1:10,])
table(user$index_1)
summary(user)
str(user)
# 查看变量类型
sapply(user,class)
# 选择要的变量
user <- user[,c(6:57,59:64)]
# 将预测变量转化为因子
user$index_1 <- as.factor(user$index_1)
# 决策树可以对全数据做模型、也可手动分类做模型、缺失值和极值可以手动处理
# 举例 (此处不用)
user <- user[user$flag==1 | user$flag==2 | user$flag==3,]
user$flag <- NULL
##将数据分为训练集和测试集,比例为7:3
set.seed(123)
ind=sample(2, nrow(user), replace=TRUE, prob=c(0.7, 0.3))
user_train <- user[ind==1,]
user_test <- user[ind==2,]
# 检查训练和测试集中的亏损的比例情况
prop.table(table(user$index_1))
prop.table(table(user_train$index_1))
prop.table(table(user_test$index_1))
##################################训练模型###############################
# 安装包并且载入包
install.packages("C50")
library(C50)
# 构建模型
# model <- C5.0(train, class, trials = 1, costs = NULL)
# train: 一个包含训练数据的数据框
# class: 包含训练数据每一行的分类的一个因子向量
# trials: 为一个可选数值,用于控制自助法循环的次数(默认为1)
# costs: 为一个可选矩阵,用于给出与各种类型错误相对应的成本
# 该函数返回一个C5.0模型对象,该对象可用于预测
# 预测模型
# prediction <- predict(m, test, type = "class")
# m: 由C5.0(train, class, trials = 1, costs = NULL) 训练的一个模型
# test: 一个包含测试数据的数据框,该数据框和用来创建分类器的训练数据有相同的特征
# type: 取值为“”或者“”标示预测是最可能的类别值或者是原始的预测概率
# 该函数返回一个向量,根据参数type的取值,该向量含有预测的类别值或者原始的预测概率
# 实际操作
user_model <- C5.0(user_train[-53], user_train$index_1) # 准确率69.8 正确率 52%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##########################################################################################
######################################模型提升##############################################
##########################################################################################
##########################trials 循环#######################
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20) # 准确率71.9 正确率 55.9%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##########################minCases #######################
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20,
control= C5.0Control(minCases = 400)) # 准确率72.6 正确率 59.3%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##############几个参数调节#################
# 可调参数 CF 复杂度minCases每个叶节点上的最小样本数,trials:bosting次数
tc <- C5.0Control(subset = F,CF = 0.07,winnow = F,noGlobalPruning=F,minCases =488)
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20,
control= tc) # 准确率72.6 正确率 59.3%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
# 安装RWeka包 (出现问题的解决办法)
Sys.setenv(JAVA_HOME='E:\\java') # for 64-bit version
install.packages("rJava")
library(rJava)
install.packages("RWeka",dependencies = TRUE)
library(RWeka)
# OneR
kk <- user_train[,c(53,56:58)]
names(kk) <- c("index_1","a1","b1","c1")
mushroom_1R <- OneR(index_1 ~ ., data = kk)
mushroom_1R
summary(mushroom_1R)
# JRip
mushroom_JRip <- JRip(index_1 ~ ., data = kk)
mushroom_JRip
summary(mushroom_JRip)
# 根据前面的重要度从新选择变量
library(C50)
mushroom_c5rules <- C5.0(type ~ odor + gill_size, data = mushrooms, rules = TRUE)
summary(mushroom_c5rules)
#-----可以增加成本矩阵---------
error_cost <- matrix(c(0, 1, 2, 0), nrow = 2)
error_cost
# 建立模型
credit_cost <- C5.0(credit_train[-17], credit_train$default,
costs = error_cost)
# 成本矩阵中,预测正确的赋予0,将1预测为0的情况赋予成本2,将0预测为1的情况赋予成本1。
error_cost <- matrix(c(0, 1, 1.1, 0), nrow = 2)
# 简单画图
plot(user_cost,main="Whole Tree")
plot(user_boost20,subtree = 3,main="NO.3")
plot(user_cost,subtree = 13,main="NO.13")
########## 最优参数查找 ##############
rbind_zpp <- c()
rbind_null <- c()
i = 250
for (ll in 1:20){
# i =
k = 0.01
for(l in 1:20){
tc <- C5.0Control(subset = F,CF = k,winnow = F,noGlobalPruning=F,minCases = i)
user_boost20 <- C5.0(user_train[-53], user_train$index_1, trials = 20,
control = tc)
user_boost_pred20 <- predict(user_boost20, user_test)
zpp <- table(user_test$index_1,user_boost_pred20)
rbind_null$mincases <- i
rbind_null$CF <- k
rbind_null$zhunquelv <- zpp[2,1]/(zpp[1,1]+zpp[2,1])
rbind_null$zhengquelv <- (zpp[1,1]+zpp[2,2])/(zpp[1,1]+zpp[2,1]+zpp[1,2]+zpp[2,2])
rbind_null_1 <- as.data.frame(rbind_null)
rbind_zpp <- rbind(rbind_zpp,rbind_null_1)
k <- k + 0.01
print(k)
}
i <- i + 14
print(i)
}
write.csv(rbind_zpp,"最优参数.csv")
# 建立路径
setwd("F:\\8#机器学习\\第二步\\第一版1.0\\")
# 读取数据
set.seed(126)
user <- read.csv("完整版1.0_进模型_30.csv",stringsAsFactors = F)
# 查看数据
View(user[1:10,])
table(user$index_1)
summary(user)
str(user)
# 查看变量类型
sapply(user,class)
# 选择要的变量
user <- user[,c(6:57,59:64)]
# 将预测变量转化为因子
user$index_1 <- as.factor(user$index_1)
# 决策树可以对全数据做模型、也可手动分类做模型、缺失值和极值可以手动处理
# 举例 (此处不用)
user <- user[user$flag==1 | user$flag==2 | user$flag==3,]
user$flag <- NULL
##将数据分为训练集和测试集,比例为7:3
set.seed(123)
ind=sample(2, nrow(user), replace=TRUE, prob=c(0.7, 0.3))
user_train <- user[ind==1,]
user_test <- user[ind==2,]
# 检查训练和测试集中的亏损的比例情况
prop.table(table(user$index_1))
prop.table(table(user_train$index_1))
prop.table(table(user_test$index_1))
##################################训练模型###############################
# 安装包并且载入包
install.packages("C50")
library(C50)
# 构建模型
# model <- C5.0(train, class, trials = 1, costs = NULL)
# train: 一个包含训练数据的数据框
# class: 包含训练数据每一行的分类的一个因子向量
# trials: 为一个可选数值,用于控制自助法循环的次数(默认为1)
# costs: 为一个可选矩阵,用于给出与各种类型错误相对应的成本
# 该函数返回一个C5.0模型对象,该对象可用于预测
# 预测模型
# prediction <- predict(m, test, type = "class")
# m: 由C5.0(train, class, trials = 1, costs = NULL) 训练的一个模型
# test: 一个包含测试数据的数据框,该数据框和用来创建分类器的训练数据有相同的特征
# type: 取值为“”或者“”标示预测是最可能的类别值或者是原始的预测概率
# 该函数返回一个向量,根据参数type的取值,该向量含有预测的类别值或者原始的预测概率
# 实际操作
user_model <- C5.0(user_train[-53], user_train$index_1) # 准确率69.8 正确率 52%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
############################################################################################
######################################模型提升##############################################
############################################################################################
##########################trials 循环#######################
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20) # 准确率71.9 正确率 55.9%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##########################minCases #######################
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20,
control= C5.0Control(minCases = 400)) # 准确率72.6 正确率 59.3%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
##############几个参数调节#################
# 可调参数 CF 复杂度minCases每个叶节点上的最小样本数,trials:bosting次数
tc <- C5.0Control(subset = F,CF = 0.07,winnow = F,noGlobalPruning=F,minCases =488)
user_model <- C5.0(user_train[-53], user_train$index_1,trials=20,
control= tc) # 准确率72.6 正确率 59.3%
user_model
# summary函数查看树的详细信息
summary(user_model)
# 简单查看树模型 可查看分支树
plot(user_model,subtree = 3,main="NO.3")
#利用训练的模型对测试数据集进行预测,调用gmodel软件包评价模型预测准确性:
user_pred <- predict(user_model, user_test)
library(gmodels)
CrossTable(user_test$index_1, user_pred, prop.chisq = FALSE, prop.c = FALSE,
prop.r = FALSE, dnn = c("实际", "预测"))
# 安装RWeka包 (出现问题的解决办法)
Sys.setenv(JAVA_HOME='E:\\java') # for 64-bit version
install.packages("rJava")
library(rJava)
install.packages("RWeka",dependencies = TRUE)
library(RWeka)
# OneR
kk <- user_train[,c(53,56:58)]
names(kk) <- c("index_1","a1","b1","c1")
mushroom_1R <- OneR(index_1 ~ ., data = kk)
mushroom_1R
summary(mushroom_1R)
# JRip
mushroom_JRip <- JRip(index_1 ~ ., data = kk)
mushroom_JRip
summary(mushroom_JRip)
# 根据前面的重要度从新选择变量
library(C50)
mushroom_c5rules <- C5.0(type ~ odor + gill_size, data = mushrooms, rules = TRUE)
summary(mushroom_c5rules)
#-----可以增加成本矩阵---------
error_cost <- matrix(c(0, 1, 2, 0), nrow = 2)
error_cost
# 建立模型
credit_cost <- C5.0(credit_train[-17], credit_train$default,
costs = error_cost)
# 成本矩阵中,预测正确的赋予0,将1预测为0的情况赋予成本2,将0预测为1的情况赋予成本1。
error_cost <- matrix(c(0, 1, 1.1, 0), nrow = 2)
# 简单画图
plot(user_cost,main="Whole Tree")
plot(user_boost20,subtree = 3,main="NO.3")
plot(user_cost,subtree = 13,main="NO.13")
########## 最优参数查找 ##############
rbind_zpp <- c()
rbind_null <- c()
i = 250
for (ll in 1:20){
# i =
k = 0.01
for(l in 1:20){
tc <- C5.0Control(subset = F,CF = k,winnow = F,noGlobalPruning=F,minCases = i)
user_boost20 <- C5.0(user_train[-53], user_train$index_1, trials = 20,
control = tc)
user_boost_pred20 <- predict(user_boost20, user_test)
zpp <- table(user_test$index_1,user_boost_pred20)
rbind_null$mincases <- i
rbind_null$CF <- k
rbind_null$zhunquelv <- zpp[2,1]/(zpp[1,1]+zpp[2,1])
rbind_null$zhengquelv <- (zpp[1,1]+zpp[2,2])/(zpp[1,1]+zpp[2,1]+zpp[1,2]+zpp[2,2])
rbind_null_1 <- as.data.frame(rbind_null)
rbind_zpp <- rbind(rbind_zpp,rbind_null_1)
k <- k + 0.01
print(k)
}
i <- i + 14
print(i)
}
write.csv(rbind_zpp,"最优参数.csv")