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