【发布时间】:2016-08-25 20:48:43
【问题描述】:
我正在使用 sklearn 标准缩放器来规范化熊猫数据框中的某些列。虽然 fit_transform 按预期工作,但 transform 没有。这是我的工作:
non_categorical_variable = ['var1','var5']
scaler = StandardScaler()
train[non_categorical_variable] = scaler.fit_transform(train[non_categorical_variable])
而且效果很好,但这不起作用:
test[non_categorical_variable] = scaler.transform(test[non_categorical_variable])
这是错误信息:
文件“main_FM.py”,第 286 行,在 predict_first_stage 中
test[non_categorical_features] = scaler.transform(test[non_categorical_features])
TypeError: 'coo_matrix' 对象没有属性 'getitem'
现在,如果我简单地输入以下内容,一切正常并匹配。
print test[non_categorical_variable]
print scaler.transform(test[non_categorical_variable])
print type(test[non_categorical_variable])
print type(scaler.transform(test[non_categorical_variable]))
print test[non_categorical_variable].shape
print scaler.transform(test[non_categorical_variable]).shape
感谢您的帮助!
【问题讨论】:
-
你能模拟一些样本数据供我们测试吗?
-
如果你能给出这些打印语句的输出会很棒。如果您可以创建一个重现错误的最小示例,那就更好了。当您致电
transform时,它是在以前安装的scaler上还是在新的scaler上?这可能来自 sklearn 与 pandas 的奇怪且不完全成熟的交互(我会先将相关列完全转换为 numpy 并重新检查)。 -
non_categorical_features是一个列表吗?您显示的错误并非来自缩放器(除非您已发布部分错误消息)。同样在打印语句中,您使用的是non_categorical_variable而不是non_categorical_features -
感谢您的帮助。事实上,我认为错误来自 HotOneEncoding 之后的行,但错误报告中有一个错误,并且报告了错误的行。我正在对此进行调查。如有必要,我会更新帖子或重新发布
标签: python scikit-learn scaling sklearn-pandas