2016-01-20 38 views
0

我已經訓練了我的RandomForestClassifier(),現在正在尋找將我的預測添加到我新調用的df_test的新導入的測試DF中。scikit-learn:將clf.prediction()添加到不同的數據框

我已將我的特性列添加到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列表中,然後以某種方式將其轉換爲數據框......但這似乎有點雜亂。

回答

1

假設df_test[something]包含的功能,您可以將包含預測的新列寫

df_test['prediction']=clf.predict(df_test[something])