sklearn.datasets.make_regression()
make_regression()
是 sklearn.datasets
提供的 合成回归数据集生成工具,用于 创建模拟的回归数据,适用于 机器学习模型测试、特征工程、算法研究。
1. make_regression()
作用
- 生成可控的回归数据集(指定特征数、噪声、冗余特征等)。
- 测试回归模型(如
线性回归
、XGBoost
)。 - 研究特征选择、噪声影响、正则化等问题。
2. make_regression()
代码示例
(1) 生成回归数据
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# 生成数据(100 个样本,1 个特征,添加 10 的噪声)
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)
# 可视化数据
plt.scatter(X, y)
plt.title("合成回归数据")
plt.xlabel("Feature")
plt.ylabel("Target")
plt.show()
解释
n_samples=100
:生成100
个样本。n_features=1
:每个样本1
个特征(便于可视化)。noise=10
:添加10
的噪声,使数据更接近真实情况。
(2) 生成多特征回归数据
X, y = make_regression(n_samples=200, n_features=3, noise=5, random_state=42)
print("特征矩阵形状:", X.shape)
print("目标变量形状:", y.shape)
输出
特征矩阵形状: (200, 3)
目标变量形状: (200,)
解释
- 3 个特征,可用于多元回归任务。
3. make_regression()
的参数
make_regression(n_samples=100, n_features=20, n_informative=2, noise=0.0,
bias=0.0, effective_rank=None, tail_strength=0.5, random_state=None)
参数 | 说明 |
---|---|
n_samples | 样本数(默认 100 ) |
n_features | 总特征数(默认 20 ) |
n_informative | 有效特征数(影响目标值) |
noise | 噪声强度(默认 0.0 ,值越大噪声越大) |
bias | 目标值的偏置(默认 0.0 ) |
effective_rank | 低秩数据的秩(用于生成相关特征) |
tail_strength | 低秩数据的尾部强度 |
random_state | 随机种子,保证结果可复现 |
4. 生成稀疏特征的回归数据
X, y = make_regression(n_samples=100, n_features=10, n_informative=2, noise=5, random_state=42)
print("特征矩阵形状:", X.shape)
print("目标变量形状:", y.shape)
解释
n_informative=2
只有2
个特征真正影响y
,其余8
个是噪声。
5. make_regression()
vs. 其他数据集生成函数
方法 | 适用情况 | 作用 |
---|---|---|
make_classification() | 分类任务 | 生成 分类数据 |
make_regression() | 回归任务 | 生成 线性回归数据 |
make_blobs() | 聚类任务 | 生成高斯分布的聚类数据 |
make_moons() | 非线性分类 | 生成新月形数据 |
make_circles() | 非线性分类 | 生成环形数据 |
6. 适用场景
- 模拟回归任务(测试回归算法)。
- 研究特征选择(观察冗余特征、有效特征的影响)。
- 分析噪声对模型的影响(调整
noise
)。
7. 结论
make_regression()
用于生成合成回归数据,支持 调整特征数量、噪声、相关性,适用于 机器学习研究和算法测试。