SCIkit 支持在 [0,1] 或 [-1,1] 之间缩放功能



scikit-learn的SVM基于LIBSVM。LIBSVM/SVM 要求对数据进行缩放,建议特征值应位于两个范围 [0, 1] 或 [-1, 1] 之一。也就是说,在典型的矩阵中,每列都是一个特征,缩放是按列完成的。

LIBSVM FAQ 建议进行简单的缩放,以获取 [0, 1] 之间的功能:

x'=(x-min)/(Max-min)

scikit-learn是否支持这种"简单缩放"?对于扩展要与 SVM 和 RBF 内核一起使用的功能,是否有其他建议?有什么参考资料吗?我找到了一篇基于 LIBSVM 的参考文章,名为"支持向量分类的实用指南",他们建议缩放到 [0, 1] 或 [-1, 1]。

是的,包含此功能。您描述的确切公式将在下一个版本中显示为 sklearn.preprocessing.MinMaxScaler .目前,sklearn.preprocessing.Scaler(将在下一个版本中重命名为StandardScaler,但旧名称将保留以向后兼容)将特征居中并缩放为均值 0 和方差 1,这应该足以将数据传递给 SVM 学习器。

此外,sklearn.preprocessing.Normalizer(以及用于文本分类的TfidfVectorizer)将每个样本的值规范化为范围 [0, 1]。这相当于文本分类和信息检索中常见的长度规范化。

您可以使用 Pipeline 对象来构造居中、缩放的 SVM 分类器:

clf = Pipeline([('scale', Scaler()),
                ('svm', SVC())])
我认为

您正在寻找标准缩放器,至少对于 [-1,1] 情况。

相关内容

  • 没有找到相关文章

最新更新