机器学习(4.文本数据的特征抽取(第二种TfidfVectorizer(TF-IDF)))

本文深入浅出地介绍了TF-IDF算法的基本原理及其在文本分类中的应用,通过实例展示了如何使用Python的sklearn库进行TF-IDF计算,帮助读者理解词频-逆文档频率在衡量词汇重要性中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TF-IDF

TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度

类:sklearn.feature_extraction.text.TfidfVectorizer

1.TfidfVectorizer语法语法 

     •TfidfVectorizer(stop_words=None,)

                   •返回词的权重矩阵

     •TfidfVectorizer.fit_transform(X,y)      

                   •X:文本或者包含文本字符串的可迭代对象

                  •返回值:返回sparse矩阵

     •TfidfVectorizer.inverse_transform(X)

                   •X:array数组或者sparse矩阵

       返回值:转换之前数据格式

     •TfidfVectorizer.get_feature_names()

                   •返回值:单词列表

2.例子:,抽取中文文本特征查看重要程度

​
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba


def cutword():
    content1 = jieba.lcut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,"
                          "所以每个人不要放弃今天。")
    content2 = jieba.lcut("我们看到的从很远星系来的光是在几百万年之前发出的,"
                          "这样当我们看到宇宙时,我们是在看它的过去。")
    content3 = jieba.lcut("如果只用一种方式了解某样事物,你就不会真正了解它。"
                          "了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")

    # 把分词后的列表转换成字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)

    return c1, c2, c3


def tfidvec():
    """

    :return:
    """
    c1, c2, c3 = cutword()
    tf = TfidfVectorizer()
    data = tf.fit_transform([c1, c2, c3])
    print(tf.get_feature_names())
    print(data.toarray())
    return None

if __name__ == '__main__':
    tfidvec()

​

 程序运行结果:   打印出来的数组里面额数据就可以代表重要程度

['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', 
'只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明
天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', 
'过去', '这样']
[[0.         0.         0.21821789 0.         0.         0.
  0.43643578 0.         0.         0.         0.         0.
  0.21821789 0.         0.21821789 0.         0.         0.
  0.         0.21821789 0.21821789 0.         0.43643578 0.
  0.21821789 0.         0.43643578 0.21821789 0.         0.
  0.         0.21821789 0.21821789 0.         0.         0.        ]
 [0.         0.         0.         0.2410822  0.         0.
  0.         0.2410822  0.2410822  0.2410822  0.         0.
  0.         0.         0.         0.         0.         0.2410822
  0.55004769 0.         0.         0.         0.         0.2410822
  0.         0.         0.         0.         0.48216441 0.
  0.         0.         0.         0.         0.2410822  0.2410822 ]
 [0.15698297 0.15698297 0.         0.         0.62793188 0.47094891
  0.         0.         0.         0.         0.15698297 0.15698297
  0.         0.15698297 0.         0.15698297 0.15698297 0.
  0.1193896  0.         0.         0.15698297 0.         0.
  0.         0.15698297 0.         0.         0.         0.31396594
  0.15698297 0.         0.         0.15698297 0.         0.        ]]

4.TF-IDF结果怎么样计算的来?

   (1) tf: term frequency(统计词的频率)

   (2)idf:   逆文档频率  inverse document frequency 

                公式 idf = log(总文档数量/该词出现的文档数量)

最后的值    是由  tf  *  idf (重要性程度)

机器学习项目中,文本数据的处理至关重要,尤其是在缺失值处理和特征抽取方面。为了解决这一问题,推荐参考《机器学习中的关键:特征工程与数据预处理解析》这一资源。文档中详细介绍了如何有效地对文本数据进行特征工程,包括处理缺失值和应用TF-IDF进行特征抽取的步骤。 参考资源链接:[机器学习中的关键:特征工程与数据预处理解析](https://wenku.csdn.net/doc/ymgaoo5rtq?spm=1055.2569.3001.10343) 首先,对于文本数据中的缺失值处理,我们可以使用删除法或填补法。删除法涉及到删除含有缺失值的特征或样本,而填补法则较为复杂。使用Sklearn的Imputer类是一个不错的选择,它可以基于均值、中位数或众数来填补缺失值,确保数据的完整性。 接下来,应用TF-IDF进行特征抽取是将文本数据转化为数值型数据的关键步骤。TF-IDF能够反映单词在文档集合中的重要程度,其值随着单词在文档中出现的频率增加而增加,但随着在语料库中出现频率的增加而减少。在Sklearn中,TfidfVectorizer类能够帮助我们轻松实现这一点。使用此类可以指定不同的参数来控制停用词、最小和最大文档频率等,从而得到更合适的文本特征表示。 总之,结合《机器学习中的关键:特征工程与数据预处理解析》提供的指导,可以系统地掌握文本数据预处理和特征抽取的方法,从而提高模型的预测准确性。 参考资源链接:[机器学习中的关键:特征工程与数据预处理解析](https://wenku.csdn.net/doc/ymgaoo5rtq?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值