0

我使用 patsy cr(使用自然样条曲线)平滑了一组特征,但与看起来非常基本的东西混淆了。这是 patsy 的示例原始数据点和相应的平滑点。

x = df[feature]
y = np.log(df['varTarget'])
    
x_val = 100
#y_val = np.log(df_val['varTarget'])        

x_basis = cr(x, df=10, constraints="center", lower_bound=x.min(), upper_bound=x.max())    
x_basis_val = cr(x_val, df=10, constraints="center", lower_bound=x.min(), upper_bound=x.max())

# Fit model to the data
# this model uses an input x_basis with 10 columns created through cr
model = LinearRegression().fit(x_basis, y)

# Get estimates
y_hat = model.predict(x_basis)
y_hat_val = model.predict(x_basis_val)

plt.figure(figsize=(17,7))
plt.scatter(x, y, s=4, color="tab:blue")
plt.scatter(x, y_hat, s=8, color="tab:red")

和情节:

在此处输入图像描述

因此,基于平滑点的线性回归模型需要 10 列的输入。这是由 cr 创建的。所以假设在生产中我有一个新的 x = 100。那么我怎样才能根据已经创建的平滑线获得新 x 的平滑值?

尝试使用一个值时,我得到以下信息:

无法计算 n_inner_knots(=4) + 2 个不同的结:在 lower_bound(=30.023212890625) 和 upper_bound(=998.42234375) 之间找到 1 个数据值。

4

0 回答 0