2017-01-10 247 views
2

我對在測試數據集中使用cross cross_val_predict感到困惑。對測試數據集使用cross_val_predict

我創建了一個簡單的隨機森林模型,並用於cross_val_predict作出預測

from sklearn.ensemble import RandomForestClassifier 
from sklearn.cross_validation import cross_val_predict, KFold 

lr = RandomForestClassifier(random_state=1, class_weight="balanced", n_estimators=25, max_depth=6) 
kf = KFold(train_df.shape[0], random_state=1) 
predictions = cross_val_predict(lr,train_df[features_columns], train_df["target"], cv=kf) 
predictions = pd.Series(predictions) 

我在這裏的下一步困惑,如何使用上面學會了對測試數據的預測設定?

+0

你必須首先「模擬」你的模型,然後你可以調用它的「預測」。 –

回答

2

由於@DmitryPolonskiy評論說,該模型必須經過培訓(使用fit方法)才能用於predict

# Train the model (a.k.a. `fit` training data to it). 
lr.fit(train_df[features_columns], train_df["target"]) 
# Use the model to make predictions based on testing data. 
y_pred = lr.predict(test_df[feature_columns]) 
# Compare the predicted y values to actual y values. 
accuracy = (y_pred == test_df["target"]).mean() 

cross_val_predict是交叉驗證,它可以讓你確定你的模型的精確度的方法。看看sklearn's cross-validation page

1

我不認爲cross_val_scorecross_val_predict在預測之前使用擬合。它在飛行中完成。如果你看看documentation (section 3.1.1.1),你會發現他們從來沒有在任何地方提及過。