在 sklearn 中撤消 L2 规范化 python

Undo L2 Normalization in sklearn python

一旦我使用 sklearn l2 归一化器归一化我的数据并将其用作训练数据: 如何将预测输出转回 "raw" 形状?

在我的示例中,我使用规范化房价作为 y,规范化生活 space 作为 x。各自用来适应自己的X_和Y_Normalizer.

y_predict因此也处于规范化状态,我如何转入原始原始货币状态?

谢谢。

如果您谈论的是 sklearn.preprocessing.Normalizer,它将矩阵线归一化,不幸的是,除非您将它们手动存储在某个地方,否则无法恢复到原始规范。

如果您正在使用 sklearn.preprocessing.StandardScaler,它规范化 ,那么您可以在该缩放器的属性中获取需要返回的值(mean_ 如果 with_mean 设置为 Truestd_)

如果您在管道中使用标准化器,则无需担心这一点,因为您不会就地修改数据:

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import Normalizer

# classifier example
from sklearn.svm import SVC

pipeline = make_pipeline(Normalizer(), SVC())

非常感谢您的回答,我以前不知道管道功能

事实证明,对于 L2 规范化的情况,您可以手动完成。 这是一个小型数组的示例:

x = np.array([5, 8 , 12, 15])

#Using Sklearn
normalizer_x = preprocessing.Normalizer(norm = "l2").fit(x)
x_norm = normalizer_x.transform(x)[0]
print x_norm

>array([ 0.23363466,  0.37381545,  0.56072318,  0.70090397])

或者用平方和的平方根的权重手动做:

#Manually
w = np.sqrt(sum(x**2))
x_norm2 = x/w
print x_norm2

>array([ 0.23363466,  0.37381545,  0.56072318,  0.70090397])

因此,将它们 "back" 与 "w" 相乘很简单。