使用多类SVM在流水线中进行scikit-learn预处理

2024-09-27 00:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

关于机器学习的文献强烈建议对支持向量机(Preprocessing data in scikit-learn)的数据进行规范化处理。作为answered before,相同的StandardScalar应用于训练和测试数据。在

  1. 使用StandardScalar比手动减去平均值并除以标准差有什么好处(除了在管道中使用它的能力)?在
  2. scikit learn中的LinearSVC依赖于多个类的one-vs-the-rest(正如larsmans所提到的,SVC依赖于一个对多个类的一个)。那么,如果我有多个类使用一个管道进行训练,并将其作为第一个估计量,会发生什么情况呢?它还会计算每个类别的平均值和标准差,并在分类过程中使用它吗?在
  3. 更具体地说,在管道支持向量机阶段之前,下面的分类器是否对每个类应用不同的均值和标准差?在
estimators = [('normalize', StandardScaler()), ('svm', SVC(class_weight = 'auto'))]
clf = Pipeline(estimators)
# Training
clf.fit(X_train, y)
# Classification
clf.predict(X_test)

Tags: in机器data管道scikit向量learn文献
1条回答
网友
1楼 · 发布于 2024-09-27 00:20:38

StandardScaler执行的功能缩放没有引用目标类。{cd2>只考虑矩阵的特征。它计算所有样本中每个特征的平均值和标准差,而不考虑每个样本的目标类别。在

管道的每个组件都独立运行:只有数据在它们之间传递。让我们展开管道的clf.fit(X_train, y)。它大致执行以下操作:

X_train_scaled = clf.named_steps['normalize'].fit_transform(X_train, y)
clf.named_steps['svm'].fit(X_train_scaled, y)

第一个缩放步骤实际上忽略了它被传递的y,但是计算X_train中每个特征的平均值和标准差,并将它们存储在其mean_和{}属性中(即fit组件)。它还将X_train居中并返回它(即transform组件)。下一步学习一个支持向量机模型,并做什么是必要的一对一休息。在

现在是管道分类的视角。clf.predict(X_test)扩展为:

^{pr2}$

返回y_pred。在第一行中,它使用存储的mean_和{}使用从训练数据中学习的参数将转换应用到X_test。在

是的,缩放算法不是很复杂。它只减去平均值并除以标准值。但是StandardScalar

  • 提供算法的名称,以便将其从库中拉出
  • 避免你自己滚动,确保它正确工作,并且不要求你了解它在里面做什么
  • 记住来自fitfit_transform的参数,以便以后transform操作(如上所述)
  • 提供与其他数据转换相同的接口(因此可以在管道中使用)
  • 在稠密或稀疏矩阵上运算
  • 能够用它的inverse_transform方法反转转换

相关问题 更多 >

    热门问题