我正在使用scikit类Perceptron提供的非常基本的线性分类器:
clf = linear_model.Perceptron(n_iter=12)
clf.fit(X,Y)
我有一个X数组,其中行是实例,列是二进制功能。我的班级有一个Y数组。我的数据有三个类。 我有两个问题: 1)感知器算法需要偏置项。 scikit perceptron如何处理偏见?我应该添加一个"偏向列" (所有的)我的输入X数据?或者scikit perceptron功能是否会自动添加带有特征的X阵列(输入)的偏差?还是分开处理偏见? 2)如何找到感知器的训练错误?
答案 0 :(得分:2)
1)偏差将自动处理。如果您不确定,请尝试使用2个版本的数据进行培训...原始数据和缩放版本(sklearn中的标准缩放器)。
2)
clf = linear_model.Perceptron(n_iter=12)
clf.fit(X, Y)
training_results = clf.predict(X)
training_error = 1 - metrics.accuracy_score(training_results, Y) #or pick your metric from metrics module.
如您所见,如果您在使用训练过的数据进行预测时计算错误,则会出现训练错误。 “测试错误”是指您在数据上预测模型尚未“看到”的情况。 我从1中减去,因为准确度给出了成功匹配的百分比(衡量成功的程度),而训练误差则是误差的度量。有许多类型的错误...准确性只是一个。
答案 1 :(得分:2)
偏差项是自动学习的,可以在调用clf.intercept_
之后在fit
中找到(这是一个每个类有一个术语的数组)。
clf.score(X)
给出了X
的准确性。 1 - clf.score(X)
是零丢失(错误)。