我构建了一个模块来预测两个变量X和Y的n阶多项式结果
当我比较这个模型产生的系数时,它们与其他方法(JMP)在数量级上是不同的。当运行六阶回归时,这不是什么大问题,因为即使系数不匹配,预测值也会匹配(我的代码与JMP)。然而,由于使用了高阶多项式,我遇到了JMP没有遇到的过度拟合问题,我认为这些系数表明我做错了什么。由于数据居中,我已尝试设置fit_intercept=false
,但不确定还可以尝试什么
代码:
import pandas as pd
from sklearn import linear_model
def nth_order_surface(i, n):
df = i
ln = len(df.columns)
l = 0
X_nth = ['X Coord', 'Y Coord']
Y_nth = ['Var']
for m in range(2, n + 1):
z = m
c = 0
while c != z + 1:
a = z-c
b = c
j = (df['X Coord']**(a))*(df['Y Coord']**(b))
header = 'X' + str(a) + 'Y' + str(b)
df.insert(ln + l, header, j)
X_nth.append(header)
c += 1
l += 1
regr_nth = linear_model.LinearRegression()
#print(df[X_nth])
regr_nth.fit(df[X_nth], df['Var'])
Pcd_nth = regr_nth.predict(df[X_nth])
df.insert(l + 1, 'pVar ' + str(n) +'th', Pcd_nth)
return df, regr_nth.coef_, X_nth
采用相同数据集的方法对一阶系数进行抽样
我的代码X1Y0 = -2.08E-16
JMPX1Y0 = 3.6E-6
非常感谢您提供的任何帮助
目前没有回答
相关问题 更多 >
编程相关推荐