码迷,mamicode.com
首页 > 其他好文 > 详细

数据挖掘——关键字提取—基于sklearn包实现

时间:2018-09-25 01:16:32      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:strong   and   for   结构   自然语言   def   dataframe   rom   lan   

 

 

什么是sklearn?

  sklearn全名是Scikit-Learn,是基于Python的机器学习模块,基于BSD开源许可证,官方网址是:http://scikit-learn.org/stable

  Scikit-Learn的数据结构基于Numpy和Pandas模块,数据计算基于Scipy模块,数据可视化基于Matplotlib模块。

  Scikit-Learn的基本功能:

  分类;回归;聚类;数据降维;模型选择;数据预处理。

  Scikit-Learn将具体的机器学习分为3个步骤:

  数据准备与预处理;模型选择与训练;模型验证和参数调优。

  Scikit-Learn自带一些经典的数据集,比如用于分类的iris和digits数据集,还有用于回归分析的boston house prices数据集。该数据集是一种字典结构,数据存储在.data成员中,输出标签存储在.target成员中。Scikit-Learn建立在Scipy之上,提供了一套常用的机器学习算法,通过一个统一的接口来使用,Scikit-Learn有助于在数据集上实现流行的算法。 Scikit-Learn还有一些库,比如:用于自然语言处理的Nltk、用于网站数据抓取的Scrappy、用于网络挖掘的Pattern、用于深度学习的Theano等。 

  sklearn实现分词与关键字提取的原理:sklearn进行TF-IDF分词的规则是基于空格和标点符号对原文进行分割。

  sklearn进行文本处理的步骤:

from sklearn.feature_extraction.text import CountVectorizer

#例子
example1 = [我们 还 没有 到 家,
            你们 什么 时候 回来,
            他 想 吃 肉]
gjz_count = CountVectorizer()
textvecot = gjz_count.fit_transform(example1) #得到文档向量化的矩阵内容

textvecot.todense() #通过todense方法获取向量化矩阵,数据结构为numpy.matrixlib.defmatrix.matrix
gjz_count.vocabulary_ #查看矩阵每个列对应的分词,数据结构为字典
type(gjz_count) #数据结构为sklearn.feature_extraction.text.CountVectorizer
type(textvecot.todense()) #数据结构为numpy.matrixlib.defmatrix.matrix
type(gjz_count.vocabulary_) #数据结构为字典
#原理就是通过ID查询单词或通过单词查询ID

结果中将长度为1的分词全都剔除了,所以在CountVectorizer函数的构造过程中需要设置初始化参数

gjz_count = CountVectorizer(
        min_df=0, #设置分词最小长度为0 
        token_pattern=r\b\w+\b) #分词的正则表达式
#进行TF-IDF的运算,导入sklearn包中的TF-IDF的计算方法,直接调用
from sklearn.feature_extraction.text import TfidfTransformer 
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(textvecot) #传入得到的字符串数组,得到tf-idf矩阵
#将tfidf数据结构转为数据框矩阵
import pandas as pd 
tfidfDF = pd.DataFrame(tfidf.toarray()) #转换为数据框 
tfidfDF.columns
tfidfDF.columns = gjz_count.get_feature_names() #将数据框的列名替换成分词
##得到列名为分词,行为tf-idf值的矩阵

  对分词的tf-idf值排序后,直接输出关键字

import numpy as np
tfidf_sorted = np.argsort(tfidf.toarray(),axis=1)[:,-2:] #对所有行排序,取tf-idf值最大的2个分词的列名
tfidfDF.columns[tfidf_sorted].values #根据列名得到对应关键字

 

数据挖掘——关键字提取—基于sklearn包实现

标签:strong   and   for   结构   自然语言   def   dataframe   rom   lan   

原文地址:https://www.cnblogs.com/rix-yb/p/9697094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!