我对Python和scikit-learn(sklearn)非常陌生,我试图加载这个由7列属性和1列数据分类(类/数据目标)组成的数据集。但是有一个属性由数据[1,2,3,4,5]组成,它实际上标志着某个事物的某个阶段,因此使它成为一个名义数字,而不是数字。但是,当然python将它识别为一个数值数据(int64),实际上我希望它被当作一个标称数据(对象)。如何将列类型更改为标称值?如何将Python中的列类型从int更改为sklearn的对象?
我做了以下工作。
print(data.dtypes)
data["col_name"]=data["col_name"].astype(numpy.object)
print(data.dtypes)
在第一次印刷,它仍然承认我的数据[“COL_NAME”] Int64形式,但astype
行后,它已经改变了它object
。但它对数据没有任何影响,因为当我尝试使用matplotlib
并创建直方图时,它仍然将X和Y都识别为数字而不是对象。
另外我已阅读关于文档One Hot Encoding
和Label Encoding
的文档,但我认为它们不是我需要的。我想知道我是否误解了某些东西,或者有其他解决方案。
谢谢
嘿,对于迟到的回复抱歉,我没有注意到我有一个新的答案。我想试试你的解决方案,但后来我发现data ['class'] = data ['class']。astype(str)'已经工作了,python已经将类列识别为一个字符串(对象)。我认为对我来说就足够了,因为它是一个班级,而不是一个属性。但如果我将来遇到类似问题,我会记住您的解决方案。不管怎么说,还是要谢谢你。 –