美文网首页后浪 · 正青春
R机器学习期末设计笔记

R机器学习期末设计笔记

作者: 日之朝矣 | 来源:发表于2021-12-19 15:26 被阅读0次

用的是mlr

数据集

有条件的直接去kaggle找,各种数据应有尽有

用到的R包

mlr(机器学习用)
mlr3(机器学习用)
ggplot2(绘图用)
imbalance(只用过采样方法)

数据处理

-> 确定对象和数字的缺失值数目

-> 检查数据的numeric特征与character特征

-> 检查基数(checking Cardinality -> 唯一值的数量 ->日期列可以考虑分割日期列为年月日)

-> 处理缺失值

-> 对于character类型的特征

先画条形图看哪些列缺失值太多

如果列是由有限个character组成(如方向,种类,是或否),可以将特征值用重复次数最多character值填充

-> 对于numeric特征

画条形图确定缺失值太多的列

画箱型图查看异常值

移除异常值

用的是四分类点

# 这个是python的代码,看个思路就好
features_with_outliers = num_col_with_null_values
for feature in features_with_outliers:
 q1 = data[feature].quantile(0.25)
 q3 = data[feature].quantile(0.75)
 IQR = q3-q1
 lower_limit = q1 - (IQR*1.5)
 upper_limit = q3 + (IQR*1.5)
 data.loc[data[feature]<lower_limit, feature] = lower_limit
 data.loc[data[feature]>upper_limit, feature] = upper_limit

之后所有缺失值按平均值估算填充,但要注意,某些numeric类型的列不可用平均值填充,比如那种只有1和0的列

分类数据的平衡性

画条形图,看目标数据列分类是否平衡,若不平衡,可考虑进行平衡,用过采样进行平衡

如只有1和0的列,1却占了85%,这时就需要进行过采样平衡一下

数字编码

有些机器学习的方法要求列是numeric类型的,这时就需要转换为数字编码

机器学习部分

首先是分类和回归问题,分
类问题是指类别预测,见名知意,目标变量一般是种类,或者0/1
回归问题是指计算结果,比如价格预测,目标变量一般是数字

分割数据

只分训练集和测试集的话,7:3

创建任务

两种,一种是分类,一种是回归
分类
task <- makeClassifTask(data = data5[train.set,], target = "RainTomorrow")
回归
换成makeRegrTask ( )
参数
data是训练集,target是目标变量,也就是要预测的变量,y

创建学习器

learner <- makeLearner("classif.logreg")

第一个参数是使用的模型

分类用模型:
决策树(classif.rpart),逻辑回归(classif.logreg),朴素贝叶斯(classif.naiveBayes),线性判别分析模型(classif.lda),k近邻(classif.kknn),随机森林(classif. randomForest),神经网络(classif.nnet),支持向量机(classif. ksvm )

回归用模型:
线性回归(regr. lm),k近邻(regr. kknn),决策树(regr. rpart),随机森林(regr. randomForest),神经网络(regr.nnet),支持向量机(regr. ksvm )

超参数调优

先使用learner$par.set查看是否有能调优的参数
如果没有就略过了

# 超参数调优
learner$par.set
ps <- makeParamSet(makeDiscreteParam("maxdepth",values = 2:6),makeDiscreteParam("cp",values = c(0.01,0.02,0.05)))
ctrl <- makeTuneControlGrid()
rdesc = makeResampleDesc("CV",iters = 3)
# 执行超参数调优
res = tuneParams(learner, task, resampling = rdesc, par.set = ps,control = ctrl, measures = acc)

每一个makeDiscreteParam()里放一个要调优的参数和要调优的值范围,要调优的参数也是从learner$par.set里找到

创建超参数调优后的学习器

得出最终结果后重新创建学习器

# 训练模型
learner <- makeLearner("classif.rpart",par.vals = list(maxdepth=6,cp=0.01),predict.type = "prob")

par.vals中放调优超参数的结果

训练模型

mod <- train(learner,task)

模型评估

pred <- predict(mod,newdata = data5[test.set,])
performance(pred,measures = list(acc,auc,f1))

相关文章

网友评论

    本文标题:R机器学习期末设计笔记

    本文链接:https://www.haomeiwen.com/subject/wocofrtx.html