如何对中文部分进行独热处理(one-hot)

  统计/机器学习 自然语言处理 数据预处理 Python    浏览次数:4459        分享
0


import pandas as pd 
import numpy as np 

a = [['苹果', 10, 4.2], ['龙眼', '6.2,6.8', 0.03], ['荔枝', np.nan, np.nan]]
df = pd.DataFrame(a)
df.columns=['a','b','c']
print(df)

from sklearn import preprocessing  
enc = preprocessing.OneHotEncoder()  
# df['a'].encode('Unicode')
enc.fit(df['a'])  
df['a'] = enc.transform([df['a']])
print('df[a]\n',df['a'])

输出结果:

    a        b     c
0  苹果       10  4.20
1  龙眼  6.2,6.8  0.03
2  荔枝      NaN   NaN

报错:

ValueError: could not convert string to float: '荔枝'
 

rosefun   2018-06-03 23:10



   1个回答 
3

怎么一直没有人回答这个问题...

OneHotEncoder不能直接把string类型的列进行one-hot coding,你需要先用整数代替字符,比如说用LabelEncoder,然后再用OneHotEncoder。

这个问题sklearn onehotencoder的具体用法是和你一模一样的情况,数据中一列是字符形式。你直接看里面的代码就行了。

SofaSofa数据科学社区DS面试题库 DS面经

何立诚   2019-05-10 03:56



  相关讨论

求python里得到n-grams的包?

python去掉中文文本中所有的标点符号

自定义CountVectorizera中默认的英语stop_words

请问NLP中这种编码方式有没有什么术语?

怎么理解nlp里的good-turing smooth?

机器学习中文数据的训练集的预处理

数据批量分析提取,求指点迷津

怎么把英文字符串转为小写(python)?

jieba分词怎么用?

wordcloud安装报错error: Microsoft Visual C++ 14.0 is required

  随便看看

pandas.DataFrame选取最后k行

怎么利用permutation importance来解释xgboost模型的特征?

pandas把一列日期转换为星期

怎么理解推荐系统中的NDCG?

怎么添加pandas的dataframe到已有的csv文件,并且不覆盖原内容