RandomForestClassifier в Colab - PullRequest
       15

RandomForestClassifier в Colab

4 голосов
/ 21 марта 2020

У меня есть следующий код в ячейке colab:

import sklearn.datasets
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import metrics #Import scikit-learn metrics module for accuracy calculation
import sklearn
from sklearn.ensemble import RandomForestClassifier

#Create a Gaussian Classifier
rfc=RandomForestClassifier(n_estimators=5, max_depth=3)
iris_sklearn_ds=sklearn.datasets.load_iris()
X_ndarray = iris_sklearn_ds.data
y_ndarray = iris_sklearn_ds.target.astype(np.int32)
X_ndarray_train,X_ndarray_test,y_ndarray_train,y_ndarray_test = train_test_split(X_ndarray,
                                                 y_ndarray,
                                                 test_size=0.30,
                                                 random_state=42)

#Train the model using the training sets y_pred=clf.predict(X_test)
rfc.fit(X_ndarray_train,y_ndarray_train)
y_pred=rfc.predict(X_ndarray_test)
print("Accuracy RFC:",metrics.accuracy_score(y_ndarray_test, y_pred))
print(metrics.confusion_matrix(y_ndarray_test, y_pred))

Когда я выполняю ячейку в первый раз, она дает:

Accuracy RFC: 0.9333333333333333
[[16  0  0]
 [ 0 14  0]
 [ 0  3 12]]

Хорошо, почему бы не .. Но когда я выполняю это во второй раз, у меня есть:

Accuracy RFC: 1.0
[[16  0  0]
 [ 0 14  0]
 [ 0  0 15]]

Кто-нибудь может сказать мне, почему? Есть ли кеш или что-то? Нужно ли что-то сбрасывать?

1 Ответ

2 голосов
/ 21 марта 2020

Вам нужно добавить параметр random_state при вызове RandomForestClassifier(), как вы это сделали для train_test_split(), потому что этот классификатор основывает часть своей операции на случайности, и случайность имеет различный результат при каждом выполнении.

...