当前位置: 首页 > 面试题库 >

如何在scikit-learn中将标准化应用于SVM?

熊烨
2023-03-14
问题内容

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

在scikit-learn文档中有关预处理的章节中,我阅读了以下内容:

学习算法的目标函数中使用的许多元素(例如,支持向量机的RBF内核或线性模型的l1和l2正则化器)都假定所有特征都围绕零为中心并且具有相同顺序的方差。如果某个特征的方差比其他特征大几个数量级,则它可能会支配目标函数,并使估计器无法按预期从其他特征中正确学习。

问题1: 标准化对于SVM总体上是否有用,对于像我一样具有线性内核功能的SVM也有用吗?

问题2:
据我所知,我必须计算训练数据的均值和标准差,并使用class将相同的变换应用于测试数据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


问题答案:

都不行

scaler.transform(X_train)没有任何作用。该transform操作不到位。你所要做的

X_train = scaler.fit_transform(X_train)

X_test = scaler.transform(X_test)

要么

X_train = scaler.fit(X_train).transform(X_train)

您总是需要对训练或测试数据进行相同的预处理。是的,如果标准化能够反映您对数据的信念,那么标准化总是好的。特别是对于内核-svm,这通常至关重要。



 类似资料:
  • 这适用于必须使用SVM方法来提高模型精度的分配。 共有3部分,编写了下面的代码 但在此之后,问题如下 执行数字标准化。数据,并将转换后的数据存储在可变数字中。 提示:从sklearn.preprocessing.使用所需的实用程序再次,将digits_standardized分成两个集合名称X_train和X_test。此外,将digits.target分成两组Y_train和Y_test。 提示

  • 本文向大家介绍scikit-learn库如何用于在Python中加载数据?,包括了scikit-learn库如何用于在Python中加载数据?的使用技巧和注意事项,需要的朋友参考一下 Scikit-learn,通常称为sklearn,是Python中的一个开源库,用于实现机器学习算法。 在Python强大而稳定的界面的帮助下,这包括分类,回归,聚类,降维等等。该库基于Numpy,SciPy和Mat

  • scikit-learn 是一个 Python 的机器学习项目。是一个简单高效的数据挖掘和数据分析工具。基于 NumPy、SciPy 和 matplotlib 构建。 Installation 依赖 scikit-learn 要求: Python (>= 2.7 or >= 3.3) NumPy (>= 1.8.2) SciPy (>= 0.13.3) 运行示例需要 Matplotlib >= 1

  • 问题内容: 读取执行的scikit学习中tensroflow:http://learningtensorflow.com/lesson6/和scikit学习:http://scikit- learn.org/stable/modules/generated/sklearn.cluster.KMeans.html 我努力决定使用哪种实现。 scikit-learn作为tensorflow docke

  • 问题内容: 我正在尝试在Python中使用scikit-learn设计一个简单的决策树(我在Windows OS上将Anaconda的Ipython Notebook与Python 2.7.3结合使用),并将其可视化如下: 但是,出现以下错误: 我使用以下博客文章作为参考:Blogpost链接 以下stackoverflow问题似乎也不适合我:问题 有人可以帮助我如何在scikit-learn中可

  • Introduction to Machine Learning with scikit-learn This video series will teach you how to solve Machine Learning problems using Python's popular scikit-learn library. There are 10 video tutorials tot