sklearn.datasets.load_diabetes()

load_diabetes()sklearn.datasets 提供的 糖尿病回归数据集,用于 回归任务,适用于 机器学习算法测试回归问题研究


1. load_diabetes() 数据集简介

属性 说明
样本数 442
特征数 10(年龄、BMI、血压等)
任务类型 回归问题(预测糖尿病病情进展)
目标值 连续数值(范围约 25~346

2. load_diabetes() 代码示例

(1) 加载数据集

from sklearn.datasets import load_diabetes

# 加载数据
diabetes = load_diabetes()

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

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

输出

特征矩阵形状: (442, 10)
目标变量形状: (442,)
特征名称: ['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']

解释

  • X.shape = (442, 10)442 个样本,每个样本 10 个特征。
  • y.shape = (442,)442 个目标值(连续数值)。
  • feature_names:包含 年龄 (age)、BMI (bmi)、血压 (bp) 等 10 个特征。

(2) 数据集格式

print(type(diabetes))

输出

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

解释

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

(3) 转换为 Pandas DataFrame

import pandas as pd

# 转换为 DataFrame
df = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
df["target"] = diabetes.target  # 添加目标变量

print(df.head())

输出

        age       sex       bmi        bp       s1       s2       s3       s4       s5       s6  target
0  0.038076  0.050680  0.061696  0.021872 -0.044223 -0.034821 -0.043401 -0.002592  0.019907 -0.017646   151.0
1 -0.001882 -0.044642 -0.051474 -0.026328 -0.008449 -0.019163  0.074411 -0.039493 -0.068332 -0.092204    75.0
2  0.085299  0.050680  0.044451 -0.005670 -0.045599 -0.034194 -0.032356 -0.002592  0.002861 -0.025930   141.0
3 -0.089063 -0.044642 -0.011595 -0.036656  0.012191  0.024991 -0.036038  0.034309  0.022688 -0.009362   206.0
4  0.005383 -0.044642 -0.036385  0.021872  0.003935  0.015596  0.008142  0.002864  0.022687 -0.009362   135.0

解释

  • 数据已标准化,范围 [-0.2, 0.2](需要 StandardScaler() 逆变换回原值)。
  • 目标值 (target) 是糖尿病病情进展指数

3. load_diabetes() 数据分析

(1) 目标值分布

import seaborn as sns
import matplotlib.pyplot as plt

sns.histplot(df["target"], bins=30, kde=True)
plt.title("糖尿病病情进展目标值分布")
plt.show()

解释

  • 查看目标变量的分布情况,判断是否需要归一化。

(2) 特征相关性

import numpy as np
import seaborn as sns

# 计算相关性
corr_matrix = df.corr()

# 可视化
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap="coolwarm")
plt.title("特征相关性热图")
plt.show()

解释

  • 观察特征与目标变量的相关性,决定是否进行特征选择。

4. 适用场景

  • 回归任务(预测连续数值)。
  • 特征工程与数据可视化(数据已标准化)。
  • 机器学习算法测试(如 线性回归随机森林XGBoost

5. load_diabetes() vs. 其他数据集

数据集 任务类型 样本数 特征数 适用场景
load_iris() 多分类 150 4 经典分类问题
load_wine() 多分类 178 13 葡萄酒分类
load_digits() 多分类 1797 64 手写数字识别
load_diabetes() 回归 442 10 糖尿病预测
fetch_california_housing() 回归 20640 8 房价预测

6. 结论

  • load_diabetes() 提供了 442 个样本,用于回归任务,适用于 糖尿病预测、特征工程研究
  • 数据已 标准化,需要 逆变换回原始数值 以进行可解释性分析。
Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐