贝叶斯算法中的参数调优
这段代码是使用Scikit-learn库中的TfidfVectorizer
将文本数据转换为数值特征矩阵,具体含义如下:
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer() # 创建TF-IDF向量化器
X = vectorizer.fit_transform(text_data) # 转换文本数据
分步解析:
TfidfVectorizer()
- 创建一个文本向量化工具,采用TF-IDF(词频-逆文档频率)算法
- 默认会:
✓ 将文本转换为小写
✓ 过滤标点符号
✓ 自动分词(中文需先分词)
✓ 忽略单字词(可通过参数调整)
fit_transform(text_data)
fit
:学习文本中的词汇表(所有出现的单词)和IDF权重transform
:将每条文本转换为TF-IDF加权的词向量- 输入
text_data
需是列表/数组形式,例如:["这是一条文本", "这是另一条文本"]
输出
X
的特性- 类型:稀疏矩阵(
scipy.sparse.csr_matrix
) - 每行代表一个文档,每列代表一个单词
- 矩阵值 = TF(词频) × IDF(逆文档频率)
- TF:单词在当前文档的出现频率
- IDF:log(总文档数/包含该词的文档数),降低常见词权重
- 类型:稀疏矩阵(
示例说明:
假设输入:
text_data = ["我爱机器学习", "机器学习很有趣"]
输出矩阵X
的物理意义:
我 爱 机器 学习 很 有趣
文档1 0.5 0.5 0.5 0.5 0 0
文档2 0 0 0.5 0.5 0.5 0.5
(实际值为TF-IDF加权后的浮点数)
关键参数(可通过构造函数调整):
TfidfVectorizer(max_features=1000, # 只保留最高频的1000个词stop_words=["的", "是"], # 自定义停用词ngram_range=(1,2) # 同时提取单个词和双词组合
)
典型应用场景:
- 文本分类(如垃圾邮件识别)
- 文档相似度计算
- 搜索引擎相关性排序
注意:中文文本需先分词(如用jieba),英文会自动按空格分词。例如:
[" ".join(jieba.cut(text)) for text in text_data]