• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

利用sklearn进行字典&文本的特征提取

其他 xppp11 1659次浏览 0个评论

写在前面

这篇博客主要内容:

  1. 应用DictVectorizer实现对类别特征进行数值化、离散化

  2. 应用CountVectorizer实现对文本特征进行数值化

  3. 应用TfidfVectorizer结合jieba实现文本特征进行数值化

特征提取API

sklearn.feature_extraction

字典特征提取

作用:对字典数据进行特征值化

  • sklearn.feature_extraction.DictVectorizer(sparse=True,…)
    • DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩阵
    • DictVectorizer.inverse_transform(X) X:array数组或者sparse矩阵 返回值:转换之前数据格式
    • DictVectorizer.get_feature_names() 返回类别名称
# 数据
[{'city': '北京','temperature':100}
{'city': '上海','temperature':60}
{'city': '深圳','temperature':30}]
# 代码
from sklearn.feature_extraction import DictVectorizer

def dict_demo():
    data = [{'city': '北京','temperature':100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature':30}]
	# 1、实例化一个转换器类
    transfer  = DictVectorizer(sparse=False)
    # 2、调用fit_transform
    data_new = transfer.fit_transform(data)
    print("data_new:\n",data_new)
    # 打印特征名字
    print("特征名字:\n",transfer.get_feature_names())
    
    return None

注意DictVectorizer默认是true,输出为稀疏矩阵,false输出为普通矩阵

利用sklearn进行字典&文本的特征提取

利用sklearn进行字典&文本的特征提取

文本特征提取

作用:对文本数据进行特征值化

  • sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
    • 返回词频矩阵
  • CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代对象 返回值:返回sparse矩阵
  • CountVectorizer.inverse_transform(X) X:array数组或者sparse矩阵 返回值:转换之前数据格
  • CountVectorizer.get_feature_names() 返回值:单词列表
  • sklearn.feature_extraction.text.TfidfVectorizer
# 数据
["life is short,i like python",
"life is too long,i dislike python"]
# 代码
from sklearn.feature_extraction.text import CountVectorizer

def count_demo():
    data = ["life is short,i like like python", "life is too long,i dislike python"]
    transfer  = CountVectorizer()
    data_new = transfer.fit_transform(data)
    print("data_new:\n",data_new.toarray())
    print("特征名字:\n",transfer.get_feature_names())
    return None

注意代码中的使用了toarray(),可以不加这个方法,再运行一下看看

利用sklearn进行字典&文本的特征提取

Tf-idf文本特征提取

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

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

  • 词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率

  • 逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到

利用sklearn进行字典&文本的特征提取

##案例
现在假如有1000篇文章,其中100篇文件包含“非常”一词。
现有一篇文章A词量为100,而词语“非常”出现了5次
那么词语“非常”的词频(tf)就是5/100=0.05
那么词语“非常”的逆向文档频率(idf)为lg(1000/100)=1
最后"非常"对于这篇文档的tf-idf的分数为0.05 * 1=0.05
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba

def cut_word(text):
    return " ".join(list(jieba.cut(text)))

def tfidf_demo():
    data = ["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。","我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。","如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]
    data_new = []
    for sent in data:
        data_new.append(cut_word(sent))
    # 1、实例化一个转换器类
    transfer = TfidfVectorizer()
    # 2、调用fit_transform
    data_final = transfer.fit_transform(data_new)
    print("data_new:\n", data_final.toarray())
    print("特征名字:\n", transfer.get_feature_names())
    return None

利用sklearn进行字典&文本的特征提取


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明利用sklearn进行字典&文本的特征提取
喜欢 (0)

您必须 登录 才能发表评论!

加载中……