【scikit-learn】sklearn.datasets.fetch_openml() 函数:获取 OpenML 数据集

sklearn.datasets.fetch_openml()

fetch_openml()sklearn.datasets 提供的 开放数据集接口,可从 OpenML 平台下载 真实世界数据集,适用于 机器学习研究和模型测试


1. fetch_openml() 作用

  • 访问 OpenML 平台上的数据集,无需手动下载 CSV 文件。
  • 数据可直接用于 Pandas 或 NumPy,兼容 scikit-learn
  • 适用于分类、回归、聚类任务,数据量大且丰富。

2. fetch_openml() 代码示例

(1) 下载 MNIST 数据集

from sklearn.datasets import fetch_openml

# 下载 MNIST 数据集
mnist = fetch_openml("mnist_784", version=1, as_frame=False)

# 获取特征矩阵和目标变量
X, y = mnist.data, mnist.target

print("特征矩阵形状:", X.shape)
print("目标变量形状:", y.shape)

输出

特征矩阵形状: (70000, 784)
目标变量形状: (70000,)

解释

  • X.shape = (70000, 784):包含 70,00028×28 手写数字图片,每个样本展平成 784 个像素
  • y.shape = (70000,):每个样本的数字标签 (0-9)。

(2) 可视化 MNIST 数据

import matplotlib.pyplot as plt
import numpy as np

# 随机选取一张图片
index = np.random.randint(0, 70000)
image = X[index].reshape(28, 28)  # 变回 28×28 图片
label = y[index]

# 显示手写数字
plt.imshow(image, cmap="gray")
plt.title(f"Label: {label}")
plt.show()

解释

  • X[index].reshape(28, 28):从 784 维数据恢复 28×28 图片。
  • plt.imshow() 可视化手写数字。

3. fetch_openml() 数据格式

print(type(mnist))

输出

<class 'sklearn.utils._bunch.Bunch'>

解释

  • fetch_openml() 返回 Bunch 对象,类似于字典,可通过 .data.target 访问数据

(3) 转换为 Pandas DataFrame

import pandas as pd

# 下载 Titanic 数据集
titanic = fetch_openml("titanic", version=1, as_frame=True)

# 转换为 DataFrame
df = titanic.frame

print(df.head())

输出

   pclass  survived       name     sex   age  sibsp  parch  ticket     fare  cabin embarked  boat  body home.dest
0       1         1  Allen, Mr  female  29.0      0      0  24160  211.3375     B5        S     2   NaN       NaN
1       1         1  Allison,   female   2.0      1      2  113781  151.5500  C22 C26        S    11   NaN Montreal
2       1         0  Allison,     male  30.0      1      2  113781  151.5500  C22 C26        S   NaN  135.0 Montreal
3       1         0  Allison,     male  25.0      1      2  113781  151.5500  C22 C26        S   NaN   NaN Montreal
4       1         0  Allison,     male  48.0      1      2  113781  151.5500  C22 C26        S   NaN   NaN Montreal

解释

  • as_frame=True 返回 Pandas DataFrame,适用于数据分析。

4. fetch_openml() 参数

fetch_openml(data_id=None, name=None, version="active", as_frame=False, parser="auto", cache=True)
参数说明
data_idOpenML 数据集 ID(如 mnist_784
nameOpenML 数据集名称
version选择数据集的版本
as_frame是否返回 Pandas DataFrame(默认 False
cache是否缓存数据(默认 True

5. 适用场景

  • 获取真实世界数据集,用于分类、回归、聚类任务。
  • 避免手动下载数据,提高实验效率
  • 可直接用于 scikit-learn 模型训练

6. fetch_openml() vs. 其他数据集

方法适用情况作用
fetch_openml()获取真实数据集访问 OpenML 数据库
fetch_california_housing()房价预测回归任务
load_digits()手写数字多分类任务
load_diabetes()糖尿病预测回归任务

7. 结论

  • fetch_openml() 用于访问 OpenML 平台的数据集,适用于 机器学习研究真实世界数据分析
  • 可以 下载分类、回归、文本等各种类型的数据集,并 转换为 Pandas 进行分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

彬彬侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值