Я сравниваю точность, даваемую одним прогоном Перцептрона, с точностью, которую дает 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)