R机器学习期末设计笔记

用的是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))

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容