一、简介
这里简单介绍了线性回归模型,本文简单介绍如何用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 yyexog:自变量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版权协议,转载请附上原文出处链接和本声明。