Как cross_val_score () следует использовать в Python? - PullRequest
0 голосов
/ 02 мая 2020

Я сравниваю точность, даваемую одним прогоном Перцептрона, с точностью, которую дает cross_val_score (), используя Перцептрон в качестве классификатора с набором данных радужной оболочки.

Я не уверен в этом вопросе:
За один раз 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)

One- пробный запуск с использованием 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 Ответ

0 голосов
/ 02 мая 2020

Обычно наиболее рекомендуемая практика - всегда оставлять часть данных для целей тестирования.

Хотя cross_val_score применяет применение перекрестной проверки в k раз, точнее 5-кратной перекрестной проверки по умолчанию, что означает, что на каждой итерации k-кратной модель предсказывает невидимые данные, модель была обучена в конце концов на всех существующих данных. Это особенно важно, когда к-кратная перекрестная проверка сопровождается настройкой параметров, в таких случаях вам необходим другой этап проверки, не зависящий от настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...