-1

我知道這是一個非常經典的問題,可以在這個論壇中多次回答,但是我找不到任何明確的答案,從頭開始清楚地解釋這個問題。構建一個隨機森林迴歸器,從頭開始進行交叉驗證

首先,我的數據集名爲my_data有4個變量,如 my_data =變量1,變量2,variable3 imgine,target_variable

那麼,讓我們來我的問題。我會解釋我的所有步驟,並要求你對我一直停留在那裏幫助:

# STEP1 : split my_data into [predictors] and [targets] 

predictors = my_data[[ 
'variable1', 
'variable2', 
'variable3' 
]] 


targets = my_data.target_variable 

# STEP2 : import the required libraries 

from sklearn import cross_validation 
from sklearn.ensemble import RandomForestRegressor 

#STEP3 : define a simple Random Forest model attirbutes 

model = RandomForestClassifier(n_estimators=100) 


#STEP4 : Simple K-Fold cross validation. 3 folds. 

cv = cross_validation.KFold(len(my_data), n_folds=3, random_state=30) 

# STEP 5 

在這一步,我想基於訓練數據集,以適應我的模型,然後 使用的測試模型數據集並預測測試目標。我也想計算所需的統計數據,如MSE,R2等,以瞭解我的模型的性能。

如果有人幫助我提供Step5的一些基本代碼行,我將不勝感激。

感謝&問候,

Cagdas

回答

0

首先,你正在使用scikit庫的過時包cross-validation。新包名爲model_selection。所以我在這個答案中使用了它。

其次,您正在導入RandomForestRegressor,但在代碼中定義了RandomForestClassifier。我在這裏採取RandomForestRegressor,因爲你想要的度量(MSE,R2等)只是爲迴歸問題定義的,而不是分類。

有多種方法可以做你想做的。我假設,因爲您試圖在此處使用KFold交叉驗證,所以您希望使用每個摺疊的剩餘數據作爲測試摺疊。要做到這一點,我們可以這樣做:

predictors = my_data[[ 
'variable1', 
'variable2', 
'variable3' 
]] 


targets = my_data.target_variable 

from sklearn import model_selection 
from sklearn.ensemble import RandomForestRegressor 
from sklearn import metrics 

model = RandomForestClassifier(n_estimators=100) 

cv = model_selection.KFold(n_splits=3) 

for train_index, test_index in kf.split(X): 
    print("TRAIN:", train_index, "TEST:", test_index) 
    X_train, X_test = predictors[train_index], predictors[test_index] 
    y_train, y_test = targets[train_index], targets[test_index] 

    # For training, fit() is used 
    model.fit(X_train, y_train) 

    # Default metric is R2 for regression, which can be accessed by score() 
    model.score(X_test, y_test) 

    # For other metrics, we need the predictions of the model 
    y_pred = model.predict(X_test) 

    metrics.mean_squared_error(y_test, y_pred) 
    metrics.r2_score(y_test, y_pred) 

對於所有這些,文檔是您最好的朋友。 scikit學習文檔是我見過的最好的之一。以下鏈接可以幫助你瞭解他們更多: