Как 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-кратная перекрестная проверка сопровождается настройкой параметров; в таких случаях вам потребуется дополнительный этап проверки, который не зависит от настройки.

Другие вопросы по тегам