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

sklearn中模型抽取

时间:2019-10-31 18:56:16      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:rds   top   let   word   图像   imp   RoCE   mic   ==   

特征抽取sklearn.feature_extraction 模块提供了从原始数据如文本,图像等众抽取能够被机器学习算法直接处理的特征向量。

技术图片

1.特征抽取方法之 Loading Features from Dicts

技术图片

技术图片

技术图片
measurements=[
    {‘city‘:‘Dubai‘,‘temperature‘:33.},
    {‘city‘:‘London‘,‘temperature‘:12.},
    {‘city‘:‘San Fransisco‘,‘temperature‘:18.},
]

from sklearn.feature_extraction import DictVectorizer
vec=DictVectorizer()
print(vec.fit_transform(measurements).toarray())
print(vec.get_feature_names())

#[[  1.   0.   0.  33.]
 #[  0.   1.   0.  12.]
 #[  0.   0.   1.  18.]]

#[‘city=Dubai‘, ‘city=London‘, ‘city=San Fransisco‘, ‘temperature‘]
技术图片

2.特征抽取方法之 Features hashing

技术图片

技术图片

技术图片

技术图片

3.特征抽取方法之 Text Feature Extraction

词袋模型 the bag of words represenatation

技术图片

技术图片

技术图片

技术图片
#词袋模型
from sklearn.feature_extraction.text import CountVectorizer
#查看默认的参数
vectorizer=CountVectorizer(min_df=1)
print(vectorizer)

"""
CountVectorizer(analyzer=‘word‘, binary=False, decode_error=‘strict‘,
        dtype=<class ‘numpy.int64‘>, encoding=‘utf-8‘, input=‘content‘,
        lowercase=True, max_df=1.0, max_features=None, min_df=1,
        ngram_range=(1, 1), preprocessor=None, stop_words=None,
        strip_accents=None, token_pattern=‘(?u)\\b\\w\\w+\\b‘,
        tokenizer=None, vocabulary=None)

"""

corpus=["this is the first document.",
        "this is the second second document.",
        "and the third one.",
        "Is this the first document?"]
x=vectorizer.fit_transform(corpus)
print(x)

"""
(0, 1)    1
  (0, 2)    1
  (0, 6)    1
  (0, 3)    1
  (0, 8)    1
  (1, 5)    2
  (1, 1)    1
  (1, 6)    1
  (1, 3)    1
  (1, 8)    1
  (2, 4)    1
  (2, 7)    1
  (2, 0)    1
  (2, 6)    1
  (3, 1)    1
  (3, 2)    1
  (3, 6)    1
  (3, 3)    1
  (3, 8)    1
"""
技术图片

 默认是可以识别的字符串至少为2个字符

analyze=vectorizer.build_analyzer()
print(analyze("this is a document to anzlyze.")==
    (["this","is","document","to","anzlyze"])) #True

在fit阶段被analyser发现的每一个词语都会被分配一个独特的整形索引,该索引对应于特征向量矩阵中的一列

技术图片
print(vectorizer.get_feature_names()==(
    ["and","document","first","is","one","second","the","third","this"]
))
#True
print(x.toarray())
"""
[[0 1 1 1 0 0 1 0 1]
 [0 1 0 1 0 2 1 0 1]
 [1 0 0 0 1 0 1 1 0]
 [0 1 1 1 0 0 1 0 1]]
"""
技术图片

获取属性

print(vectorizer.vocabulary_.get(‘document‘))
#1

对于一些没有出现过的字或者字符,则会显示为0

技术图片
vectorizer.transform(["somthing completely new."]).toarray()
"""
[[0 1 1 1 0 0 1 0 1]
 [0 1 0 1 0 2 1 0 1]
 [1 0 0 0 1 0 1 1 0]
 [0 1 1 1 0 0 1 0 1]]
"""
技术图片

在上边的语料库中,第一个和最后一个单词是一模一样的,只是顺序不一样,他们会被编码成相同的特征向量,所以词袋表示法会丢失了单词顺序的前后相关性信息,为了保持某些局部的顺序性,可以抽取2个词和一个词    

技术图片
bigram_vectorizer=CountVectorizer(ngram_range=(1,2),token_pattern=r"\b\w+\b",min_df=1)
analyze=bigram_vectorizer.build_analyzer()
print(analyze("Bi-grams are cool!")==([‘Bi‘,‘grams‘,‘are‘,‘cool‘,‘Bi grams‘,
                                 ‘grams are‘,‘are cool‘]))

#True
x_2=bigram_vectorizer.fit_transform(corpus).toarray()
print(x_2)

"""
[[0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0]
 [0 0 1 0 0 1 1 0 0 2 1 1 1 0 1 0 0 0 1 1 0]
 [1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0]
 [0 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1]]
"""
技术图片

sklearn中模型抽取

标签:rds   top   let   word   图像   imp   RoCE   mic   ==   

原文地址:https://www.cnblogs.com/cmybky/p/11772638.html

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