pythonはランダム森林モデルで数値変数の欠落値を補充する
6272 ワード
データをモデリングする前に,欠落値を補完することは不可欠であるが,ここではランダム森林モデルを用いて欠落値を迅速に予測する方法を以下にまとめ,今後の作業を容易にする.
# data_df: DataFrame
# obj_column:
# missing_other_column:
##########
def fill_miss_byRandomForest(data_df , obj_column, missing_other_column ):
## missing_other_column
data_df = data_df.drop(missing_other_column , axis = 1)
#
known = data_df[data_df[obj_column].notnull()]
unknown = data_df[data_df[obj_column].isnull()]
# y
y_know = known[obj_column]
# X
X_know= known.drop(obj_column , axis = 1)
from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor(random_state=0, n_estimators=200,max_depth=3,n_jobs=-1)
rfr.fit(X_know,y_know)
#
# X
X_unknow= unknown.drop(obj_column , axis = 1)
predicted = rfr.predict(X_unknow).round(0)
data_df.loc[(data_df[obj_column].isnull()), obj_column] = predicted
return data_df
if __name__ == '__main__':
import pandas as pd
import numpy as np
data = pd.read_csv('data/cs-training.csv')
data.describe()
data.columns.tolist()
### fill_miss_byRandomForest , MonthlyIncome
data1_MonthlyIncome=fill_miss_byRandomForest(data , 'MonthlyIncome' , 'NumberOfDependents')# MonthlyIncome