Я просмотрел значения прогноза для наборов тестовых данных разного размера из простого разделения теста поезда, и хотя возвращаемая метрика r2 в некоторых случаях выглядит низкой ( от 0,14 до 0,97) прогнозируемый возраст является разумным, учитывая стратификацию исходного набора данных (прогнозируемый возраст 15 лет по сравнению с реальным возрастом 10 лет не так уж и страшен для нужд использования этой модели).
Вот исходный код сборки модели:
Код: Выделить всё
#Using training and testing splits to check for model accuracy and overfitting
from sklearn.model_selection import cross_val_score, train_test_split
X_train, X_test, y_train, y_test = train_test_split(dftotal_ni, dfy_ni, test_size=0.12, random_state=42)
score = lm_ni.score(X_test, y_test)
print(score)
#это не так уж и плохо для необходимых целей
Код: Выделить всё
Yhat_test = lm_ni.predict(X_test)
#Plot the relationaship between the Actual and Predicted Ages
plt.scatter(Yhat_test, y_test)
plt.xlabel("Actual Age (years)")
plt.ylabel("Predicted Age")
plt.show()
Код: Выделить всё
from sklearn import datasets
from sklearn.metrics import r2_score as r2
from sklearn.metrics import root_mean_squared_error as rms
from sklearn.model_selection import KFold
from numpy import mean, std
from sklearn.preprocessing import MinMaxScaler
# Create new model for KFolds
lm_ni_val = LinearRegression()
scoring = 'r2'
# Evaluate the model of KFolds
scores = cross_val_score(
lm_ni_val, dftotal_ni, dfy_ni, scoring=scoring, cv=8, n_jobs=-1)
# Mean and standard deviation of accuracy
print('Accuracy: %.3f ,\nStandard Deviations :%.3f' %
(mean(scores), std(scores)))
Стандартные отклонения: 12227,956
#эти значения не имеют смысла в качестве r2, учитывая несколько итераций разделения теста поезда Я рассмотрел использование y_test и спрогнозировал y для различных разбивок индекса
Подробнее здесь: https://stackoverflow.com/questions/790 ... -val-score