用python实现线性回归

一、简介

这里简单介绍了线性回归模型,本文简单介绍如何用python实现线性回归。

二、sklearn接口

2.1 模型参数

from sklearn.linear_model import LinearRegression

LinearRegression(
    *,

	# 是否计算intercept项,即β0
    fit_intercept=True,

	# 是否进行中心化
    normalize=False,
    copy_X=True,
    n_jobs=None,
    positive=False,
)

2.2 常用属性和方法

  • coef_:回归系数
  • intercept_:截距
  • fit(X, y):进行训练
  • predict(X):进行预测
  • score(X, y):计算R 2 R^2R2

2.3 示例

sklearn.datasets.load_boston数据集为例进行分析,该数据集共有506个样本,每个样本有13个特征。将数据集划分为训练集和测试集。

X_train, X_test, y_train, y_test = train_test_split(X, y)
lr.fit(X_train, y_train)

系数

lr.coef_

输出

array([-1.33974405e-01,  6.05602666e-02, -1.18793418e-02,  1.79051844e+00,
       -1.60463381e+01,  3.30079307e+00, -1.14998111e-03, -1.59027967e+00,
        3.54043873e-01, -1.38949875e-02, -9.59143723e-01,  1.07000061e-02,
       -5.21722227e-01])

截距

lr.intercept_

输出

39.52557564438915

计算训练集和测试集上的准确度

lr.score(X_train, y_train)
lr.score(X_test, y_test)

输出

0.7410334747684911
0.724084695136594

三、statsmodels接口

3.1 模型参数

import statsmodels.api as sm

sm.OLS(endog, exog=None, missing='none', hasconst=None, **kwargs)
  • endog:响应变量y yy
  • exog:自变量X XX,但要注意不包含全1 11列,即没有截距项,因此要通过X = sm.add_constant(X)加上全1 11
  • missing:对缺失值的处理方式,可选'none', 'drop', and 'raise'none的话,不做任何处理;drop的话,进行丢弃;raise的话,抛出错误。

3.2 模型常用属性和方法

  • fit(X, y):进行训练
  • predict(X):进行预测
  • summary/summary2:得到总结

3.3 示例

还是以sklearn.datasets.load_boston数据集为例进行分析。

先增加全1 11

X_train = sm.add_constant(X_train)
X_test = sm.add_constant(X_test)

然后进行训练

ols = sm.OLS(y_train, X_train)
results = ols.fit()

查看总结

results.summary2()

输出

在这里插入图片描述


版权声明:本文为TSzero原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。