首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将标准化应用于scikit-learn中的支持向量机?

如何将标准化应用于scikit-learn中的支持向量机?
EN

Stack Overflow用户
提问于 2013-02-04 22:03:15
回答 2查看 21.6K关注 0票数 26

我使用的是scikit-learn的当前稳定版本0.13。我正在使用类sklearn.svm.LinearSVC将线性支持向量分类器应用于一些数据。

在scikit learn文档中的chapter about preprocessing中,我读到了以下内容:

在学习算法的目标函数中使用的许多元素(例如支持向量机的径向基函数核或线性模型的l1和l2正则化器)都假设所有特征都以零为中心,并且具有相同阶数的方差。如果一个特征的方差比其他特征大几个数量级,它可能会控制目标函数,并使估计器无法像预期的那样正确地从其他特征中学习。

问题1:通常对支持向量机是有用的标准化,也适用于像我这样具有线性核函数的支持向量机?

问题2:据我所知,我必须计算训练数据的平均值和标准差,并使用类sklearn.preprocessing.StandardScaler对测试数据应用相同的转换。然而,我不明白的是,在将训练数据提供给SVM分类器之前,我是需要对训练数据也进行转换,还是只对测试数据进行转换。

也就是说,我是否必须这样做:

scaler = StandardScaler()
scaler.fit(X_train)                # only compute mean and std here
X_test = scaler.transform(X_test)  # perform standardization by centering and scaling

clf = LinearSVC()
clf.fit(X_train, y_train)
clf.predict(X_test)

或者我必须这样做:

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)  # compute mean, std and transform training data as well
X_test = scaler.transform(X_test)  # same as above

clf = LinearSVC()
clf.fit(X_train, y_train)
clf.predict(X_test)

简而言之,我是否必须对训练数据使用scaler.fit(X_train)scaler.fit_transform(X_train)才能使用LinearSVC获得合理的结果

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14688391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档