# 用隨機(jī)森林對缺失值預(yù)測填充函數(shù)
def set_missing(df):
? ? # 把已有的數(shù)值型特征取出來
? ? process_df = df.ix[:,[變量]]
? ? # 分成已知該特征和未知該特征兩部分
? ? known = process_df[process_df.變量.notnull()].as_matrix()
? ? unknown = process_df[process_df.變量.isnull()].as_matrix()
? ? # X為特征屬性值
? ? X = known[:, 1:]
? ? # y為結(jié)果標(biāo)簽值
? ? y = known[:, 0]
? ? # fit到RandomForestRegressor之中
? ? rfr = RandomForestRegressor(random_state=0, n_estimators=200,max_depth=3,n_jobs=-1)
? ? rfr.fit(X,y)
? ? # 用得到的模型進(jìn)行未知特征值預(yù)測
? ? predicted = rfr.predict(unknown[:, 1:]).round(0)
? ? print(predicted)
? ? # 用得到的預(yù)測結(jié)果填補(bǔ)原缺失數(shù)據(jù)
? ? df.loc[(df.變量.isnull()), '變量'] = predicted
? ? return df