我有一个包含13列的数据框。 13列中有13列是字符串。一个字符串列是简单的男性和女性,我使用
转换为1和0pd.get_dummies()
第二列包含三种不同类型的字符串,因此可以使用
轻松转换为数组来自sklearn.feature_extraction.text import CountVectorizer
完全没问题。问题是我的第三个也是最后一个列包含大量名称。如果我尝试使用Countvectorizer进行转换,它会将名称转换为长不可读的字符串。
DF ['名称'] = 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)...
名称:supplier_name,dtype:object
并且下一个代码会导致内存错误
df [' name'] = pd.DataFrame(CV.fit_transform(df.name).toarray(),columns = CV.get_feature_names())
我也看过那个问题。 问题:除了上面提到的,有什么方法可以在数字形式中使用此名称列。或者任何其他想法如何改进这一点,以便数据完全适合 Randomforest分类器。因为,Dataframe退出大包含 123790行。提前感谢您的帮助或建议。
答案 0 :(得分:0)
在将原始文件存储到单独的列表之后,名称是一种独特的东西,并且是一种使用sklearn.preprocessing.LabelEncoder
的ID。它会自动将名称转换为序列号。
另外,请注意,如果这是一个独特的事情,您应该在预测期间删除名称。