主动学习 Active Learning-2
2016-09-01 10:29
148 查看
1. 导入20 新闻组数据集
为了更快操作,我们只对4个分类进行研究
我们导入文件的列表去匹配这些分类(随机打乱)
target_names是
这些文件是在data里
主动学习算法需要一个类标签给每一个文档在训练集中。这样,类就是新闻组的名字,也是每一个文件的文档名
为了加速,scikit-learn导入目标属性作为integers的数列,它们与类名的索引一致,储存在target—names列表里。类的id储存在target里。
2. 从文本文件中提取特征
为了运用机器学习,首先将文档内容转换成数值特征向量。
bags of words
1)给每个出现在训练集的文档中每个字一个固定的id
2)对于每个文档(i),查每个单词出现的次数然后将他们储存在X【i,j】,这里j为每个字的索引
bags of words 表示n_features 是库里明显字的数量,这个数量通常大于100,000。
Tokenizing text
文本预处理,标记和过滤--停止字是被包含在一个高层次的部分里---能够建立一个特征的字典然后将文档转换成特征向量
CountVectorizer 支持N-grams的字或间接字符的总数。一旦合适,矢量器就建了一个特征索引词典
每一个字的索引值与它在整个训练库的概率相对应。
From occurences to frequencies
出现总数问题:长一点的文档将获得高的平均数值比短一点的文档。为了避免这些潜在的矛盾,它将每个字在一个文档的出现总数除以文档的字的总数。这些新的特征叫做tf(Term frequencies).另一个对tf上面的提炼是去缩减字的重量(这些字是出现在库中多篇文档,所以有很好的信息量比那些只出现在库中少部分)。这个缩减方法叫tf-idf(terms frequency times inverse document frequency)
上面例子中,fit()方法是我们的估量器适应我们的数据,然后tranform()去转换count-matrix to a tf-idf。所以合成:
为了更快操作,我们只对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)
相关文章推荐
- 主动学习 active learning-1
- 主动学习综述(ACTIVE LEARNING)
- Active learning(主动学习)
- 主动学习 active learning(简单例子)
- Active Learning 主动学习
- Active Learning主动学习
- 主动学习(Active Learning)
- Active Learning 主动学习
- 主动学习——active learning
- 俞敏洪:我让女儿主动学习的秘密
- 俞敏洪:我让女儿主动学习的秘密
- 俞敏洪:我让女儿主动学习的秘密
- 与算法无关的机器学习方法之主动学习
- 俞敏洪:我让女儿主动学习的秘密
- 主动学习与半监督学习Active-learning and Semi-supervised learning
- [转] 俞敏洪:我让女儿主动学习的秘密,你也可以学会!
- 技术感悟---主动学习
- 俞敏洪:我让女儿主动学习的秘密
- 俞敏洪:我让女儿主动学习的秘密
- 杂谈:学习需要主动和坚持