LinearRegression(fit_intercept,normalize,copy_X,n_jobs)
fit_intercept :
布尔类型,初始为True。决定在这个模型中是否有intercept,即偏移量,即类似于线性函数y = w1x1 + w0 中的w0。 如果False则无。
normalize:
布尔类型,初始为False。如果fit_intercept设置为False,那这个参数就会被忽略。反之,设为True,则模型在回归之前,会对特征集X减去平均数并除以L2范式(没懂),理解为一种标准化的规则。如果设为了False,而你又想标准化特征集合,则需要使用 sklearn.preprocessing.StandardScaler
类来进行预处理。
copy_X:
布尔类型,初始化为True。True则,特征集合不变,反之会被复写。
n_jobs:
The number of jobs to use for the computation
初始为None,表示用1个处理器计算;-1代表所有处理器,只用于多个目标集问题的提速和大型问题
coef_:权重矩阵,理解为线性函数y = w1x1 + w0 中的W1
intercept_ :偏移量,理解为线性函数y = w1x1 + w0 中的W0
rank_: 特征矩阵的秩
singular_:特征矩阵的奇异值
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
# y = 1 * x_0 + 2 * x_1 + 3
y = np.dot(X, np.array([1, 2])) + 3
reg = LinearRegression().fit(X, y) # 拟合调参
reg.score(X, y) # 拟合程度,1.0最高
>>>1.0
reg.coef_ # 权重矩阵
>>>array([1., 2.])
reg.intercept_ # 偏移量
>>>3.0000...
reg.predict(np.array([[3, 5]])) # 用拟合过的模型进行预测
>>>array([16.])
拓展:
score是如何计算出来的?
先看一下类定义里面的一段注释
LinearRegression fits a linear model with coefficients w = (w1, …, wp)
to minimize the residual sum of squares between the observed targets in
the dataset, and the targets predicted by the linear approximation.
简单讲就是说,线性回归意在使预测的目标值 与 数据集中的目标值 的 residual sum of squares(残差平方和)最小。
首先介绍R2、TSS、ESS和RSS
引用参考博客的一张图:
简单理解为:总体平方和是一个定值,回归平方和越大那么预测出来的目标值离回归线就越近,此时残差平方和就越小。
而R2 = ESS/RSS = 1 - RSS/TSS,它表示线性回归方程拟合程度的高低。当其=1时,RSS=0,也就是残差平方和最小,可以理解为误差最小。
而上面代码中的score也就是这个R2(相关指数)。
参考:sklearn.metrics.r2_score