AI人工智能之机器学习sklearn-特征提取

发布于:2025-02-25 ⋅ 阅读:(14) ⋅ 点赞:(0)

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机器学习中特征提取工具。