scikit-learn:将clf.prediction()添加到不同的数据帧



我已经训练了我的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])

相关内容

  • 没有找到相关文章