随便写的随机森林,骗了600+分,其实肉眼看了一下,这代码很辣鸡(导致预测结果也很辣鸡。。。
#-*-coding:utf-8-*-
import pandas as pd
import numpy as np
from numpy import *
from sklearn.ensemble import RandomForestRegressor
# 预测结果文件:src/step1/ground_truth/test_prediction.csv
def getPrediction():
#********* Begin *********#
train = pd.read_csv("src/step1/input/train.csv")
test = pd.read_csv("src/step1/input/test.csv")
test2 = test
# 随机版本
df = test[['ID']]
test2.insert(1, 'TARGET', 0)
known = train[['TARGET','imp_op_var39_comer_ult3','imp_op_var40_ult1',
'imp_op_var41_ult1','ind_var1_0','ind_var5','ind_var12_0','ind_var13_largo_0',
'ind_var14_0','ind_var18','ind_var24','ind_var25_0','ind_var27','ind_var31_0',
'ind_var33_0','ind_var37_0','ind_var41_0','ind_var46_0','num_var5_0','num_var8',
'num_var13_corto','num_var13','num_var18_0','num_var24','num_op_var40_hace2',
'num_op_var41_hace3','num_op_var39_ult1','num_var27','num_var31_0','num_var33','num_var37_0',
'num_var41_0','num_var44_0','saldo_var5','saldo_var13_largo','saldo_var18','saldo_var28',
'saldo_var32','saldo_var41','delta_imp_amort_var18_1y3','delta_imp_compra_var44_1y3',
'delta_imp_trasp_var17_out_1y3','delta_num_aport_var17_1y3','delta_num_reemb_var33_1y3',
'delta_num_venta_var44_1y3','imp_aport_var13_hace3','imp_aport_var33_ult1','imp_reemb_var13_hace3',
'imp_reemb_var33_ult1','imp_trasp_var17_out_hace3','imp_trasp_var33_out_ult1','ind_var10_ult1',
'ind_var43_recib_ult1','num_aport_var13_ult1','num_var7_emit_ult1','num_var22_hace2',
'num_med_var45_ult3','num_meses_var13_largo_ult3','num_meses_var39_vig_ult3',
'num_op_var40_comer_ult3','num_op_var41_efect_ult1','num_reemb_var13_ult1',
'num_sal_var16_ult1','num_trasp_var17_in_ult1','num_trasp_var33_out_hace3','num_var45_hace3',
'saldo_medio_var5_hace3','saldo_medio_var8_ult1','saldo_medio_var12_ult3','saldo_medio_var13_largo_hace2',
'saldo_medio_var13_medio_hace3','saldo_medio_var17_ult1','saldo_medio_var29_ult3','saldo_medio_var44_hace2'
]]
known2 = test2[['TARGET','imp_op_var39_comer_ult3','imp_op_var40_ult1',
'imp_op_var41_ult1','ind_var1_0','ind_var5','ind_var12_0','ind_var13_largo_0',
'ind_var14_0','ind_var18','ind_var24','ind_var25_0','ind_var27','ind_var31_0',
'ind_var33_0','ind_var37_0','ind_var41_0','ind_var46_0','num_var5_0','num_var8',
'num_var13_corto','num_var13','num_var18_0','num_var24','num_op_var40_hace2',
'num_op_var41_hace3','num_op_var39_ult1','num_var27','num_var31_0','num_var33','num_var37_0',
'num_var41_0','num_var44_0','saldo_var5','saldo_var13_largo','saldo_var18','saldo_var28',
'saldo_var32','saldo_var41','delta_imp_amort_var18_1y3','delta_imp_compra_var44_1y3',
'delta_imp_trasp_var17_out_1y3','delta_num_aport_var17_1y3','delta_num_reemb_var33_1y3',
'delta_num_venta_var44_1y3','imp_aport_var13_hace3','imp_aport_var33_ult1','imp_reemb_var13_hace3',
'imp_reemb_var33_ult1','imp_trasp_var17_out_hace3','imp_trasp_var33_out_ult1','ind_var10_ult1',
'ind_var43_recib_ult1','num_aport_var13_ult1','num_var7_emit_ult1','num_var22_hace2',
'num_med_var45_ult3','num_meses_var13_largo_ult3','num_meses_var39_vig_ult3',
'num_op_var40_comer_ult3','num_op_var41_efect_ult1','num_reemb_var13_ult1',
'num_sal_var16_ult1','num_trasp_var17_in_ult1','num_trasp_var33_out_hace3','num_var45_hace3',
'saldo_medio_var5_hace3','saldo_medio_var8_ult1','saldo_medio_var12_ult3','saldo_medio_var13_largo_hace2',
'saldo_medio_var13_medio_hace3','saldo_medio_var17_ult1','saldo_medio_var29_ult3','saldo_medio_var44_hace2'
]]
#return 0
known = known.values #把提取出来的内容单独放在一个known中
known2 = known2.values
X = known[:, 1:]#通过known推测出的为y
y = known[:, 0]
rfr = RandomForestRegressor(random_state=0, n_estimators=3500, n_jobs=-1)
rfr.fit(X, y) #从原先的内容建立起随机森林
predictedAges = rfr.predict(known2[:, 1:])#用已有的随机森林去预测
df.insert(1, 'TARGET', predictedAges)
df.to_csv("src/step1/ground_truth/test_prediction.csv", index=False)
#********* End *********#