我已经训练了我的RandomForestClassifier(),现在希望将我的预测添加到我新导入的测试DF中,我称之为df_test。
我已将特征列添加到df_test数据帧中,以供 clf.predict 方法使用。
我无法弄清楚如何使用我的 clf.predict() 方法来向df_test添加新列。
在我的训练数据上:
clf = RandomForestClassifier()
clf.fit(df3[features], df['rounded_score'])
pd.crosstab(clf.predict(df3[features]), df3['rounded_score'])
准备好我的测试数据:
df_test = pd.read_csv("test.csv")
df_test['match_ratio'] = df.apply(lambda x: fuzz.ratio(x['search_term'], x['product_title']), axis=1)
df_test['partial_match_ratio'] = df.apply(lambda x: fuzz.partial_ratio(x['search_term'], x['product_title']), axis=1)
df_test['tsort_match_ratio'] = df.apply(lambda x: fuzz.token_sort_ratio(x['search_term'], x['product_title']), axis=1)
我已经尝试了大约十几次代码迭代,如下所示:
df_test['prediction'] = df_test[something].apply(lambda x: clf.predict(x))
但是预测方法一直告诉我它正在寻找一个 numpy 数组。因此,我尝试了以下方法,该方法有效:
mat = df_test[['match_ratio', 'partial_match_ratio', 'tsort_match_ratio']].as_matrix()
for x in mat[:10]:
print clf.predict(x)
但是我不知道如何将这些数据作为新列放入我的df_test数据帧中。我的最后一个考虑是将预测附加到常规的 python 列表中,然后以某种方式将其咀嚼到数据帧中......但这似乎有点混乱。
假设df_test[something]
包含特征,则可以附加一个包含预测写入的新列
df_test['prediction']=clf.predict(df_test[something])