Python + Scikit-learn: как построить кривые оценки тренировки и оценки по сравнению с аддитивным параметром сглаживания альфа - PullRequest
0 голосов
/ 09 октября 2018

Я использую перекрестную проверку в k-кратном размере для вычисления оптимального значения параметра Аддитивное сглаживание альфа.Кроме того, я хочу построить кривые точности обучения и точности проверки относительно значений альфа.Я написал код для этого:

alphas = list(np.arange(0.0001, 1.5000, 0.0001))

#empty lists that stores cv scores and training_scores
cv_scores = []
training_scores = []

#perform k fold cross validation
for alpha in alphas:
    naive_bayes = MultinomialNB(alpha=alpha)
    scores = cross_val_score(naive_bayes, x_train_counts, y_train, cv=20, scoring='accuracy')
    scores_training = naive_bayes.fit(x_train_counts, y_train).score(x_train_counts, y_train)

    cv_scores.append(scores.mean())
    training_scores.append(scores_training)

#plot cross-validated score, training score vs alpha 

plt.plot(alphas, cv_scores, 'r')
plt.plot(alphas, training_scores, 'b')
plt.xlabel('alpha')
plt.ylabel('score')

Это правильный способ реализовать это?

1 Ответ

0 голосов
/ 09 октября 2018

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

parameters = {'alpha':[0.0001, 1.5000, 0.0001]}
classifier = GridSearchCV(MultinomialNB(), parameters, cv=20)
clf.fit(x_train, y_train)

print('Mean train set score: {}'.format(clf.cv_results_['mean_train_score']))
...