Как cross_val_score() следует использовать в Python?
Я сравниваю точность, полученную при однократном запуске Perceptron, с точностью, предоставляемой cross_val_score(), используя Perceptron в качестве классификатора с набором данных iris.
Я не уверен в этом вопросе:
в одном запуске Perceptron хочет в качестве параметров X_train_std и y_train для подгонки. Затем точность вычисляется с помощью X_test и y_test.
При использовании cross_val_score() я должен поставить X_train_std или весь X_std? (это уже упомянутый поезд + тест).
Код показан ниже:
Предварительная обработка:
from sklearn import datasets
import numpy as np
from sklearn.linear_model import Perceptron
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
iris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
print('Class labels:', np.unique(y))
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=1, stratify=y)
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
X_std = sc.transform(X)
Одноразовый запуск с использованием Perceptron:
#One-Shot
ppn = Perceptron(eta0=0.1, random_state=1).fit(X_train_std, y_train)
print('Accuracy test-set: %.3f' % ppn.score(X_test_std, y_test))
Выход:
Accuracy test-set: 0.978
Cross_val_score () запускается с использованием Perceptron:
#Cross-Validation
ppn = Perceptron(eta0=0.1, random_state=1)
scores = cross_val_score(ppn, X_std, y, cv=5)
print(scores)
Выход:
[1. 0.93333333 0.83333333 0.66666667 0.96666667]
Accuracy: 0.88 (+/- 0.24)
1 ответ
Обычно наиболее рекомендуемая практика - всегда оставлять часть данных для тестирования.
Пока cross_val_score
действительно применяет k-кратную перекрестную проверку, точнее, 5-кратную перекрестную проверку по умолчанию, что означает, что на каждой k-кратной итерации модель прогнозирует на невидимых данных, модель была обучена в конце концов на всех существующих данных. Это особенно важно, когда k-кратная перекрестная проверка сопровождается настройкой параметров; в таких случаях вам потребуется дополнительный этап проверки, который не зависит от настройки.