####5.1 机器学习概述
#1.准备并读入数据
#2.数据预处理
#3.模型训练
#4.模型预测及评价
##### 5.1 机器学习概述 #####
### 载入数据和相应包 ###
# 清空工作目录
rm(list = ls())
# 加载机器学习包
# install.packages(caret) #caret包是为了解决预测问题的综合机器学习工具包
library(caret)
# 加载数据
dat0 = read.csv('相亲数据.csv', fileEncoding = "UTF-8")
head(dat0)
### 1.数据预处理及数据分割 ###
## (1) 缺失值处理 ##
nrow(dat0)
dat = na.omit(dat0)
nrow(dat)
## (2) 将定性变量转换为因子性变量 ##
# 转换数据类型
dat$决定 = factor(dat$决定, levels = c(0, 1), labels = c("拒绝", "接收"))
dat$性别 = factor(dat$性别, levels = c(0, 1), labels = c("女", "男"))
dat$种族 = factor(dat$种族, levels = c(1, 2, 3, 4, 5, 6), labels = c("非洲裔", "欧洲裔", "拉丁裔", "亚裔", "印第安土著", "其他"))
dat$从事领域 = factor(dat$从事领域, levels = 1:18, 
                  labels = c("法律", "数学", "社会科学或心理学",
                             "医学或药物学或生物技术", "工程学", "写作或新闻",
                             "历史或宗教或哲学", "商业或经济或金融", "教育或学术",
                             "生物科学或化学或物理", "社会工作", "大学在读或未择方向",
                             "政治学或国际事务", "电影", "艺术管理",
                             "语言", "建筑学", "其他"))
dat$对方决定 = factor(dat$对方决定, levels = c(0, 1), labels = c("拒绝", "接收"))
dat$对方种族 = factor(dat$对方种族, levels = c(1, 2, 3, 4, 5,6), labels = c("非洲裔", "欧洲裔", "拉丁裔", "亚裔", "印第安土著", "其他"))
dat$是否同一种族 = factor(dat$是否同一种族, levels = c(0, 1), labels = c("非同一种族", "同一种族"))
## (3) 数据划分为训练集和测试集 ##
# 设置随机种子
set.seed(1234)
# 将数据集的80%划分为训练集,20%划分为测试集
trainIndex = createDataPartition(dat$决定, p = .8, 
                                 list = FALSE, 
                                 times = 1)
createDataPartition()
# createDataPartition会自动从y的各个level随机取出等比例的数据来,组成训练集,可理解为分层抽样;
datTrain = dat[trainIndex, ]
# 训练集
datTest = dat[-trainIndex, ]
# 测试集
table(dat$决定) / nrow(dat)  # 全集上因变量各个水平的比例
##  
##      拒绝     接收 
##  0.560021 0.439979
table(datTrain$决定) / nrow(datTrain)  # 训练集上因变量各个水平的比例
##  
##       拒绝      接收 
##  0.5599476 0.4400524
table(datTest$决定) / nrow(datTest)  # 测试集上因变量各个水平的比例
##  
##       拒绝      接收 
##  0.5603147 0.4396853
## (4) 标准化处理 ##
preProcValues = preProcess(datTrain, method = c("center", "scale"))
trainTransformed = predict(preProcValues, datTrain)
testTransformed = predict(preProcValues, datTest)
# 利用训练集的均值和方差对测试集进行标准化
### 2.变量选择 ###
rfe()#特征选择中的封装法
## 封装法 rfe: Recursive feature selection ##
subsets = c(2, 5, 10, 15, 20)
rfecontrol()#用于输入目标函数和抽样方法
# 要选择的变量个数
ctrl = rfeControl(functions = rfFuncs, method = "cv")
# 首先定义控制参数,functions是确定用什么样的模型进行自变量排序,本例选择的模型是随机森林
# 根据目标函数(通常是预测效果评分),每次选择若干特征。
# method是确定用什么样的抽样方法,本例使用cv,即交叉检验
x = trainTransformed [, -which( colnames(trainTransformed ) %in% "决定")]
y = trainTransformed [, "决定"]
Profile = rfe(x, y, sizes = subsets, rfeControl = ctrl)
Profile$optVariables  # 筛选出15个变量
### 3.模型训练及调参 ###
dat.train = trainTransformed[, c(Profile$optVariables, "决定")]
dat.test = testTransformed[, c(Profile$optVariables, "决定")]
## 随机森林 ##
set.seed(1234)
gbmFit1 = train(决定 ~., data = dat.train, method = "rf")
# 用于训练模型
importance = varImp(gbmFit1, scale = FALSE)
# 得到各个变量的重要性
plot(importance, xlab = "重要性")
### 4.模型预测及评价 ###
data.predict = predict(gbmFit1, newdata = dat.test)
confusionMatrix(data.predict, dat.test$决定)

R语言-机器学习概述相关推荐

  1. R语言机器学习与大数据可视化暨Python文本挖掘与自然语言处理核心技术研修

    中国通信工业协会通信和信息技术创新人才培养工程项目办公室 通人办[2017] 第45号 "R语言机器学习与大数据可视化"暨"Python文本挖掘与自然语言处理" ...

  2. “R语言机器学习与大数据可视化”暨“Python文本挖掘与自然语言处理”核心技术高级研修班的通知

    中国通信工业协会通信和信息技术创新人才培养工程项目办公室 通人办[2017] 第45号 "R语言机器学习与大数据可视化"暨"Python文本挖掘与自然语言处理" ...

  3. R语言机器学习Caret包(Caret包是分类和回归训练的简称)、数据划分、数据预处理、模型构建、模型调优、模型评估、多模型对比、模型预测推理

    R语言机器学习Caret包(Caret包是分类和回归训练的简称).数据划分.数据预处理.模型构建.模型调优.模型评估.多模型对比.模型预测推理 目录

  4. R 回归 虚拟变量na_工具amp;方法 | R语言机器学习包大全(共45个包)

    机器学习,是一门多学科交叉的人工智能领域的分析技术,它使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测. 目前,常见机器学习的研究方向主要包括决策树.随机森林.神经网络.贝叶斯学习和支 ...

  5. 《R语言机器学习:实用案例分析》——1.2节R的数据结构

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.2节R的数据结构,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sark ...

  6. 《R语言机器学习:实用案例分析》——1.3节使用函数

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.3节使用函数,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sarkar ...

  7. 《R语言机器学习:实用案例分析》——1.8节总结

    本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.8节总结,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sarkar), ...

  8. R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错

    笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢? 交叉验证将数据分为训练数据集.测试数据集,然后通过训练数据集进行训练,通过测试数据集进行测试,验证集进行验证. 模 ...

  9. R语言机器学习之caret包详解(一)

    R语言机器学习caret包trainControl函数详解 R语言机器学习之caret包详解(一) 简介 数据预处理 各种数据变换 近零方差变量 创建虚拟变量 重抽样技术 k折交叉验证 留一交叉验证 ...

最新文章

  1. Java遍历对象所有属性
  2. AndroidMainifest标签说明2——lt;activitygt;
  3. Spring Boot实战系列《六》:人事管理系统的登录设计
  4. 静态html搜索,如何为网站增加相关性较强的静态搜索页?
  5. 牛客小白9 换个角度思考(离线+树状数组)
  6. 杀java_java怎么杀掉java进程
  7. 基于实时计算Flink的机器学习算法平台及场景介绍
  8. Atitit.vod 视频播放系统 影吧系统的架构图 架构体系 解决方案
  9. CSS图片裁剪Clip
  10. 54 计算机与信息科学类,计算机与信息科学类专业包括哪些
  11. 技嘉 b360m d3h-cf efi_技嘉Geforce RTX 3080 GAMING OC 10G评测:性能入魔,方为魔鹰_显卡...
  12. BZOJ【1609】 麻烦的聚餐
  13. 数据结构C++版-栈
  14. 【金万维】天联高级版客户端打开U8报错:未监听端口
  15. 程序员日报周报月报 模板
  16. 泊松分布在计算机中的应用,泊松分布在管理中应用.ppt
  17. 量子计算(六):量子计算软件介绍
  18. 指纹识别技术的基本原理及过程
  19. 爬虫千万条,守法第一条,爬虫不规范,亲人两行泪
  20. Pinbox 使用快捷键打开网页

热门文章

  1. 关系网络数据可视化:1. 关系网络图Gephi
  2. Day19JavaWeb【旅游项目】封装与设计***
  3. html表格不随字数变化,设置table中的宽度不随文字改变让其固定
  4. RBA验厂咨询,RBA认证6.0有哪三个章节名称调整及行为准则改变要点说明
  5. l05173芯片针脚图_L05173TR
  6. Python - 深度学习系列13- 显卡与CPU计算对比
  7. IC China CEF两展联动,半导体产业大国崛起酝酿电子产业升级大幕
  8. spring启动后自动执行一次方法
  9. Region相关算子
  10. 格局是什么意思「简单易懂」