【机器学习】文本数据的向量化(TF-IDF)---样本集实例讲解+python实现

1.文本数据的向量化

1.1名词解释

CF:文档集的频率,是指词在文档集中出现的次数

DF:文档频率,是指出现词的文档数

IDF:逆文档频率,idf = log(N/(1+df)),N为所有文档的数目,为了兼容df=0情况,将分母弄成1+df。

TF:词在文档中的频率

TF-IDF:TF-IDF= TF*IDF

1.2文本数据样本集

为了讲解文本数据的向量化,假设我们有4个文本,所有文本一共有6个不同的词,如下所示。

             
doc1 iphone   guuci huawei watch huawei
doc2 huawei watch iphone watch iphone gucci
doc3 skirt skirt   skirt flower  
doc4 watch   watch   huawei  

1.3计算汇总

  iphone watch gucci huawei skirt flower
doc1  TF 1/5 1/5 1/5 2/5 0 0
doc2 TF 2/6 2/6 1/6 1/6 0 0
doc3 TF 0 0 0 0 3/4 1/4
doc4 TF 0 2/3 0
  • 14
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.naive_bayes import MultinomialNBcount_vect = CountVectorizer() X_train_counts = count_vect.fit_transform(email_corpus) tfidf_transformer = TfidfTransformer() X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts) clf = MultinomialNB().fit(X_train_tfidf, email_labels) ### 回答2: 贝叶斯分类是一种常用的机器学习算法,用于分类问题。在垃圾邮件分类中,可以使用贝叶斯分类器来自动将邮件分类为垃圾邮件或非垃圾邮件。 首先,我们需要导入相关的库和数据。这里使用sklearn库的CountVectorizer和TfidfTransformer来进行向量化TF-IDF加权。 ```python # 导入相关库 from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer from sklearn.naive_bayes import MultinomialNB from sklearn.pipeline import Pipeline # 创建数据 data = [ ("这是一封非垃圾邮件", "非垃圾邮件"), ("这是一封垃圾邮件", "垃圾邮件"), ("垃圾邮件是个问题", "垃圾邮件"), ("非垃圾邮件比较好", "非垃圾邮件") ] # 将数据分为邮件内容和标签 X, y = zip(*data) # 创建Pipeline pipeline = Pipeline([ ('vect', CountVectorizer()), # 向量化 ('tfidf', TfidfTransformer()), # TF-IDF加权 ('clf', MultinomialNB()) # 使用贝叶斯分类器 ]) # 训练模型 model = pipeline.fit(X, y) # 预测样本 test_email = ["这是一封测试邮件"] predicted = model.predict(test_email) print(f"预测结果:{predicted}") ``` 这段代码首先创建了一个数据,其中包含了邮件内容和标签。然后,使用sklearn的Pipeline函数构建了一个由向量化TF-IDF加权和贝叶斯分类器组成的模型。通过调用fit方法,可以对模型进行训练。最后,使用predict方法对测试样本进行预测,并输出预测结果。 以上就是使用贝叶斯分类器、CountVectorizer进行向量化TF-IDF加权的完整代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值