1

我有一个包含 13 列的数据框。在 13 三列中是字符串。一个字符串列是简单的男性和女性,我使用它转换为 1 和 0

pd.get_dummies()

第二列包含三种不同类型的字符串,因此可以轻松转换为数组

从 sklearn.feature_extraction.text 导入 CountVectorizer

完全没有问题。问题是我的第三列也是最后一列包含大量名称。如果我尝试使用 Countvectorizer 进行转换,它会将名称转换为不可读的长字符串。

df['name']=Countvectorizer.fit_transform(df.name)

如果我尝试将其转换回数据帧,如stackoverflow页面上的其他示例所示,在这种情况下,我会得到这个

245376 (0, 14297)\t1\n (1, 5843)\t1\n (1, 13365)... 245377 (0, 14297)\t1\n (1, 5843)\t1\n (1, 13365) )...

名称:供应商名称,数据类型:对象

下一个代码导致内存错误

df['name'] =pd.DataFrame(CV.fit_transform(df.name).toarray(),columns=CV.get_feature_names())

我也看过这个问题。问题:除了上面提到的以外,还有什么方法最好以数字形式使用此名称列。或任何其他想法如何改进这一点,以便数据完全适合Randomforest 分类器。因为,Dataframe 退出大,包含 123790。提前感谢您的帮助或建议。

4

1 回答 1

0

sklearn.preprocessing.LabelEncoder在将原始名称存储到单独的列表后,名称是一种独特的东西和一种使用的 id 。它会自动将名称转换为序列号。

另外,请注意,如果这是一个独特的东西,您应该在预测期间删除名称。

于 2017-11-06T10:37:55.567 回答