【发布时间】:2017-11-26 13:31:14
【问题描述】:
我正在使用 Sebastian Raschka 撰写的“Python 机器学习”一书来学习机器学习。
我的问题是关于 scikit-learn 感知器类中的学习率 eta0。 以下代码是在那本书中使用 Perceptron 为 Iris 数据分类器实现的。
(……省略……)
from sklearn import datasets
from sklearn.linear_model import Perceptron
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
iris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
ml = Perceptron(eta0=0.1, n_iter=40, random_state=0)
ml.fit(X_train_std, y_train)
y_pred = ml.predict(X_test_std)
print('total test:%d, errors:%d' %(len(y_test), (y_test != y_pred).sum()))
print('accuracy: %.2f' %accuracy_score(y_test, y_pred))
我的问题如下。 结果(总测试、误差、准确度)不会因各种 eta0 值而改变。
“total test=45, errors=4, accuracy=0.91”的结果相同,eta0=0.1 和 eta0=100。 怎么了?
【问题讨论】:
-
如果您在感知器初始化中设置
verbose=1,您将收到日志消息,显示参数如何随着模型的训练而变化,这可能会帮助您解决问题
标签: python scikit-learn perceptron