sklearn多元线性回归系数与其他方法不同的数量级(JMP)

2024-06-20 14:55:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我构建了一个模块来预测两个变量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

非常感谢您提供的任何帮助


Tags: 数据方法代码importdfmodelfitheader