from sklearn.linear_model import LinearRegression

参数:

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

发布了45 篇原创文章 · 获赞 0 · 访问量 979

猜你喜欢

转载自blog.csdn.net/jokerxsy/article/details/104852465
今日推荐