繁体   English   中英

python sklearn:“ sklearn.preprocessing.normalize(X,norm ='l2')”和“ sklearn.svm.LinearSVC(penalty ='l2')”之间有什么区别

[英]python sklearn: what is the different between “sklearn.preprocessing.normalize(X, norm='l2')” and “sklearn.svm.LinearSVC(penalty='l2')”

这是两种规格化方法:

1:这是在数据预处理中使用的:sklearn.preprocessing.normalize(X,norm ='l2')

2:分类方法中使用了另一种方法:sklearn.svm.LinearSVC(penalty ='l2')

我想知道,它们之间有什么区别? 这两个步骤是否必须在完整模型中使用? 仅使用一种方法就足够了吗?

这两个是不同的东西,通常您都需要它们,以便建立一个良好的SVC模型。

1)第一个意味着要缩放(规格化)X数据矩阵,您需要用每列的L2范数除,就是这样: sqrt(sum(abs(X[:,j]).^2)) ,其中j是数据矩阵X中的每一列。 这样可以确保每一列的值都不会太大,这使得某些算法难以收敛。

2)无论您的数据如何缩放(以及值的大小),仍然可能存在异常值或某些特征(j)过于占主导地位,并且您的算法(LinearSVC())可能过度信任它们,而不应该如此。 这就是L2正则化发挥作用的地方,也就是说,除了算法最小化的功能外,还会对系数施加成本,以使系数不会变得太大。 换句话说,模型的系数成为SVR成本函数的额外成本。 多少费用 ? 由C(L2)值决定为C*(beta[j])^2

总结起来,第一个告诉用哪个值划分X矩阵的每一列。 第二个系数应该使成本函数负担多少权重。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM