Как получить одинаковые результаты в разных итерациях в RandomForest в sklearn - PullRequest
1 голос
/ 28 марта 2019

Я использую классификатор Random Forest для классификации, и на каждой итерации я получаю разные результаты.Мой код выглядит следующим образом.

input_file = 'sample.csv'

df1 = pd.read_csv(input_file)
df2 = pd.read_csv(input_file)
X=df1.drop(['lable'], axis=1)  # Features
y=df2['lable']  # Labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

clf=RandomForestClassifier(random_state = 42, class_weight="balanced")
clf.fit(X_train,y_train)
y_pred=clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

Как подсказывают другие ответы Я добавил параметр n_estimators и random_state.Однако, это не сработало для меня.

Я приложил файл CSV здесь :

Я с удовольствием предоставлю более подробную информацию, если это необходимо.

1 Ответ

1 голос
/ 28 марта 2019

Вам также нужно установить случайное состояние для разбиения поезда-теста.

Следующий код даст вам воспроизводимые результаты. Рекомендуемый подход - не изменять значение random_state для повышения производительности.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import  RandomForestClassifier
from sklearn import metrics

df1=pd.read_csv('sample.csv')

X=df1.drop(['lable'], axis=1)  # Features
y=df1['lable']  # Labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=5)

clf=RandomForestClassifier(random_state = 42, class_weight="balanced")
clf.fit(X_train,y_train)
y_pred=clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

Выход:

Точность: 0,6777777777777778

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...