sklearn OneHotEncoder输出非数组对象错误

时间:2019-06-04 11:34:26

标签: python numpy machine-learning scikit-learn

我正在以下数据集上完成有关Udemy的Python机器学习课程(仅显示前几行)

   R&D Spend  Administration  Marketing Spend       State  Profit
0     165349          136898           471784    New York  192262
1     162598          151378           443899  California  191792
2     153442          101146           407935     Florida  191050
3     144372          118672           383200    New York  182902

该课程于2016年完成,因此某些模块已更新,我在代码中进行了更改(例如:使用ColumnTransformer make_column_transformer)。该代码的输出应该是一个浮点数组(在Udemy教程中),但是由于某种原因,在代码更新后,我的变量x被认为是一个{ {1}}对其进行处理之后。我不确定为什么,因为当我打印变量ndarray object时,它会打印出一个浮点数数组。

原始数据文件位于文件x中的this link(zip文件夹)中。

我尝试添加50_startups.csv,但这破坏了代码。

谢谢

.toarray()

enter image description here

1 个答案:

答案 0 :(得分:1)

在这种情况下,我认为这只是输入和输出中混合数据类型的结果。例如,如果您检查x

x
array([[165349, 136898, 471784, 'New York'],
       [162598, 151378, 443899, 'California'],
       [153442, 101146, 407935, 'Florida'],
       [144372, 118672, 383200, 'New York']], dtype=object)

您将看到它具有dtype=object。这是由于数组中整数和字符串的混合。因此,直通阵列(R&D支出,管理和营销支出)保持相同的dtype。然后在fit_transform内将此数组与OneHotEncoder转换的结果堆叠在一起以产生结果。这样,输出dtype与您提供的输入相同。

如果您想更改dtype,则始终可以使用.astype(float)