R语言-向量机-员工离职预测训练赛
来源:互联网 发布:如何恢复ipad数据 编辑:程序博客网 时间:2024/05/17 09:21
题目:员工离职预测训练赛
网址:http://www.pkbigdata.com/common/cmpt/员工离职预测训练赛_竞赛信息.html
要求:
数据主要包括影响员工离职的各种因素(工资、出差、工作环境满意度、工作投入度、是否加班、是否升职、工资提升比例等)以及员工是否已经离职的对应记录。
数据分为训练数据和测试数据,分别保存在pfm_train.csv和pfm_test.csv两个文件中。
其中训练数据主要包括1100条记录,31个字段。
测试数据主要包括350条记录,30个字段,跟训练数据的不同是测试数据并不包括员工是否已经离职的记录,学员需要通过由训练数据所建立的模型以及所给的测试数据,得出测试数据相应的员工是否已经离职的预测。
数据:https://pan.baidu.com/s/1qXZOS8W 密码:bxgm
代码:
####################### 训练 #############################data <- read.csv("E:/.../pfm_train.csv", sep=",", header=TRUE)colnames(data)[1]<-c("Age") #首列列名乱码data[,2] <- as.factor(as.vector(data)[,2])library(e1071)#########线性支持向量机#########传递给函数svm()的关键参数是kernel、cost和gamma。Kernel指的是支持向量机的类型,它可能是线性SVM、多项式SVM、径向SVM或Sigmoid SVM。Cost是违反约束时的成本函数,gamma是除线性SVM外其余所有SVM都使用的一个参数。还有一个类型参数,用于指定该模型是用于回归、分类还是异常检测。但是这个参数不需要显式地设置,因为支持向量机会基于响应变量的类别自动检测这个参数,响应变量的类别可能是一个因子或一个连续变量。所以对于分类问题,一定要把你的响应变量作为一个因子。# linear SVMsvmfit <- svm(Attrition~.,data=data[,-c(8,18,23)], kernel = "linear", cost = 10, scale = FALSE) # linear svm, scaling turned OFFprint(svmfit)head(cbind(data$Attrition, predict(svmfit)),20)table (data$Attrition, predict(svmfit)) # tabulatemean(data$Attrition != predict(svmfit)) # 13.18% misclassification error#########径向支持向量机#########径向基函数作为一个受欢迎的内核函数,可以通过设置内核参数作为“radial”来使用。当使用一个带有“radial”的内核时,结果中的超平面就不需要是一个线性的了。通常定义一个弯曲的区域来界定类别之间的分隔,这也往往导致相同的训练数据,更高的准确度。# radial SVMsvmfit <- svm(Attrition~.,data=data[,-c(8,18,23)], kernel = "radial", cost = 10, scale = FALSE) # radial svm, scaling turned OFFprint(svmfit)head(cbind(data$Attrition, predict(svmfit,data)),20)table (data$Attrition, predict(svmfit,data)) # tabulatemean(data$Attrition != predict(svmfit,data)) # 0% misclassification error#########寻找最优参数#########你可以使用tune.svm()函数,来寻找svm()函数的最优参数### Tuning# Prepare training and test datatuned <- tune.svm(Attrition ~., data = data[,-c(8,18,23)], gamma = 10^(-6:-1), cost = 10^(1:3)) # tunesummary (tuned) # to select best gamma and cost#- best parameters:# gamma cost# 0.001 100#- best performance: 0.1238636 #- Detailed performance results:# gamma cost error dispersion#1 1e-06 10 0.1625000 0.03032670#2 1e-05 10 0.1625000 0.03032670#3 1e-04 10 0.1625000 0.03032670#4 1e-03 10 0.1625000 0.03032670#5 1e-02 10 0.1261364 0.02538161#6 1e-01 10 0.1477273 0.03258457#结果证明,当cost为100,gamma为0.001时产生最小的错误率。利用这些参数训练径向支持向量机。svmfit <- svm (Attrition~.,data=data[,-c(8,18,23)], kernel = "radial", cost = 100, gamma=0.001, scale = FALSE) # radial svm, scaling turned OFFprint(svmfit)head(cbind(data$Attrition, predict(svmfit,data)),20)table (data$Attrition, predict(svmfit,data)) # tabulatemean(data$Attrition != predict(svmfit,data)) # 0% misclassification error#结论:优化后的向量机分类成功率能达到100%####################### 预测 #############################data1 <- read.csv("E:/.../员工离职预测训练赛/数据/pfm_test.csv", sep=",", header=TRUE)colnames(data1)[1]<-c("Age") #首列列名乱码result <- predict(svmfit,data1 ,interval = "prediction", level = 0.95)table(result)result 0 1 314 36 file.path <- paste("E:/.../员工离职预测训练赛/out_svm.csv",sep="")write.table(result,file.path, col.names=T,row.names = F, quote = F, sep=",")实际比赛提交得分为0.79,成绩相当糟糕。
阅读全文
0 0
- R语言-向量机-员工离职预测训练赛
- R语言-决策树-员工离职预测训练赛
- R语言-逻辑回归+主成分分析-员工离职预测训练赛
- R语言基于支持向量机训练模型实现类预测
- R语言svm支持向量机多元回归预测
- 转:kaggle案例:员工离职预测 (附视频)
- R语言中使用支持向量机
- R语言支持向量机SVM
- R语言调整支持向量机
- R语言实践之支持向量机
- R语言基础-向量
- R语言基础:向量
- R语言字母向量
- R 语言向量详解
- R语言 向量
- R语言预测初步(R语言预测实战-节选)
- 预测海藻数量(R语言)
- R语言 决策树--预测模型
- linux下自由切换默然编译选择python2还是python3的方法
- Linux内核模块编程与内核模块LICENSE
- 软件测试
- 2017-09-11 LeetCode_022 Generate Parentheses
- 下列关于线程调度的叙述中,错误的是()。
- R语言-向量机-员工离职预测训练赛
- 视频播放代码
- KMP 算法(Knuth–Morris–Pratt algorithm)
- leetcode
- 打造究极复用的ListView Gridview适配器
- 6198 number number number
- hdu 6205 card card card(最大子段和)
- GDB调试基本命令
- 《NLP汉语自然语言处理原理与实践》第一章