【问题标题】:About scikit-learn Perceptron Learning Rate关于 scikit-learn 感知器学习率
【发布时间】: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


【解决方案1】:

我会尝试简要解释Perceptron中的学习率的立场,因此您了解为什么最终误差幅度与精度分数之间没有区别。

Perceptron的算法总是找到一个解决方案,只要我们已经定义了一个有限数量的时期(即迭代或步骤),无论是多大的 eta0 em>,因为这个常数只要乘以输出权重在配件期间。

其他实现中的学习率(如神经网络,基本上是其他一切*)是在达到最佳最小值的过程中乘以给定功能的部分导数的值。虽然更高的学习率为我们提供了更高的机会,但较低的较低学习率消耗更多的时间来收敛(以达到最佳点)。然而,理论很复杂,真的很好地描述了你应该阅读的学习率:

http://neuralnetworksanddeeplearning.com/chap3.html

好的,现在我还将显示Perceptron中的学习率仅用于重新归类。让我们考虑 x 作为我们的火车数据和 y 作为我们的火车标签。让我们尝试用两个不同的 eta0 em>拟合Perceptron,例如,1.0和100.0:

X = [[1,2,3], [4,5,6], [1,2,3]]
y = [1, 0, 1]
clf = Perceptron(eta0=1.0, n_iter=5)
clf.fit(X, y)
clf.coef_  # returns weights assigned to the input features

数组([[ - 5。,-1。,3。]])

clf = Perceptron(eta0=100.0, n_iter=5)
clf.fit(X, y)
clf.coef_

数组([[ - 500。,-100,300。]])

如您所见,Perceptron中的学习速率只能重新加强模型的权重(留下迹象),同时留下准确度分数和误差项常数。

希望足够了。 e。

【讨论】:

  • >我猜学习速率只有当您使用Perceptron时才才能使用权重乘数。每个其他模型都有不同的实现。如果我错了,请纠正我... span>
猜你喜欢
  • 2015-10-25
  • 2023-04-05
  • 2014-07-03
  • 2016-06-18
  • 1970-01-01
  • 2019-03-05
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多