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 '' 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  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.

Python学习笔记-3群18组-杜杜狼-2017.8.8_第1张图片
toarray().png
todense().png

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

你可能感兴趣的:(Python学习笔记-3群18组-杜杜狼-2017.8.8)