2016-01-21 66 views
1

我是数据分析的新手。我想在python sklearn中使用一些模型。我有一个数据集,其中一些列有文本列。如下图所示,将文本列转换为sklearn中的数字

dataset

有没有办法将这些列中的值转换为数字转换成大熊猫或sklearn?为这些值分配数字是正确的。如果在测试数据中弹出一个新的字符串呢?

请指教。

+0

考虑使用[get_dummies](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dumm ies.html)函数在熊猫中可用。忽略测试数据中遇到的所有新值,不能使用训练期间未看到的值。 – shanmuga

+0

我正在考虑使用它。但一些列有许多独特的值(高达400+)。 –

回答

0

您可以使用分类数据类型将它们转换为整数代码。

column = column.astype('category') 
column_encoded = column.cat.codes 

只要使用使用具有足够深树一树的基于模型,如GradientBoostingClassifier(max_depth=10),你的模型应该能够再次打出的类别。

0

考虑使用标签编码 - 它由0之间分配每个类别的一个整数变换的分类数据和所述num_of_categories-1:

from sklearn.preprocessing import LabelEncoder 
df = pd.DataFrame(['a','b','c','d','a','c','a','d'], columns=['letter']) 

    letter 
0  a 
1  b 
2  c 
3  d 
4  a 
5  c 
6  a 

应用:

le = LabelEncoder() 
encoded_series = df[df.columns[:]].apply(le.fit_transform) 

encoded_series:

letter 
0 0 
1 1 
2 2 
3 3 
4 0 
5 2 
6 0 
7 3