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

Posted

技术标签:

【中文标题】Python/Scikit-learn - 线性回归 - 访问线性回归方程【英文标题】:Python/Scikit-learn - Linear Regression - Access to Linear Regression Equation 【发布时间】:2016-05-10 02:56:36 【问题描述】:

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

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 算法使用这些“预测变量”创建了一个方程。我的问题是:我如何访问该等式?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:
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")

【讨论】:

如何传递数据框列?试了很多方法,报错,result = get_regression_formula(df, 'Year', 'AMBALA'), or result = get_regression_formula(df, df['col1'], df['col2']), print(result)跨度> @AbhilashSinghChauhan 添加使用示例

以上是关于Python/Scikit-learn - 线性回归 - 访问线性回归方程的主要内容,如果未能解决你的问题,请参考以下文章

使用Python scikit-learn 库实现神经网络算法

哪个更快?逻辑回归或线性核支持向量机?

Python---scikit-learn(sklearn)模块

python scikit-learn 环境搭建问题解决记录

将 PMML 模型导入 Python (Scikit-learn)

如何使用 Python (scikit-learn) 计算 FactorAnalysis 分数?