scikit支持缩放[0,1]或[-1,1]之间的特征

use*_*386 3 python svm scikit-learn

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

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

x'=(x-min)/(Max-min)
Run Code Online (Sandbox Code Playgroud)

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

Fre*_*Foo 5

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

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

您可以使用Pipeline对象构建一个居中的缩放SVM分类器:

clf = Pipeline([('scale', Scaler()),
                ('svm', SVC())])
Run Code Online (Sandbox Code Playgroud)