Получать ошибки отдельных точек данных при использовании перекрестной проверки (scikit-learn) - PullRequest
0 голосов
/ 07 октября 2019

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

from sklearn import linear_model
from sklearn.model_selection import KFold, cross_val_score

X = #data points
y = #output

lm = linear_model.LinearRegression()

kfold = KFold(n_splits=10)

scores = cross_val_score(lm, X, y, scoring='neg_mean_squared_error', cv=kfold)
rmse_scores = [np.sqrt(abs(s)) for s in scores]
print('Testing RMSE (lin reg): {:.3f}'.format(np.mean(rmse_scores)))

Существует ли простой способ получить отдельные ошибки каждой из точек данных, когда они находятся в тестовом наборе (не ошибка обучения), используя перекрестную проверку с помощью scikit-learn? Спасибо!

1 Ответ

0 голосов
/ 08 октября 2019

Если я правильно понял ваш вопрос, это должно быть то, что вы ищете.

kf = KFold(n_splits=3)

error = []

for train_index, val_index in kf.split(X, y):
    Xtrain, X_val = X[train_index], X[val_index]
    ytrain, y_val = y[train_index], y[val_index]

    model.fit(Xtrain, ytrain)

    pred = model.predict(X_val)

    current_error = mean_squared_error(y_val, pred) # error per iteration

    error.append(current_error)

 print(np.mean(error)) # get mean error after CV
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...