主动学习 Active Learning-2

1. 导入20 新闻组数据集

为了更快操作,我们只对4个分类进行研究

>>> categories = ['alt.atheism', 'soc.religion.christian',
...               'comp.graphics', 'sci.med']
我们导入文件的列表去匹配这些分类(随机打乱)

>>> from sklearn.datasets import fetch_20newsgroups
>>> twenty_train = fetch_20newsgroups(subset='train',
...     categories=categories, shuffle=True, random_state=42)
target_names是

>>> twenty_train.target_names
['alt.atheism', 'comp.graphics', 'sci.med', 'soc.religion.christian']
这些文件是在data里

>>> len(twenty_train.data)
2257
>>> len(twenty_train.filenames)
2257
主动学习算法需要一个类标签给每一个文档在训练集中。这样,类就是新闻组的名字,也是每一个文件的文档名

为了加速,scikit-learn导入目标属性作为integers的数列,它们与类名的索引一致,储存在target—names列表里。类的id储存在target里。

>>> twenty_train.target[:10]
array([1, 1, 3, 3, 3, 3, 3, 2, 2, 2])
2. 从文本文件中提取特征

为了运用机器学习,首先将文档内容转换成数值特征向量。

bags of words

1)给每个出现在训练集的文档中每个字一个固定的id

2)对于每个文档(i),查每个单词出现的次数然后将他们储存在X【i,j】,这里j为每个字的索引

bags of words 表示n_features 是库里明显字的数量,这个数量通常大于100,000。

Tokenizing text 

文本预处理,标记和过滤--停止字是被包含在一个高层次的部分里---能够建立一个特征的字典然后将文档转换成特征向量

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> count_vect = CountVectorizer()
>>> X_train_counts = count_vect.fit_transform(twenty_train.data)
>>> X_train_counts.shape
(2257, 35788)
CountVectorizer 支持N-grams的字或间接字符的总数。一旦合适,矢量器就建了一个特征索引词典

>>> count_vect.vocabulary_.get(u'algorithm')
4690
每一个字的索引值与它在整个训练库的概率相对应。

From occurences to frequencies

出现总数问题:长一点的文档将获得高的平均数值比短一点的文档。为了避免这些潜在的矛盾,它将每个字在一个文档的出现总数除以文档的字的总数。这些新的特征叫做tf(Term frequencies).另一个对tf上面的提炼是去缩减字的重量(这些字是出现在库中多篇文档,所以有很好的信息量比那些只出现在库中少部分)。这个缩减方法叫tf-idf(terms frequency times inverse document frequency)

>>> from sklearn.feature_extraction.text import TfidfTransformer
>>> tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts)
>>> X_train_tf = tf_transformer.transform(X_train_counts)
>>> X_train_tf.shape
(2257, 35788)

上面例子中,fit()方法是我们的估量器适应我们的数据,然后tranform()去转换count-matrix to a tf-idf。所以合成:

>>> tfidf_transformer = TfidfTransformer()
>>> X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
>>> X_train_tfidf.shape
(2257, 35788)





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值