187
правок
Изменения
Нет описания правки
F-мера является хорошим кандидатом на формальную метрику оценки качества классификатора. Она сводит к одному числу две других основополагающих метрики: точность и полноту. Имея в своем распоряжении подобный механизм оценки вам будет гораздо проще принять решение о том являются ли изменения в алгоритме в лучшую сторону или нет.
<font color="green"># код для для подсчета метрики F-mera:</font>
'''from sklearn.metrics import f1_score
'''f1_score(y_train, y_train_pred)
Но, конечно же, без минусов нельзя. Проблема MASE в том, что её тяжело интерпретировать. Например, MASE=1.21 ни о чём, по сути, не говорит. Это просто означает, что ошибка прогноза оказалась в 1.21 раза выше среднего абсолютного отклонения ряда в первых разностях, и ничего более.
== k-fold кросс-валидация ==
# Обучающая выборка разбивается на <tex> k </tex> непересекающихся одинаковых по объему частей;
# Производится <tex> k </tex> итераций. На каждой итерации происходит следующее:
## Модель обучается на <tex> k - 1 </tex> части обучающей выборки;
## Модель тестируется на части обучающей выборки, которая не участвовала в обучении.
Каждая из <tex>k</tex> частей единожды используется для тестирования.
Как правило, <tex>k = 10</tex> (5 в случае малого размера выборки).
[[Файл:K-fold-validation.png|500px]]
<tex>T^l = F_1 \cup \dots \cup F_k, |F_i| \approx \frac{l}{k},
\\ CV_k = \frac{1}{k} \sum_{i=1}^{k} Q(\mu(T^l \setminus F_i),F_i) \to min </tex>.
<font color="green"># Пример кода для k-fold кросс-валидация:</font>
'''from sklearn.model_selection import StratifiedKFold
'''from sklearn.base import clone
'''
'''skfolds = StratifiedKFold(n_splits=3, random_state=42)
'''for train_index, test_index in skfolds.split(X_train, y_train_5):
'''''
''''' clone_clf = clone(sgd_clf)
''''' X_train_folds = X_train[train_index]
''''' y_train_folds = y_train_5[train_index]
''''' X_test_fold = X_train[test_index]
''''' y_test_fold = y_train_5[test_index]
'''''
''''' clone_clf.fit(X_train_folds, y_train_folds)
''''' y_pred = clone_clf.predict(X_test_fold)
''''' n_correct = sum(y_pred == y_test_fold)
''''' print(n_correct / len(y_pred))
'''
'''from sklearn.model_selection import cross_val_score
'''cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring="accuracy")
array([0.96355, 0.93795, 0.95615])
== Источники информации ==