机器学习中用随机森林(决策树)预测缺失值
训练集和测试集的划分
Ytrain:指的是缺失值那行所对应的有值的部分
Ytest:指的是缺失值,需要预测的部分(一般的监督学习不会预测Ytest,因为我们是预测该缺失的数据,所以Ytest不用做比较,直接进行预测填补缺失值)
Xtrain:指的是未缺失部分所对应的特征值
Xtest:指的是缺失部分所对应的特征值
处理缺失值的几种方法:
(1)使用可用特征的均值来填补缺失值;
(2)使用特殊值来填补缺失值;
(3)忽略有缺失值的样本;
(4)使用相似样本的均值填补缺失值;
(5)使用另外的机器学习算法预测缺失值;
决策树预测缺失值的方法(两种情况):
第一种情况:只预测一行缺失值
1.构建新的特征矩阵
2.划分训练集和测试集
3.用随机森林来预测
4.将预测的数值对原数据进行覆盖
1 def fill_missing_rf(x, y, to_fill): 2 df = x.copy() 3 fill = df.loc[:, to_fill] 4 df = pd.concat([df.loc[:, df.columns != to_fill], pd.DataFrame(y)], axis=1) 5 6 Ytrain = fill[fill.notnull()] 7 Ytest = fill[fill.isnull()] 8 Xtrain = df.iloc[Ytrain.index, :] 9 Xtest = df.iloc[Ytest.index, :] 10 11 rfr = RandomForestRegressor(n_estimators=100) 12 rfr = rfr.fit(Xtrain, Ytrain) 13 Ypre = rfr.predict(Xtest) 14 return Ypre
第二种情况:预测多列缺失值
1.找出多列缺失值,将缺失值按照数值由小到大进行排列。(因为预测的情形需要有少到多,准确率更高)
2.构建新的特征矩阵
3.划分训练集和测试集
4.用随机森林来预测
5.将预测的数值对原数据进行覆盖
本文来自博客园,作者:许个未来—,转载请注明原文链接:https://www.cnblogs.com/future-panda/p/16808717.html