美文网首页
线性回归算法简介

线性回归算法简介

作者: taon | 来源:发表于2019-04-17 22:06 被阅读0次

    线性回归(Linear Regression)定义:是一种通过对样本特征进行线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小。
    图1:一维数据,线性拟合模型

    linear regression.png

    图2:二维数据,平面拟合模型

    linear regression model.png

    API文档

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

    下面我们将对线性回归算法中的参数做逐一说明:


    'fit_intercept':布尔值,True or False作为可选项,默认为True。意思是是否返回线性回归函数的截距。
    'normalize':布尔值,True or False作为可选项,默认为False。意思是是否对样本数据做标准化处理((每一个样本数据-均值)/标准差)。如果fit_interceptr = False,normalize = True,那么在对样本进行训练之前,必须做标准化处理。
    'copy_X':布尔值,True or False作为可选项,默认为True。True意味着样本X将被复制,False意味着样本X是被重新写入的。
    'n_jobs':整数值,意思是运算时所使用的处理器数量。n_jobs = 1,使用一个处理器单元,n_jobs = -1,使用所有处理器单元。


    应用案例演示
    下面以sklearn自带的数据集boston房价数据集为例,来使用线性回归算法对未知样本进行房价预测。
    [boston房价数据集]https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html
    可以点击这个链接查看下该数据集的简单介绍,下面我们做一下简单的代码示例。

    #导入接下来要使用的库
    import numpy as np
    from sklearn import datasets
    from sklearn.linearn_model import LinearRegression
    from sklearn.model_selection import train_test_split
    
    #导入数据集
    boston = datasets.load_boston()
    #获取特征
    X = boston.data
    #获取标签值
    y = boston.target
    
    #数据切分
    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)
    
    #导入线性回归模型
    lr = LinearRegression()
    #使用训练集对模型进行训练
    lr.fit(X_train,y_train)
    lr.predict(X_test[:10,:])
    array([24.9357079 , 23.75163164, 29.32638296, 11.97534566, 21.37272478,
           19.19148525, 20.5717479 , 21.21154015, 19.04572003, 20.35463238])
    #打印出前10个真实值
    print(y_test[:10])
    [22.6 50.  23.   8.3 21.2 19.9 20.6 18.7 16.1 18.6]#可以看出预测值在真实值的上下波动。
    
    #评估模型的精度
    lr.score(X_test,y_test)
    0.6733825506400183#模型的精度只有67%,没有达到我们理想的准确度。
    

    从模型的预测精度可以看出,67%显然无法达到我们的预期。该数据集是一个13维的数据集,有13个变量特征(例如房子的位置,面积,楼层,卧室数量等等)可以对我们的价格产生影响,后期我们可以对原始数据集作进一步的预处理,对特征进行筛选,以使得模型能更好的拟合我们的数据。
    模型的属性
    针对以上数据集,我们得出线性模型类似于这样:y = a1 * X1 + a2 * X2 +······+ a13 * X13 + b,
    其中a1,a2······a13是我们数据集中13个变量特征的权重参数,b是常数项。现我们可以应用模型的属性得出权重参数与常数项。

    #权重参数
    lr.coef_
    array([-1.21310401e-01,  4.44664254e-02,  1.13416945e-02,  2.51124642e+00,
           -1.62312529e+01,  3.85906801e+00, -9.98516565e-03, -1.50026956e+00,
            2.42143466e-01, -1.10716124e-02, -1.01775264e+00,  6.81446545e-03,
           -4.86738066e-01])
    #常数项
    lr.intercept_
    37.93710774183296
    

    lr算法的优缺点
    优点:
    结果具有很好的可解释性,权重参数很清晰的体现了各特征在结果预测中所起的作用。
    缺点:
    对非线性数据拟合不好。

    相关文章

      网友评论

          本文标题:线性回归算法简介

          本文链接:https://www.haomeiwen.com/subject/ijdowqtx.html