选择适当的参数让其最小化min,即可实现拟合求解过程 。通过上面的这个示例,我们就可以对线性回归模型进行如下定义:根据样本x和y的坐标,去预估函数h,寻求变量之间近似的函数关系 。公式如下:
其中,n表示特征数目,表示每个训练样本的第i个特种值 , 当只有一个因变量x时,称为一元线性回归,类似于;而当多个因变量时,成为多元线性回归 。我们的目的是使最小化,从而最好的将样本数据集进行拟合,更好地预测新的数据 。
多项式回归或逻辑回归相关知识将在后面介绍 。
二.线性回归分析线性回归是数据挖掘中基础的算法之一,其核心思想是求解一组因变量和自变量之间的方程,得到回归函数 , 同时误差项通常使用最小二乘法进行计算 。在本书常用的Sklaern机器学习包中将调用Linear_model子类的LinearRegression类进行线性回归模型计算 。
1.LinearRegressionLinearRegression回归模型在Sklearn.linear_model子类下 , 主要是调用fit(x,y)函数来训练模型,其中x为数据的属性,y为所属类型 。sklearn中引用回归模型的代码如下:
from sklearn import linear_model #导入线性模型regr = linear_model.LinearRegression() #使用线性回归print(regr)
输出函数的构造方法如下:
LinearRegression(copy_X=True,fit_intercept=True,n_jobs=1,normalize=False)
其中参数说明如下:
copy_X:布尔型,默认为True 。是否对X复制,如果选择False,则直接对原始数据进行覆盖,即经过中心化、标准化后,把新数据覆盖到原数据上 。fit_intercept:布尔型,默认为True 。是否对训练数据进行中心化 , 如果是True表示对输入的训练数据进行中心化处理,如果是False则输入数据已经中心化处理,后面的过程不再进行中心化处理 。n_jobs:整型,默认为1 。计算时设置的任务个数 , 如果设置为-1表示使用所有的CPU 。该参数对于目标个数大于1且规模足够大的问题有加速作用 。normalize:布尔型,默认为False 。是否对数据进行标准化处理 。LinearRegression类主要包括如下方法:
fit(X,y[,n_jobs])
对训练集X , y进行训练,分析模型参数,填充数据集 。其中X为特征 , y为标记或类属性 。
predict(X)
使用训练得到的估计器或模型对输入的X数据集进行预测 , 返回结果为预测值 。数据集X通常划分为训练集和测试集 。
decision_function(X)
使用训练得到的估计器或模型对数据集X进行预测 。它与predict(X)区别在于该方法包含了对输入数据的类型检查和当前对象是否存在coef_属性的检查,更安全 。
score(X, y[,]samples_weight)
返回对于以X为samples、y为target的预测效果评分 。
get_params([deep])
获取该估计器(Estimator)的参数 。
**set_params(params)
设置该估计器(Estimator)的参数 。
coef_
存放LinearRegression模型的回归系数 。
intercept_
存放LinearRegression模型的回归截距 。
现在对前面的企业成本和利润数据集进行线性回归实验 。完整代码如下:
# -*- coding: utf-8 -*-# By:Eastmount CSDN 2021-07-03from sklearn import linear_model #导入线性模型import matplotlib.pyplot as pltimport numpy as np#X表示企业成本 Y表示企业利润X = [[400], [450], [486], [500], [510], [525], [540], [549], [558], [590], [610], [640], [680], [750], [900]]Y = [[80], [89], [92], [102], [121], [160], [180], [189], [199], [203], [247], [250], [259], [289], [356]]print('数据集X: ', X)print('数据集Y: ', Y)#回归训练clf = linear_model.LinearRegression()clf.fit(X, Y)#预测结果X2 = [[400], [750], [950]]Y2 = clf.predict(X2)print(Y2)res = clf.predict(np.array([1200]).reshape(-1, 1))[0]print('预测成本1200元的利润:$%.1f' % res)#绘制线性回归图形plt.plot(X, Y, 'ks') #绘制训练数据集散点图plt.plot(X2, Y2, 'g-') #绘制预测数据集直线plt.show()
推荐阅读
- 医保查询+参保登记+缴费 肇庆粤医保小程序操作指南
- 青海大学附属医院单管核酸报告在哪里查询?
- 微信怎么查看银行卡余额 微信怎么查看银行卡余额查询
- 可以查询别人的社保吗? 可以查询别人的社保吗怎么查
- 常州社保查询个人账户缴费明细
- 男人约你动机查询表 男人约会动机查询表
- 收到违章短信但是12123上查询不到 12123上查询不到违章信息讲解
- 招行信用卡账单怎么查询 招行信用卡账单怎么查询不到
- 上海大众4s店 上海大众4s店地址查询
- 常州社保查询个人账户
