NLP:文本特征表示/字典特征抽取之对字典型数据通过特征抽取和向量化进而实现特征数字化(one-hot编码/仅有值稀疏矩阵,如对类别型特征转换数字型)代码实现
目录
文本特征表示/字典特征抽取之对字典型数据通过特征抽取和向量化进而实现特征数字化(one-hot编码/仅有值稀疏矩阵,如对类别型特征转换数字型)
实现代码
文本特征表示/字典特征抽取之对字典型数据通过特征抽取和向量化进而实现特征数字化(one-hot编码/仅有值稀疏矩阵,如对类别型特征转换数字型)应用场景:对类别型特征进行数字化转换
实现代码from sklearn.feature_extraction import DictVectorizer
data = [{'city': 'Shang Hai', 'temperature': 33.},
{'city': 'Bei Jing', 'temperature': 12.},
{'city': 'Las Vegas', 'temperature': 18.}]
# T1、利用DictVectorizer函数对数据实现one-hot编码表征:当类别非常多的时候(0 会很多),但事实使用one-hot编码是为了让类别更加公平一点,相互之间没有优先级
print('----------设置sparse参数返回一个one-hot编码矩阵-------------')
dicvec = DictVectorizer(sparse=False) #初始化DictVectorizer特征抽取器
data2dicvec = dicvec.fit_transform(data)
print(data2dicvec) #输出转化之后的特征矩阵
print(dicvec.get_feature_names()) #输出各个维度的特征含义
# T2、利用DictVectorizer函数对数据实现仅有值稀疏矩阵表征:sparse稀疏矩阵将非0值按照位置表示出来;对比one-hot,可以提高加载效率,节省内存
print('----------默认参数会返回一个稀疏矩阵-------------')
dicvec = DictVectorizer() #初始化DictVectorizer特征抽取器
data2dicvec = dicvec.fit_transform(data)
print(data2dicvec)
# print(data2dicvec.toarray()) #输出转化之后的特征矩阵
# print(dicvec.get_feature_names()) #输出各个维度的特征含义
----------设置sparse参数返回一个one-hot编码矩阵-------------
[[ 0. 0. 1. 33.]
[ 1. 0. 0. 12.]
[ 0. 1. 0. 18.]]
['city=Bei Jing', 'city=Las Vegas', 'city=Shang Hai', 'temperature']
----------默认参数会返回一个稀疏矩阵-------------
(0, 2) 1.0
(0, 3) 33.0
(1, 0) 1.0
(1, 3) 12.0
(2, 1) 1.0
(2, 3) 18.0