Python学习笔记-3群18组-杜杜狼-2017.8.8

Lesson 12 sklearn

sklearn全名Scikit-learn, 是基于Python的机器学习模块,数据结构基于numpy和pandas,
使用sklearn进行机器学习编程一般分为三步:

  1. 数据准备与预处理
  2. 模型选择与训练
  3. 模型选择与参数调优

文档向量化

使用sklearn.feature_extraction.text.CountVectorizer类, 进行词频统计

  • stop_words: 停用词
  • min_df: 分词最小长度
  • token_pattern=r"\b\w+\b" 分词的正则,按照空格和标点符号进行分词
#引入CountVectorizer类
from sklearn.feature_extraction.text import CountVectorizer

countVectorizer = CountVectorizer()
#调用fit_transform得到文档向量化的矩阵
#Learn the vocabulary dictionary and return term-document matrix
#<4x4 sparse matrix of type '<class 'numpy.int64'>' with 4 stored elements in Compressed Sparse Row format>
textVector = countVectorizer.fit_transform(contents);

#获取这个matrix
textVector.todense()
#这里可以看出,只有两个character及以上的单词会成为列名(sklearn包default设置min_df为1)
countVectorizer.vocabulary_

#countVectorizer示例2,stopwords参见前面分词课程
countVectorizer = CountVectorizer(
    stop_words=list(stopwords['stopword'].values),
    min_df=0, 
    token_pattern=r"\b\w+\b"
)

TFIDF计算

sklearn.feature_extraction.text.TfidfTransformer, 不需要参数

from sklearn.feature_extraction.text import TfidfTransformer

#生成TfidfTransformer对象
transformer = TfidfTransformer()
#得到tfidf矩阵
#<4x13 sparse matrix of type <class numpy.float64> with 16 stored elements in Compressed Sparse Row format>
tfidf = transformer.fit_transform(textVector)

import pandas;
#将matrix转成数据框DF
TFIDFDataFrame = pandas.DataFrame(tfidf.toarray());
#把所有分词赋值给数据框当做列名
TFIDFDataFrame.columns = countVectorizer.get_feature_names();

import numpy;
#把所有分词进行正序排序,取最后两列
TFIDFSorted = numpy.argsort(tfidf.toarray(), axis=1)[:, -2:]

TFIDFDataFrame.columns[TFIDFSorted].values

Digression: toarray()和todense()区别

toarray returns an ndarray; todense returns a matrix.

toarray().png
todense().png

吐槽:数据挖掘课程每学一课都是掉血!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容