-1

これは、このフォーラムで何度も答えられるかもしれない非常に古典的な質問ですが、これを最初から明確に説明する明確な答えは見つかりませんでした。 クロスバリデーションをランダムに作成する

target_variableまず

、私のデータセットと呼ばれるmy_dataが my_data =変数1、変数2、variable3はこのような4つの変数を持っているimgine、それでは、私の問題に来てみましょう。テストでそのモデルを使用し

# 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です。だから私はこの答えでそれを使用しています。

第2に、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-learnのドキュメントは私が今まで見た中で最高のものの一つです。

:以下のリンクは、あなたがそれらについての詳細を知って役立つこと
関連する問題