Различные результаты с scikit-learn v21 и v22 - PullRequest
0 голосов
/ 05 мая 2020

Я слежу за курсом машинного обучения, который на момент публикации версии используемых библиотек были:

numpy 1.16.5

pandas 0.25.1

sys 3.7.4

sklearn 0.21.3

Мои версии вместо соответствующих библиотек:

numpy 1.18.1

pandas 1.0.1

sys 3.7.6

sklearn 0.22.1

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

Однако теперь, несмотря на использование того же кода и тех же данных, я получаю совершенно разные результаты.

Думаю, проблема может быть связана с разными версиями используемых библиотек. Возможно, в тех же используемых функциях есть параметры, которые принимают значения по умолчанию, которые не повлияли на результат в то время, как в текущей версии они создают проблемы.

Вот минимальная воспроизводимая версия моего кода:

import numpy as np
import pandas as pd
import sys
import sklearn


from sklearn.datasets import load_boston
boston_data = load_boston()
df = pd.DataFrame(boston_data.data, columns=boston_data.feature_names)

y = boston_data.target

df = pd.read_csv('data//housing.data', delim_whitespace=True, header=None)
df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX',           'PTRATIO', 'B', 'LSTAT', 'MEDV'   ]

from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

X = df.values

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

from sklearn.ensemble import RandomForestRegressor

forest = RandomForestRegressor(n_estimators=500, criterion='mse', random_state=42, n_jobs=-1)

forest.fit(X_train, y_train)

y_train_pred = forest.predict(X_train)
y_test_pred = forest.predict(X_test)

print('MSE train: {0:.4f}, test: {1:.4f}'.\
       format(mean_squared_error(y_train, y_train_pred),
       mean_squared_error(y_test, y_test_pred)))

print('R^2 train: {0:.4f}, test: {1:.4f}'.\
       format(r2_score(y_train, y_train_pred), 
       r2_score(y_test, y_test_pred)))

Я получил результаты

MSE train: 0.0090, test: 0.0227

R^2 train: 0.9999, test: 0.9997

В ходе ML результаты были:

MSE train: 1.8700, test: 9.3921

R^2 train: 0.9787,  test: 0.8740

Кто-нибудь может мне помочь?

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