文章目录
- 1、概要
- 2.、特征提取
- 2.1安装及引入包
- 2.2 提取文本的特征 text.CountVectorizer
- 2.3 提取字典特征 DictVectorizer
- 3、 总结
1、概要
本篇学习AI人工智能之机器学习sklearn库中特征提取,以字典数据和文本数据的词频统计为例,。
2.、特征提取
特征提取是将原始数据转换为更适合机器学习模型的特征表示
- Scikit-learn提供了多种特征提取工具
- DictVectorizer用于处理字典数据的词频统计
- CountVectorizer用于文本数据的词频统计
2.1安装及引入包
python安装机器学习库:
pip install scikit-learn
然后引入下属包:
from sklearn.feature_extraction import text, DictVectorizer
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.model_selection import train_test_split
2.2 提取文本的特征 text.CountVectorizer
# 文本
text_data = ["hello world", "hello everyone", "world of programming"]
# 词频统计对象
v = text.CountVectorizer()
v
# 文本数据转换为词频矩阵, 提取文本特征 -> X
X = v.fit_transform(text_data)
X
<3x5 sparse matrix of type '<class 'numpy.int64'>'with 7 stored elements in Compressed Sparse Row format>
# 查看文本特征X的矩阵形状
X.shape
(3, 5)
# 查看X矩阵总数,共7个单词
X.sum()
7
# 查看词频矩阵
X.toarray()
array([[0, 1, 0, 0, 1],[1, 1, 0, 0, 0],[0, 0, 1, 1, 1]], dtype=int64)
# 词频矩阵转换为文本
v.inverse_transform(X)
[array(['hello', 'world'], dtype='<U11'),array(['hello', 'everyone'], dtype='<U11'),array(['world', 'of', 'programming'], dtype='<U11')]
2.3 提取字典特征 DictVectorizer
v = DictVectorizer()
X = v.fit_transform(D)assert X.shape == (3, 5)
assert X.sum() == 14
assert v.inverse_transform(X) == D
print(X.toarray()) # 打印词频矩阵
return X
# 示例字典
D = [{"foo": 1, "bar": 3}, {"bar": 4, "baz": 2}, {"bar": 1, "quux": 1, "quuux": 2}]
# 创建字典向量对象
v = DictVectorizer()
v
# 提取字典特征矩阵 X
X = v.fit_transform(D)
X
<3x5 sparse matrix of type '<class 'numpy.float64'>'with 7 stored elements in Compressed Sparse Row format>
X.shape # 3行5列
(3, 5)
# 词频矩阵
X.toarray()
array([[3., 0., 1., 0., 0.],[4., 2., 0., 0., 0.],[1., 0., 0., 2., 1.]])
X.sum() # 14个
14.0
# 向量返向转化
v.inverse_transform(X)
[{'bar': 3.0, 'foo': 1.0},{'bar': 4.0, 'baz': 2.0},{'bar': 1.0, 'quuux': 2.0, 'quux': 1.0}]
3、 总结
本篇以字典数据的词频统计和文本数据的词频统计为例,从代码视角讲述如何使用AI机器学习中特征提取工具。