Я слежу за курсом машинного обучения, который на момент публикации версии используемых библиотек были:
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
Кто-нибудь может мне помочь?