Dataset:fetch_20newsgroups(20类新闻文本)数据集的简介、安装、使用方法之详细攻略

Dataset:fetch_20newsgroups(20类新闻文本)数据集的简介、安装、使用方法之详细攻略

目录

fetch_20newsgroups(20类新闻文本)数据集的简介

1、数据集信息

2、数据集标签20类别

3、数据集前三篇文章

fetch_20newsgroups(20类新闻文本)数据集的安装

fetch_20newsgroups(20类新闻文本)数据集的使用方法



fetch_20newsgroups(20类新闻文本)数据集的简介

        20 newsgroups数据集18000多篇新闻文章,一共涉及到20种话题,所以称作20newsgroups text dataset,分为两部分:训练集和测试集,通常用来做文本分类,均匀分为20个不同主题的新闻组集合。20newsgroups数据集是被用于文本分类、文本挖据和信息检索研究的国际标准数据集之一。一些新闻组的主题特别相似(e.g. comp.sys.ibm.pc.hardware/ comp.sys.mac.hardware),还有一些却完全不相关 (e.g misc.forsale /soc.religion.christian)。

1、数据集信息

数据集形状 (18846,)

    =================   ==========
    Classes                     20
    Samples total            18846
    Dimensionality               1
    Features                  text
    =================   ==========

2、数据集标签20类别

 ['alt.atheism', 'comp.graphics', 'comp.os.ms-windows.misc', 'comp.sys.ibm.pc.hardware', 'comp.sys.mac.hardware', 'comp.windows.x', 'misc.forsale', 'rec.autos', 'rec.motorcycles', 'rec.sport.baseball', 'rec.sport.hockey', 'sci.crypt', 'sci.electronics', 'sci.med', 'sci.space', 'soc.religion.christian', 'talk.politics.guns', 'talk.politics.mideast', 'talk.politics.misc', 'talk.religion.misc']


3、数据集前三篇文章

 ["From: Mamatha Devineni Ratnam <mr47+@andrew.cmu.edu>\nSubject: Pens fans reactions\nOrganization: Post Office, Carnegie Mellon, Pittsburgh, PA\nLines: 12\nNNTP-Posting-Host: po4.andrew.cmu.edu\n\n\n\nI am sure some bashers of Pens fans are pretty confused about the lack\nof any kind of posts about the recent Pens massacre of the Devils. Actually,\nI am  bit puzzled too and a bit relieved. However, I am going to put an end\nto non-PIttsburghers' relief with a bit of praise for the Pens. Man, they\nare killing those Devils worse than I thought. Jagr just showed you why\nhe is much better than his regular season stats. He is also a lot\nfo fun to watch in the playoffs. Bowman should let JAgr have a lot of\nfun in the next couple of games since the Pens are going to beat the pulp out of Jersey anyway. I was very disappointed not to see the Islanders lose the final\nregular season game.          PENS RULE!!!\n\n", 'From: mblawson@midway.ecn.uoknor.edu (Matthew B Lawson)\nSubject: Which high-performance VLB video card?\nSummary: Seek recommendations for VLB video card\nNntp-Posting-Host: midway.ecn.uoknor.edu\nOrganization: Engineering Computer Network, University of Oklahoma, Norman, OK, USA\nKeywords: orchid, stealth, vlb\nLines: 21\n\n  My brother is in the market for a high-performance video card that supports\nVESA local bus with 1-2MB RAM.  Does anyone have suggestions/ideas on:\n\n  - Diamond Stealth Pro Local Bus\n\n  - Orchid Farenheit 1280\n\n  - ATI Graphics Ultra Pro\n\n  - Any other high-performance VLB card\n\n\nPlease post or email.  Thank you!\n\n  - Matt\n\n-- \n    |  Matthew B. Lawson <------------> (mblawson@essex.ecn.uoknor.edu)  |   \n  --+-- "Now I, Nebuchadnezzar, praise and exalt and glorify the King  --+-- \n    |   of heaven, because everything he does is right and all his ways  |   \n    |   are just." - Nebuchadnezzar, king of Babylon, 562 B.C.           |   \n']

fetch_20newsgroups(20类新闻文本)数据集的安装

手动下载地址https://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

fetch_20newsgroups(data_home=None, # 文件下载的路径
                   subset='train', # 加载那一部分数据集 train/test
                   categories=None, # 选取哪一类数据集[类别列表],默认20类
                   shuffle=True,  # 将数据集随机排序
                   random_state=42, # 随机数生成器
                   remove=(), # ('headers','footers','quotes') 去除部分文本
                   download_if_missing=True # 如果没有下载过,重新下载
                   )

news = fetch_20newsgroups(subset='all')


fetch_20newsgroups(20类新闻文本)数据集的使用方法

ML之LoR:利用pipeline对fetch_20newsgroups数据集(文本抽取TfidfVectorizer)采用SVC算法(GSCV)实现多分类
ML之NB:利用朴素贝叶斯NB算法(CountVectorizer+不去除停用词)对fetch_20newsgroups数据集(20类新闻文本)进行分类预测、评估


 

### 如何使用 K-均值 (KMeans) 进行文本 #### 使用 `fetch_20newsgroups` 数据集加载文本数据 在 Python 中,可以利用 `sklearn.datasets.fetch_20newsgroups` 函数来获取新闻数据集。此函数允许通过指定别或过滤条件(如移除头部、引用脚注等)来自定义数据子集。 ```python from sklearn.datasets import fetch_20newsgroups dataset = fetch_20newsgroups(subset='all', remove=('headers', 'footers', 'quotes')) ``` 上述代码片段会下载并返回完整的 20 Newsgroups 数据集,并去除可能干扰分析的部分[^1]。 --- #### 文本矢量化过程 为了使文本能够被机器学习算法处理,需将其转换为数值向量形式。通常采用 TF-IDF 方法完成这一目标: TF-IDF 是一种统计方法,用于评估一个词对于文档的重要性。它由两个部分组成:词频(Term Frequency, TF)和逆文档频率(Inverse Document Frequency, IDF)。以下是基于 `TfidfVectorizer` 的实现方式: ```python from sklearn.feature_extraction.text import TfidfVectorizer import time vectorizer = TfidfVectorizer( max_df=0.5, min_df=5, stop_words="english", ) t0 = time.time() X_tfidf = vectorizer.fit_transform(dataset.data) print(f"Vectorization completed in {time.time() - t0:.3f} seconds.") ``` 这里设置了最大文档频率 (`max_df`) 和最小文档频率 (`min_df`) 参数以减少噪声特征的影响;同时去除了英语停用词列表中的常见单词。 --- #### 应用 K-Means 聚算法 一旦完成了文本到矩阵的转化,就可以应用 K-Means 算法执行无监督学习任务——即寻找隐藏结构或将相似项分组在一起的过程。下面展示了如何配置和运行 K-Means 模型: ```python from sklearn.cluster import KMeans n_clusters = 20 # 设置簇的数量等于原始标签数 kmeans = KMeans(n_clusters=n_clusters, init='k-means++', random_state=42) t0 = time.time() labels_kmeans = kmeans.fit_predict(X_tfidf) print(f"Clustering finished in {time.time() - t0:.3f} seconds.") ``` 在此过程中,“init='k-means++'”选项有助于提高初始质心选择的效果从而加快收敛速度。 --- #### 结果验证与评价指标计算 尽管 K-Means 属于无监督学习范畴,但如果存在真实标记,则可以通过外部度量标准衡量其性能表现。例如调整兰德指数(Adjusted Rand Index)、互信息得分(Mutual Information Score)或者同质性和完整性分数等等。 ```python from sklearn.metrics import adjusted_rand_score, normalized_mutual_info_score true_labels = dataset.target ari = adjusted_rand_score(true_labels, labels_kmeans) nmi = normalized_mutual_info_score(true_labels, labels_kmeans) print(f"Adjusted Rand Index: {ari:.3f}") print(f"Normalized Mutual Info Score: {nmi:.3f}") ``` 这些评分反映了所生成群组与实际分之间的一致程度[^2]。 --- #### 注意事项 需要注意的是,在实践中文本是一项复杂的工程挑战,不仅依赖恰当的技术选型还需要综合考量诸如预处理步骤的有效性、超参数调优以及最终解释结果的能力等因素。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值