sklearn机器学习:线性回归LinearRegression

LinearRegression类格式

sklearn.linear_model.LinearRegression (fit_intercept=True, normalize=False, copy_X=True,
n_jobs=None)

参数

fit_intercept
布尔值,可不填,默认为True
是否计算此模型的截距。如果设置为False,则不会计算截距
normalize
布尔值,可不填,默认为False
当fit_intercept设置为False时,将忽略此参数。如果为True,则特征矩阵X在进入回归之前将会被减去均值(中⼼心化)并除以L2范式(缩放)。如果希望进行标准化,请在fit数据之前使用preprocessing模块中的标准化专用类
StandardScaler
copy_X
布尔值,可不填,默认为True
如果为真,将在X.copy()上进行操作,否则,原本的特征矩阵X可能被线性回归影响并覆盖
n_jobs
整数或者None,可不填,默认为None
用于计算的作业数。只在多标签的回归和数据量足够大的时候才生效。除非None在joblib.parallel_backend上下文中,否则None统一表示为1。如果输入-1,则表示使用全部的CPU来进行计算。
线性回归的类仅有四个参数就可以完成一个完整的算法。并且,这些参数中并没有一个是必填的,更没有对模型有不可替代作用的参数。这说明,线性回归的性能,往往取决于数据本身,而并非是调参能力,线性回归也因此对数据有着很的要求。幸运的是,现实中大部分连续型变量之间,都存在着或多或少的线性联系。所以线性回归虽然简
单,却很强大。
顺便一提,sklearn中的线性回归可以处理多标签问题,只需要在fit的时候输入多维度标签就可以了。

代码实现

#导⼊需要的模块和库
from sklearn.linear_model import LinearRegression as LR
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.datasets import fetch_california_housing as fch #加利福尼亚房屋价值数据集
import pandas as pd
#导入数据,探索数据
housevalue = fch() 
X = pd.DataFrame(housevalue.data) #放入DataFrame中便于查看
y = housevalue.target
X.shape
(20640, 8)
y.shape
(20640,)
X.head(2)

在这里插入图片描述

housevalue.feature_names
['MedInc',
 'HouseAge',
 'AveRooms',
 'AveBedrms',
 'Population',
 'AveOccup',
 'Latitude',
 'Longitude']
X.columns = housevalue.feature_names
X.head(2)

在这里插入图片描述

#划分训练集和测试集
Xtrain, Xtest, Ytrain, Ytest =train_test_split(X,y,test_size=0.3,random_state=420)
Xtrain.head(2)

在这里插入图片描述

for i in [Xtrain, Xtest]:
    i.index = range(i.shape[0])#恢复索引
Xtrain.head(2)

在这里插入图片描述

#建模
reg = LR().fit(Xtrain, Ytrain)
yhat = reg.predict(Xtest)
yhat
array([1.51384887, 0.46566247, 2.2567733 , ..., 2.11885803, 1.76968187,
       0.73219077])
#探索建好的模型
reg.coef_ #相关系数:
array([ 4.37358931e-01,  1.02112683e-02, -1.07807216e-01,  6.26433828e-01,
        5.21612535e-07, -3.34850965e-03, -4.13095938e-01, -4.26210954e-01])
[*zip(Xtrain.columns,reg.coef_)]
[('MedInc', 0.4373589305968403),
 ('HouseAge', 0.010211268294494038),
 ('AveRooms', -0.10780721617317715),
 ('AveBedrms', 0.6264338275363783),
 ('Population', 5.216125353178735e-07),
 ('AveOccup', -0.0033485096463336094),
 ('Latitude', -0.4130959378947711),
 ('Longitude', -0.4262109536208467)]
reg.intercept_ #截距
-36.25689322920386

属性

coef_
数组,形状为 (n_features, )或者(n_targets, n_features)
线性回归方程中估计出的系数。如果在fit中传递多个标签(当y为二维或以上的时候),则返回的系数是形状为(n_targets,n_features)的二维数组,而如果仅传递一个标签,则返回的系数是长度为n_features的一维数组
intercept_
数组,线性回归中的截距项。

你可能感兴趣的:(机器学习,算法,Python,机器学习,算法,python,线性回归,coef)