如何处理Scikitlearn randomforest分类器中的name列。蟒蛇3

时间:2017-02-01 01:01:15

标签: python scikit-learn random-forest countvectorizer

我有一个包含13列的数据框。 13列中有13列是字符串。一个字符串列是简单的男性和女性,我使用

转换为1和0
  

pd.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行。提前感谢您的帮助或建议。

1 个答案:

答案 0 :(得分:0)

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

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