2

我正在使用 scikit 类感知器提供的非常基本的线性分类器:

  clf = linear_model.Perceptron(n_iter=12)
  clf.fit(X,Y)

我有一个 X 数组,其中行是实例,列是二进制特征。我的班级有一个 Y 数组。我的数据分为三类。我有两个问题:1)感知器算法需要一个偏置项。scikit 感知器如何处理偏差?我应该在我的输入 X 数据中添加一个“偏差列”(全部)吗?或者 scikit 感知器函数是否会自动向具有特征的 X 数组(输入)添加偏差?还是单独处理偏差?2)如何找到我的感知器的训练误差?

4

2 回答 2

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 中减去,因为准确度给出了成功匹配的百分比(成功的衡量标准),而训练误差是错误的衡量标准。有许多类型的错误......准确性只是其中一种。

于 2014-10-15T06:18:42.440 回答
2
  1. 偏置项是自动学习的,可以在clf.intercept_您调用后找到fit(它是一个数组,每个类一个术语)。

  2. clf.score(X)给出 上的准确度X1 - clf.score(X)是零一损失(误差)。

于 2014-10-15T19:58:47.450 回答