我是数据分析的新手。我想在python sklearn中使用一些模型。我有一个数据集,其中一些列有文本列。如下图所示,将文本列转换为sklearn中的数字
有没有办法将这些列中的值转换为数字转换成大熊猫或sklearn?为这些值分配数字是正确的。如果在测试数据中弹出一个新的字符串呢?
请指教。
我是数据分析的新手。我想在python sklearn中使用一些模型。我有一个数据集,其中一些列有文本列。如下图所示,将文本列转换为sklearn中的数字
有没有办法将这些列中的值转换为数字转换成大熊猫或sklearn?为这些值分配数字是正确的。如果在测试数据中弹出一个新的字符串呢?
请指教。
您可以使用分类数据类型将它们转换为整数代码。
column = column.astype('category')
column_encoded = column.cat.codes
只要使用使用具有足够深树一树的基于模型,如GradientBoostingClassifier(max_depth=10
),你的模型应该能够再次打出的类别。
考虑使用标签编码 - 它由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
考虑使用[get_dummies](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dumm ies.html)函数在熊猫中可用。忽略测试数据中遇到的所有新值,不能使用训练期间未看到的值。 – shanmuga
我正在考虑使用它。但一些列有许多独特的值(高达400+)。 –