Scikit-learn文本聚类实例分析
admin
2023-08-03 06:28:22
0
# -*- coding=utf-8 -*-
"""
text category
"""
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics', 'sci.med']
twenty_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)
print len(twenty_train.data)
len(twenty_train.filenames)
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(twenty_train.data)
print X_train_counts.shape
print count_vect.vocabulary_.get('algorithm')
tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts)
X_train_tf = tf_transformer.transform(X_train_counts)
print X_train_tf.shape
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tf_transformer.fit_transform(X_train_counts)
print X_train_tfidf.shape
clf = MultinomialNB().fit(X_train_tfidf, twenty_train.target)
docs_new = ['God is love', 'OpenGl on the Gpu is fast']
X_new_counts = count_vect.transform(docs_new)
X_new_tfidf = tfidf_transformer.fit_transform(X_new_counts)
predicted = clf.predict(X_new_tfidf)
for doc, category in zip(docs_new, predicted):
    print '%r=>%s' % (doc, twenty_train.target_names[category]

对fetch_20newsgroups中的2257条文档进行分类

  1. 统计每个词出现的次数

  2. 用tf-idf统计词频,tf是在一个文档里每个单词出现的次数除以文档的单词总数,idf是总的文档数除以包含该单词的文档数,再取对数;tf * idf就是这里用到的值,值越大表明单词越重要,或越相关。

例子具体做法:

  1. 先计算了每个单词出现的次数

  2. 然后计算了tf-idf值

  3. 然后带入模型进行训练

  4. 最后预测了两个新文档的类型

结果:

'God is love'=> soc.religion.christian
'OpenGL on the GPU is fast'=> comp.graphics

相关内容

热门资讯

美发射商业航天器抬升天文卫星轨... 据新华社洛杉矶电 (记者谭晶晶)美国航空航天局3日表示,一枚商业航天器当天从马绍尔群岛升空,部署至预...
大学宿舍智能人走断电管理系统优... 大学宿舍智能断电管理系统概述 在校园中、宿舍用电管理常面临诸多挑战和例如长期无人入住房间依然耗费电力...
“巴威”登陆的这一夜,直击杭州... 潮新闻客户端 记者 盛锐 通讯员 郑熠炯 刚刚,今年第9号台风“巴威”(台风级)的中心已于今天(11...
原创 科... 我们从小就听说,太阳还有50亿年的寿命,等50亿年后太阳变成红巨星,才会吞噬地球,人类还有足够长的时...
权威数读丨一周“靓”数 2026年全国夏粮产量首次突破3000亿斤;今年上半年,我国新能源汽车产销量双超700万辆;上半年,...
挪威队1:2被英格兰队逆转、无... 【环球网报道 记者 索炎琦】北京时间12日,在迈阿密体育场进行的一场美加墨世界杯四分之一决赛中,英格...
“巴威”进入24小时警戒,如何... 7月10日下午3时,台风“巴威”进入24小时警戒线。这条线的跨越,意味着它不再仅仅是卫星云图上一个移...
FF宣布注销536万份认股权证... 红星资本局7月11日消息 Faraday Future(简称“FF”)官微7月11日宣布两项举措:再...
挨个敲开大货车的门,他在台风来... 澎湃新闻记者 徐亦嘉咚咚咚!孙如意沿着街边停放的一排集卡(集装箱卡车)挨个敲车门,拔高嗓门冲里喊,“...
和已故的人“再说一次话”:AI... 一位年轻女性坐在电脑前,通过屏幕上的对话框,跟她去世的祖母说话。 对方给出的回应,语气、措辞,甚至带...