赞
踩
这里难度不是很大,可以参考XGBRegressor使用。我这里将预测的数据保存到文件中,方便之后的操作,不用每次操作都训练一次。
import pandas as pd from xgboost import XGBClassifier#做分类问题 from xgboost import XGBRegressor#做回归问题 df = pd.read_csv("/Users/apple/PycharmProjects/K-means/Datawhale/Result3.csv") Y = df['isDefault']#标签 df.drop(['isDefault'],axis=1,inplace=True)#删除isDefault列 X= df#属性 seed = 7 test_size = 0.33 X_train=X Y_train=Y df2=pd.read_csv("/Users/apple/PycharmProjects/K-means/Datawhale/TESTResult3.csv") X_predict=df2#预测数据(处理过只剩属性) df3=pd.read_csv("/Users/apple/PycharmProjects/K-means/Datawhale/TESTResult2.csv") id_number=df3['id']#获得预测数据的ID号,由于预测数据已经被处理,因此记录下可预测数据的ID号,为之后将剩下的ID号赋予平均值 xgb = XGBRegressor(n_estimators=500, learning_rate=0.05, min_child_weight=5, max_depth=4) xgb.fit(X_train,Y_train) y_predict=xgb.predict(X_predict) afterpredcit=pd.DataFrame({ 'id': id_number, 'isDefault': y_predict }) print(y_predict) afterpredcit.to_csv('./PredictResult.csv',index=False)#保存时去索引 否则会多加第一列
df=pd.read_csv("/Users/apple/PycharmProjects/K-means/Datawhale/PredictResult.csv") id_number=round(df['isDefault'],1)#将预测结果变换为规定形式:一位小数 j=len(id_number) #################处理数据中可能含有的负数和-0.O for i in range(j): if id_number[i]<=0: id_number[i]=0 df['isDefault']=id_number #################获得预测数据的均值 mean_number=id_number.mean() mean_number=round(mean_number,1) print(mean_number) #i=800000 i=800000# while i <1000000: j=i-800000 print(i) #################将之前步骤中直接删除缺省项的值变为预测平均值 if df['id'][j]!=i: df2 = df.loc[j:] df3=pd.DataFrame({ 'id' : i, 'isDefault' : mean_number },pd.Index(range(1))) df=(df.loc[:j-1]).append(df3, ignore_index=True).append(df2, ignore_index=True) i=i+1 df.to_csv('./PredictResult2.csv',index=False)#保存时去索引 否则会多加第一列
第一次提交的时候简单的将缺省值赋值了0,之后想了下有点蠢将预测值赋值平均值,提升效果还是很明显的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。