【scikit-learn】sklearn.datasets.load_diabetes() 函数:糖尿病回归数据集
load_diabetes()是sklearn.datasets提供的糖尿病回归数据集,用于回归任务,适用于机器学习算法测试和回归问题研究。load_diabetes()提供了442个样本,用于回归任务,适用于糖尿病预测、特征工程研究。数据已标准化,需要逆变换回原始数值以进行可解释性分析。
·
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 个样本,用于回归任务,适用于 糖尿病预测、特征工程研究。- 数据已 标准化,需要 逆变换回原始数值 以进行可解释性分析。
更多推荐

所有评论(0)