Python/Scikit-learn - 线性回归 - 访问线性回归方程

4

我建立了几个不同的线性回归模型,使用相同的预测变量组,如下所示:

model=LinearRegression()
model.fit(X=predictor_train,y=target_train)
prediction_train=model.predict(predictor_train)
pred=model.predict(main_frame.iloc[-1:,1:])

为了创建目标变量的预测结果,我假设Scikit算法使用这些“预测变量”创建了一个方程。我的问题是:如何访问该方程?
2个回答

6

您正在寻找 params = model.coef_。 这将返回一个数组,其中包含每个模型输入的权重。

请注意,这是一个线性方程,因此要获得自己的预测结果,您需要构建一个方程式,使得您的预测结果为y = sum([input[i] * params[i]]),如果您有一个名为input的输入数组。 如果您熟悉线性代数,则这是参数向量和特征向量之间的点积。


1
from math import fabs
import pandas as pd
from sklearn.linear_model import LinearRegression

def get_regression_formula(df, independent_vars, dependent_var):
    X = df[independent_vars]
    y = df[dependent_var]
    regression = LinearRegression()
    regression.fit(X, y)
    formula = [f"{regression.intercept_:.2f} "]
    for i, var in enumerate(independent_vars):
        coef = regression.coef_[i]
        coef_abs = fabs(coef)
        if coef_abs < 0.1:
            continue
        formula.append(f"{'+' if coef > 0 else '-'} {coef_abs:.2f} * {var} ")
    return f"{dependent_var} = {''.join(formula)}"

使用示例:

>>> df.columns
Index(['x1', 'x2', 'x3', 'y'], dtype='object')
>>> print(get_regression_formula(df, ["x1", "x2", "x3"], "y")

如何传递数据框的列? 尝试了很多方法,但出现了错误,结果 = get_regression_formula(df, 'Year', 'AMBALA'),或者结果 = get_regression_formula(df, df['col1'], df['col2']),打印(结果) - Abhilash Singh Chauhan
@AbhilashSinghChauhan 添加了用法示例。 - Mugen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接