机器学习与R语言:C5.0
#----------------------------------------
# 功能描述:演示C50建模过程
# 数据集:汉堡大学信贷模型,信贷数据
#
#----------------------------------------
#第一步:收集数据
# import the CSV file
credit <- read.csv("/Users/chenyangang/R语言/data/credit.csv", stringsAsFactors = TRUE) # 检查数据
table(credit$checking_balance)
table(credit$savings_balance) # 五数分析法
summary(credit$months_loan_duration)
summary(credit$amount) # 查看分类变量
table(credit$default) # 利用随机数来获取训练数据和测试数据,如果需要重复这里的分析,可以使用随机种子set.seed
set.seed(12345)
credit_rand <- credit[order(runif(1000)), ] # 比较数据集
summary(credit$amount)
summary(credit_rand$amount)
head(credit$amount)
head(credit_rand$amount) # 分割数据集
credit_train <- credit_rand[1:900, ]
credit_test <- credit_rand[901:1000, ] # 查看分类变量的占比
prop.table(table(credit_train$default))
prop.table(table(credit_test$default)) ## 第三步: 训练模型 library(C50)
#---------------------------------------------
# 创建分类器:
# m <- C5.0(train, class, trials = 1, costs = NULL)
# train: 一个包含训练数据的数据框
# class: 包含训练数据每一行的分类的一个因子向量
# trials: 为一个可选数值,用于控制自助法循环的次数(默认为1)
# costs: 为一个可选矩阵,用于给出与各种类型错误相对应的成本
# 该函数返回一个C5.0模型对象,该对象可用于预测
#
# 进行预测:
# p <- predict(m, test, type = "class")
# m: 由C5.0(train, class, trials = 1, costs = NULL) 训练的一个模型
# test: 一个包含测试数据的数据框,该数据框和用来创建分类器的训练数据有相同的特征
# type: 取值为“”或者“”标示预测是最可能的类别值或者是原始的预测概率
# 该函数返回一个向量,根据参数type的取值,该向量含有预测的类别值或者原始的预测概率
#
# example:
# credit_model <- C5.0(credit_train, loan_default)
# credit_prediction <- predict(credit_model, credit_test)
#----------------------------------------------
# 构建决策数据模型
credit_model <- C5.0(credit_train[-17], credit_train$default) # 显示决策树模型
credit_model # 显示模型详细信息
summary(credit_model) ## 第四步: 评估模型性能
# create a factor vector of predictions on test data
credit_pred <- predict(credit_model, credit_test) # cross tabulation of predicted versus actual classes
library(gmodels)
CrossTable(credit_test$default, credit_pred,
prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
dnn = c('actual default', 'predicted default')) ## 第五步: 提升模型性能 ## Boosting the accuracy of decision trees
# boosted decision tree with 10 trials
credit_boost10 <- C5.0(credit_train[-17], credit_train$default,
trials = 10)
credit_boost10
summary(credit_boost10) credit_boost_pred10 <- predict(credit_boost10, credit_test)
CrossTable(credit_test$default, credit_boost_pred10,
prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
dnn = c('actual default', 'predicted default')) # boosted decision tree with 100 trials (not shown in text)
credit_boost100 <- C5.0(credit_train[-17], credit_train$default,
trials = 100)
credit_boost_pred100 <- predict(credit_boost100, credit_test)
CrossTable(credit_test$default, credit_boost_pred100,
prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
dnn = c('actual default', 'predicted default')) ## Making some mistakes more costly than others
# create a cost matrix
error_cost <- matrix(c(0, 1, 4, 0), nrow = 2)
error_cost # apply the cost matrix to the tree
credit_cost <- C5.0(credit_train[-17], credit_train$default,
costs = error_cost)
credit_cost_pred <- predict(credit_cost, credit_test) CrossTable(credit_test$default, credit_cost_pred,
prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
dnn = c('actual default', 'predicted default')) #### Part 2: Rule Learners ------------------- ## Example: Identifying Poisonous Mushrooms ----
## Step 2: Exploring and preparing the data ----
mushrooms <- read.csv("mushrooms.csv", stringsAsFactors = TRUE) # examine the structure of the data frame
str(mushrooms) # drop the veil_type feature
mushrooms$veil_type <- NULL # examine the class distribution
table(mushrooms$type) ## Step 3: Training a model on the data ----
library(RWeka) # train OneR() on the data
mushroom_1R <- OneR(type ~ ., data = mushrooms) ## Step 4: Evaluating model performance ----
mushroom_1R
summary(mushroom_1R) ## Step 5: Improving model performance ----
mushroom_JRip <- JRip(type ~ ., data = mushrooms)
mushroom_JRip
summary(mushroom_JRip) # Rule Learner Using C5.0 Decision Trees (not in text)
library(C50)
mushroom_c5rules <- C5.0(type ~ odor + gill_size, data = mushrooms, rules = TRUE)
summary(mushroom_c5rules)
机器学习与R语言:C5.0的更多相关文章
- 【机器学习与R语言】13- 如何提高模型的性能?
目录 1.调整模型参数来提高性能 1.1 创建简单的调整模型 2.2 定制调整参数 2.使用元学习来提高性能 2.1 集成学习(元学习)概述 2.2 bagging 2.3 boosting 2.4 ...
- 【机器学习与R语言】12- 如何评估模型的性能?
目录 1.评估分类方法的性能 1.1 混淆矩阵 1.2 其他评价指标 1)Kappa统计量 2)灵敏度与特异性 3)精确度与回溯精确度 4)F度量 1.3 性能权衡可视化(ROC曲线) 2.评估未来的 ...
- 【机器学习与R语言】5-规则学习算法
目录 1.分类规则原理 1.1 1R单规则算法 1.2 RIPPER算法 2. 规则学习应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估性能 5)提高性能 6)选择决策树中的分类规则 ...
- 【机器学习与R语言】4-决策树
目录 1.决策树原理 2.决策树应用示例 2.1)收集数据 2.2)探索和准备数据 2.3)训练模型 2.4)评估模型性能 2.5)提高模型性能 通过自适应增强算法(boosting) 将惩罚因子分配 ...
- 【机器学习与R语言】11- Kmeans聚类
目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...
- 【机器学习与R语言】10- 关联规则
目录 1.理解关联规则 1)基本认识 2)Apriori算法 2.关联规则应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解关联规则 1)基本认识 购物 ...
- 【机器学习与R语言】8- 神经网络
目录 1.理解神经网络 1)基本概念 2)激活函数 3)网络拓扑 4)训练算法 2.神经网络应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 1.理解神经网络 1) ...
- 【机器学习与R语言】6-线性回归
目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...
- 【机器学习与R语言】3-概率学习朴素贝叶斯(NB)
目录 1.理解朴素贝叶斯 1)基本概念 2)朴素贝叶斯算法 2.朴素贝斯分类应用 1)收集数据 2)探索和准备数据 3)训练模型 4)评估模型性能 5)提升模型性能 1.理解朴素贝叶斯 1)基本概念 ...
- 【机器学习与R语言】1-机器学习简介
目录 1.基本概念 2.选择机器学习算法 3.使用R进行机器学习 1.基本概念 机器学习:发明算法将数据转化为智能行为 数据挖掘 VS 机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务.后者 ...
随机推荐
- python练习题-3
author:headsen chen date: 2018-06-01 15:51:05 习题 31: 作出决定(if + raw_input) [root@localhost py]# cat ...
- ES6数组相关
ES6数组新增的几个方法: 1. forEach() //forEach()遍历数组,无返回值,不改变原数组 var arr=[1,2,3,4] arr.forEach((item,index,arr ...
- Python--比较两个字典部分value是否相等
# 比较两个字典部分是否相等def compare_two_dict(dict1, dict2, key_list): flag = True keys1 = dict1.keys() keys2 = ...
- oracle导入csv文件
oracle导入csv文件: 1.建好对应的表和字段: 2.新建test.ctl文件,用记事本编辑写入: load data infile 'e:\TB_KC_SERV.csv' --修改对应的文件路 ...
- Storm-源码分析- Disruptor在storm中的使用
Disruptor 2.0, (http://ifeve.com/disruptor-2-change/) Disruptor为了更便于使用, 在2.0做了比较大的调整, 比较突出的是更换了几乎所有的 ...
- 多线程入门-第七章-线程的同步Synchronized
/* 异步编程模型:两个线程执行自己的,互不影响. 同步编程模型:t1和t2执行,t2必须等t1执行结束之后才能执行. 为什么要线程同步? 1.为了数据的安全,尽管应用程序的使用率降低,但是为了保证数 ...
- MyBatis 工作流程及插件开发
1. MyBatis 框架分层架构 2. MyBatis 工作流程 获取 SqlSessionFactory 对象: 解析配置文件(全局映射,Sql映射文件)的每一个信息,并保存在Configurat ...
- 剑指Offer——平衡二叉树
题目描述: 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 分析: 平衡二叉树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质 ...
- oracle脚本执行多条语句报错
情况一: create table edu_group_parent ( group_id ) primary key not null, group_name ), group_url ), gro ...
- django组件之ContentType
ContentTyep组件: 帮助我们关联所有数据库的表 帮助我们反向查询关联数据表中的所有策略信息 GenericForeignkey(帮助我们快速插入数据) GenericRelation(用于反 ...