fetch_openml#

sklearn.datasets.fetch_openml(name: str | None = None, *, version: str | int = 'active', data_id: int | None = None, data_home: str | PathLike | None = None, target_column: str | List | None = 'default-target', cache: bool = True, return_X_y: bool = False, as_frame: str | bool = 'auto', n_retries: int = 3, delay: float = 1.0, parser: str = 'auto', read_csv_kwargs: Dict | None = None)[source]#

按名称或数据集 ID 从 openml 获取数据集。

数据集通过整数 ID 或名称和版本组合(例如,同一个“iris”数据集可能存在多个版本)唯一标识。请提供名称或 data_id(不能同时提供)。如果提供了名称,也可以提供版本。

用户指南中阅读更多信息。

0.20 版本新增。

注意

实验性

此 API 具有实验性(特别是返回值结构),在未来的版本中,可能会在没有通知或警告的情况下进行小的向后不兼容的更改。

参数:
namestr, default=None

数据集的字符串标识符。请注意,OpenML 可能有多个同名数据集。

versionint 或 ‘active’,默认=’active’

数据集的版本。只能在提供 name 的情况下提供。如果为 'active',则使用仍然处于活动状态的最旧版本。由于数据集可能存在多个活动版本,并且这些版本可能彼此根本不同,因此强烈建议设置确切的版本。

data_idint, 默认=None

数据集的 OpenML ID。获取数据集最具体的方式。如果未提供 data_id,则使用名称(和可能的版本)来获取数据集。

data_homestr or path-like, default=None

为数据集指定另一个下载和缓存文件夹。默认情况下,所有 scikit-learn 数据都存储在“~/scikit_learn_data”子文件夹中。

target_columnstr, 列表 或 None, 默认=’default-target’

指定数据中用作目标的列名。如果为“default-target”,则使用存储在服务器上的标准目标列。如果为 None,则所有列都作为数据返回,目标为 None。如果为列表(字符串列表),则所有具有这些名称的列都作为多目标返回(注意:并非所有 scikit-learn 分类器都能处理所有类型的多输出组合)。

cachebool, 默认=True

是否将下载的数据集缓存到 data_home 中。

return_X_ybool, default=False

如果为 True,则返回 (data, target) 而不是 Bunch 对象。有关 datatarget 对象的更多信息,请参阅下文。

as_framebool 或 ‘auto’, 默认=’auto’

如果为 True,则数据是 pandas DataFrame,包括具有适当 dtypes(数字、字符串或分类)的列。目标是 pandas DataFrame 或 Series,具体取决于 target_columns 的数量。Bunch 将包含一个带有目标和数据的 frame 属性。如果 return_X_y 为 True,则 (data, target) 将是如上所述的 pandas DataFrame 或 Series。

如果 as_frame 为 ‘auto’,则数据和目标将转换为 DataFrame 或 Series,就像 as_frame 设置为 True 一样,除非数据集以稀疏格式存储。

如果 as_frame 为 False,则数据和目标将是 NumPy 数组,并且当 parser="liac-arff" 时,data 将只包含数值,其中类别在 Bunch 实例的 categories 属性中提供。当 parser="pandas" 时,不进行序数编码。

版本 0.24 中的更改: as_frame 的默认值在 0.24 版本中从 False 更改为 'auto'

n_retriesint, default=3

遇到 HTTP 错误或网络超时时的重试次数。状态码为 412 的错误不会重试,因为它们表示 OpenML 通用错误。

delayfloat, default=1.0

Number of seconds between retries.

parser{“auto”, “pandas”, “liac-arff”}, 默认=”auto”

用于加载 ARFF 文件的解析器。实现了两个解析器

  • "pandas": 这是最有效的解析器。但是,它需要安装 pandas 并且只能打开密集数据集。

  • "liac-arff": 这是一个纯 Python ARFF 解析器,内存和 CPU 效率低得多。它处理稀疏 ARFF 数据集。

如果为 "auto",则自动选择解析器,稀疏 ARFF 数据集选择 "liac-arff",否则选择 "pandas"

1.2 版本新增。

版本 1.4 中的更改: parser 的默认值从 "liac-arff" 更改为 "auto"

read_csv_kwargsdict, 默认=None

从 ARFF 文件加载数据并使用 pandas 解析器时,传递给 pandas.read_csv 的关键字参数。它可以允许覆盖一些默认参数。

在版本 1.3 中新增。

返回:
dataBunch

Dictionary-like object, with the following attributes.

datanp.array, scipy.sparse.csr_matrix of floats, 或 pandas DataFrame

特征矩阵。分类特征被编码为序数。

targetnp.array, pandas Series 或 DataFrame

回归目标或分类标签(如果适用)。如果为数字,则 dtype 为 float;如果为分类,则为 object。如果 as_frame 为 True,则 target 为 pandas 对象。

DESCRstr

The full description of the dataset.

feature_nameslist

数据集列的名称。

target_names: list

The names of the target columns.

版本 0.22 新增。

categoriesdict 或 None

将每个分类特征名称映射到值列表,使得编码为 i 的值是列表中的第 i 个。如果 as_frame 为 True,则此为 None。

detailsdict

来自 OpenML 的更多元数据。

framepandas DataFrame

仅当 as_frame=True 时存在。包含 datatarget 的 DataFrame。

(data, target)tuple if return_X_y is True

注意

实验性

此接口是实验性的,后续版本可能会在没有通知的情况下更改属性(尽管 datatarget 应该只有微小的更改)。

“data”中的缺失值表示为 NaN。“target”中的缺失值表示为 NaN(数值目标)或 None(分类目标)。

注意事项

"pandas""liac-arff" 解析器可能导致输出中不同的数据类型。显著差异如下

  • "liac-arff" 解析器始终将分类特征编码为 str 对象。相反,"pandas" 解析器在读取时推断类型,并在可能的情况下将数值类别转换为整数。

  • "liac-arff" 解析器使用 float64 来编码元数据中标记为“REAL”和“NUMERICAL”的数值特征。"pandas" 解析器则推断这些数值特征是否对应于整数,并使用 pandas 的 Integer 扩展 dtype。

  • 特别是,带有整数类别的分类数据集通常使用 "pandas" 解析器加载为 (0, 1, ...),而 "liac-arff" 将强制使用字符串编码的类别标签,例如 "0""1" 等。

  • "pandas" 解析器不会从字符串列中去除单引号 - 即 '。例如,字符串 'my string' 将保持原样,而 "liac-arff" 解析器将去除单引号。对于分类列,单引号将从值中去除。

此外,当使用 as_frame=False 时,"liac-arff" 解析器返回序数编码的数据,其中类别在 Bunch 实例的 categories 属性中提供。相反,"pandas" 返回一个未编码类别的 NumPy 数组。

示例

>>> from sklearn.datasets import fetch_openml
>>> adult = fetch_openml("adult", version=2)
>>> adult.frame.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 48842 entries, 0 to 48841
Data columns (total 15 columns):
 #   Column          Non-Null Count  Dtype
---  ------          --------------  -----
 0   age             48842 non-null  int64
 1   workclass       46043 non-null  category
 2   fnlwgt          48842 non-null  int64
 3   education       48842 non-null  category
 4   education-num   48842 non-null  int64
 5   marital-status  48842 non-null  category
 6   occupation      46033 non-null  category
 7   relationship    48842 non-null  category
 8   race            48842 non-null  category
 9   sex             48842 non-null  category
 10  capital-gain    48842 non-null  int64
 11  capital-loss    48842 non-null  int64
 12  hours-per-week  48842 non-null  int64
 13  native-country  47985 non-null  category
 14  class           48842 non-null  category
dtypes: category(9), int64(6)
memory usage: 2.7 MB