Scikit-Learn Cross Validation: Maximizing Your Machine Learning Potential
Scikit-learn (sklearn) предоставляет инструменты для кросс-валидации моделей машинного обучения. Кросс-валидация используется для оценки производительности модели на независимых данных и предотвращения переобучения. В sklearn можно использовать несколько методов кросс-валидации для различных задач.
Один из наиболее распространенных методов кросс-валидации - это k-fold кросс-валидация. Этот метод заключается в разделении данных на k равных частей (фолдов), и каждый фолд последовательно используется в качестве тестового набора данных, в то время как оставшиеся данные используются в качестве тренировочного набора. Процесс повторяется k раз, а затем результаты для каждого фолда агрегируются для получения итоговой производительности модели.
В sklearn этот метод кросс-валидации можно использовать с помощью функции cross_val_score. Например, для оценки точности метода опорных векторов можно использовать код:
from sklearn import svm, datasets
from sklearn.model_selection import cross_val_score
iris = datasets.load_iris()
X = iris.data
y = iris.target
clf = svm.SVC(kernel='linear', C=1, random_state=42)
scores = cross_val_score(clf, X, y, cv=5)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
Этот код загружает набор данных Iris, создает объект метода опорных векторов с линейным ядром, определяет количество фолдов равным пяти, и затем вызывает функцию cross_val_score. Функция вычисляет точность для каждого фолда и возвращает массив значений точности. Мы выводим среднее значение точности и стандартное отклонение для оценки разброса оценок точности в разных фолдах.
Кроме того, в sklearn есть и другие методы кросс-валидации, такие как StratifiedKFold и Leave-One-Out. StratifiedKFold используется для решения проблемы несбалансированных классов, а Leave-One-Out удаляет один образец из данных и использует оставшиеся данные для тестирования.