在sklearn python中撤消L2规范化

时间:2016-04-13 09:10:25

标签: python machine-learning scikit-learn normalization standardized

一旦我使用sklearn l2规范化器对我的数据进行了规范化并将其用作训练数据: 如何将预测输出恢复为“原始”形状?

在我的例子中,我使用标准化住房价格作为y,并将生活空间标准化为x。每个都用于适合自己的X_和Y_Normalizer。

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

谢谢。

2 个答案:

答案 0 :(得分:3)

如果你正在谈论规范化矩阵线的sklearn.preprocessing.Normalizer,遗憾的是除非你在某处手工存储它们,否则无法回到原始规范。

如果您使用sklearn.preprocessing.StandardScaler来规范化,那么您可以获取返回该缩放器属性所需的值(mean_ if {{ 1}}设置为with_meanTrue

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

std_

答案 1 :(得分:0)

非常感谢您的回答,我在

之前不了解管道功能

对于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])

所以转过身来"回来"通过乘以" w"。

,可以简单地将原始甲酸盐转化为原状