弗里德曼回归问题 #1 是一个经典的回归分析问题,由J. Friedman和L. Breiman提出。该问题通过生成一组具有多个特征的数据集来模拟回归问题。在这个问题中,输入特征X在区间[0, 1]上均匀分布,而输出y是根据特定的公式计算得出的。
输出y的计算公式如下:
y(X) = 10 * sin(pi * X[:, 0] * X[:, 1]) + 20 * (X[:, 2] - 0.5) ** 2 + 10 * X[:, 3] + 5 * X[:, 4] + noise * N(0, 1)
在n_features个特征中,只有5个特征实际用于计算y。其余特征与y无关。特征的数量必须大于或等于5。
该问题可以通过Python中的scikit-learn库来生成相应的数据集。以下是生成弗里德曼回归问题 #1 数据集的代码示例:
from sklearn.datasets import make_friedman1
# 设置参数
n_samples = 100 # 样本数量
n_features = 10 # 特征数量
noise = 0.0 # 高斯噪声的标准差
random_state = 42 # 随机状态,用于可重复性
# 生成数据集
X, y = make_friedman1(n_samples=n_samples, n_features=n_features, noise=noise, random_state=random_state)
# 查看数据集的形状
print(X.shape) # 输出: (100, 10)
print(y.shape) # 输出: (100,)
print(list(y[:3])) # 输出: [np.float64(16.8...), np.float64(5.8...), np.float64(9.4...)]
通过上述代码,可以生成一个包含100个样本和10个特征的数据集,其中只有5个特征与输出y相关。此外,还可以通过调整noise参数来控制输出y中的噪声水平。