新闻组数据集加载指南

机器学习领域,文本分类是一个常见的任务。20个新闻组数据集是一个广泛使用的基准数据集,它包含了约2万个新闻组帖子,涵盖了20个不同的类别。本文将介绍如何使用Python的scikit-learn库来加载和处理这个数据集。

数据集概览

20个新闻组数据集包含了大量的文本数据,这些数据可以用于训练文本分类模型。数据集中的每个帖子都被标记了一个类别,这使得它成为一个监督学习问题。数据集的维度为1,意味着每个样本只有一个特征,即文本内容。

参数设置

在加载数据集时,可以通过设置不同的参数来定制数据加载的行为。以下是一些常用的参数及其说明:

data_home: str or path-like, default=None 指定数据集的下载和缓存文件夹。如果为None,则所有scikit-learn数据存储在‘~/scikit_learn_data’子文件夹中。 subset: {'train', 'test', 'all'}, default='train' 选择要加载的数据集:'train'表示训练集,'test'表示测试集,'all'表示两者都有,且顺序是随机的。 categories: array-like, dtype=str, default=None 如果为None(默认),则加载所有类别。如果不为None,则为要加载的类别名称列表(其他类别将被忽略)。 shuffle: bool, default=True 是否对数据进行随机打乱。对于假设样本是独立同分布(i.i.d.)的模型(如随机梯度下降)来说,这可能很重要。 random_state: int, RandomState instance or None, default=42 确定数据集随机打乱时的随机数生成。传递一个整数可以获得跨多次函数调用的可重复输出。 remove: tuple, default=() 可能包含('headers', 'footers', 'quotes')的任意子集。这些是将从新闻组帖子中检测并移除的文本类型,以防止分类器过度拟合在元数据上。 download_if_missing: bool, default=True 如果为False,在数据本地不可用时,而不是尝试从源站点下载数据,会引发OSError。 return_X_y: bool, default=False 如果为True,则返回(data.data, data.target)而不是Bunch对象。 n_retries: int, default=3 当遇到HTTP错误时重试的次数。 delay: float, default=1.0 重试之间的秒数。

返回值

加载数据集后,将返回一个Bunch对象,其中包含以下属性:

data: list of shape (n_samples,) 要学习的数据列表。 target: ndarray of shape (n_samples,) 目标标签。 filenames: list of shape (n_samples,) 数据的位置路径。 DESCR: str 数据集的完整描述。 target_names: list of shape (n_classes,) 目标类别的名称。 (data, target): tuple if return_X_y=True 如果return_X_y=True,则返回两个ndarray的元组。第一个包含一个形状为(n_samples, n_classes)的2D数组,每行代表一个样本,每列代表一个特征。第二个数组的形状为(n_samples,),包含目标样本。

示例代码

以下是如何使用scikit-learn加载20个新闻组数据集的示例代码:

from sklearn.datasets import fetch_20newsgroups cats = ['alt.atheism', 'sci.space'] newsgroups_train = fetch_20newsgroups(subset='train', categories=cats) print(list(newsgroups_train.target_names)) print(newsgroups_train.filenames.shape) print(newsgroups_train.target.shape) print(newsgroups_train.target[:10])

这段代码首先导入了fetch_20newsgroups函数,然后定义了要加载的类别,接着加载了训练集,并打印了目标类别名称、文件名数量、目标标签形状以及前10个目标标签的值。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485