机器学习中用随机森林(决策树)预测缺失值

训练集和测试集的划分

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.将预测的数值对原数据进行覆盖

 

posted @ 2022-10-20 09:55  许个未来—  阅读(384)  评论(0编辑  收藏  举报