十个机器学习基本算法之-线性回归(代码片段)

卓晴 卓晴     2022-12-13     567

关键词:


 

图解最常用的10个机器学习算法! 给出了最常用到的10个及其学习算法。

举个例子来说,你不能说神经网络永远比决策树好,反之亦然。模型运行被许多因素左右,例如数据集的大小和结构。因此,你应该根据你的问题尝试许多不同的算法,同时使用数据测试集来评估性能并选出最优项。

当然,你尝试的算法必须和你的问题相切合,其中的门道便是机器学习的主要任务。打个比方,如果你想打扫房子,你可能会用到吸尘器、扫帚或者拖把,但你肯定不会拿把铲子开始挖坑吧。

 

§01 线性回归


一、基本原理

1、计算公式

已知数据集合 x i , y i i = 1 , 2 , ⋯   , N \\left\\ x_i ,y_i \\right\\_i = 1,2, \\cdots ,N xi,yii=1,2,,N可以使用线性模型来表达,即:
y ^ i = A ⋅ x i ,     i = 1 , 2 , 3 , ⋯   , N \\hat y_i = A \\cdot x_i ,\\,\\,\\,i = 1,2,3, \\cdots ,N y^i=Axi,i=1,2,3,,N
其中, A A A是线性回归的系数,它使得回归均方误差达到最小: A = arg ⁡ min ⁡ A ∑ i = 1 N ( y i − A ⋅ x i ) 2 A = \\arg \\mathop \\min \\limits_A \\sum\\limits_i = 1^N \\left( y_i - A \\cdot x_i \\right)^2 A=argAmini=1N(yiAxi)2

X = x 1 T , x 2 T , ⋯   , x N T T X = \\left\\ x_1^T ,x_2^T , \\cdots ,x_N^T \\right\\^T X=x1T,x2T,,xNTT标识样本矩阵, Y = y 1 , y 2 , ⋯   , y N T Y = \\left\\ y_1 ,y_2 , \\cdots ,y_N \\right\\^T Y=y1,y2,,yNT标识预测值,那么 A A A可以由如下公式获得: A = ( X T X ) − 1 X T Y A = \\left( X^T X \\right)^ - 1 X^T Y A=(XTX)1XTY

2、公式解释

为了能够记忆和理解上面的公式,可以将 X T Y X^T Y XTY看成 X , Y X,Y X,Y之间的内积, X T ⋅ X X^T \\cdot X XTX看成 X X X的长度。那么,比例 c c c 的计算公式为:

▲ 图1.1 向量投影

c = ⟨ X ⃗ , Y ⃗ ⟩ ⟨ X ⃗ , X ⃗ ⟩ c = \\left\\langle \\vec X,\\vec Y \\right\\rangle \\over \\left\\langle \\vec X,\\vec X \\right\\rangle c=X ,X X ,Y

二、测试数据

1、数据产生

生成符合如下测试数据: y = x + 2 + ε y = x + 2 + \\varepsilon y=x+2+ε

from headm import *

random.seed(26)

number = 10
error = random.randn(number) * 0.5

A = array([1,2])
x = linspace(0, 10, number)[:,newaxis]
x1 = array([1]*number)[:,newaxis]
xx1 = concatenate((x, x1), 1)

y = dot(xx1, A)+error
printf(y)

plt.scatter(x, y, s=20)
plt.plot(x, dot(xx1, A), 'g--', linewidth=1)
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.tight_layout()
plt.show()

▲ 图2.2 生成的随机数据

2、公式方法

利用numpy.linalg.pinv 来计算矩阵的伪逆,那么再计算上述最小二乘下的线性回归系数。

aa = dot(linalg.pinv(xx1),y)
printf(aa)
不同数据点下A系数:
N=10:(0.99435, 1.9139)
N=20:(1.059, 1.70818)
N=100:(1.014, 1.94767)
N=1000:(1.001226, 1.99435)

3、利用curve_fit

利用 scipy.optimize中的 curve_fit来完成线性拟合。

def linefun(x, a, b):
    return a*x + b

param = (1, 2)
param, conv = curve_fit(linefun, xx1[:,0], y, p0=param)
printf(param)

计算的结果为如下,这与使用伪逆计算的结果很接近。

[1.001226   1.99435836]

4、利用LinearRegression

from sklearn import linear_model


regr = linear_model.LinearRegression()
regr.fit(xx1, y)
printf(regr.coef_)

计算的结果为:

[1.001226 0.      ]

这存在一个问题,为什么截距为 0 呢? 将LinearRegression中的fit_intercept设置为 False,便可以得到两个参数了。

regr = linear_model.LinearRegression(fit_intercept=False)
regr.fit(xx1, y)
printf(regr.coef_)

计算结果为:

[1.001226   1.99435836]

也可以在 fit_intercept设置为False的时候,通过regr.intercept_来获得截距。

机器学习模型和算法(代码片段)

文章目录python简介python基本语法监督学习--回归模型线性回归模型一元线性回归线性回归最小二乘代码实现多元线性回归梯度下降法和最小二乘法相比线性回归梯度下降代码实现非线性回归python简介略python基本语法文件开头加上#... 查看详情

机器学习与tensorflow——机器学习基本概念tensorflow实现简单线性回归(代码片段)

一、机器学习基本概念1.训练集和测试集训练集(trainingset/data)/训练样例(trainingexamples):用来进行训练,也就是产生模型或者算法的数据集测试集(testingset/data)/测试样例(testingexamples):用来专门进行测试已经学习好的模型或者算法... 查看详情

机器学习一般线性回归(代码片段)

...归"模型。 0.概述线性回归应该是我们听过次数最多的机器学习算法了。在一般的统计学教科书中,最后都会提到这种方法。因此该算法也算是架起了数理统计与机器学习之间的桥梁。线性回归虽然常见,但是却并不简单。该... 查看详情

机器学习-第二节:机器学习模型之线性回归

部分参考机器学习算法——线性回归(超级详细且通俗)刘建平博客文章目录一:线性回归基本概念(1)回归分析(2)线性回归二:线性回归确定参数的方法(1)最小二乘法A:代数求... 查看详情

机器学习-第二节:机器学习模型之线性回归

部分参考机器学习算法——线性回归(超级详细且通俗)刘建平博客文章目录一:线性回归基本概念(1)回归分析(2)线性回归二:线性回归确定参数的方法(1)最小二乘法A:代数求... 查看详情

探索五大机器学习技术及其应用(代码片段)

没有一种机器学习算法可以解决所有类型的机器学习问题。机器学习任务可能千差万别,算法的选择将取决于数据的大小、维数和稀疏性等因素。目标变量、数据的质量以及特征内部以及特征与目标变量之间存在的相互作用... 查看详情

如何搞懂机器学习中的线性回归模型?机器学习系列之线性回归基础篇

...原理都是由多元统计分析发展而来,但在数据挖掘和机器学习领域中,也是不可多得的行之有效的算法模型。一方面,线性回归蕴藏的机器学习思想非常值得借鉴和学习,并且随着时间发展,在线性回归的基... 查看详情

机器学习sklearn监督学习回归算法线性回归linearregression(代码片段)

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportlinear_model#设置中文字体plt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=False#设置自变量和因变 查看详情

机器学习-线性回归(代码片段)

线性回归简介:之前的文章中介绍过一种回归算法,梯度下降算法,这里再看看另外一个回归算法,线性回归,主要的内容包括简单的线性回归和局部加权回归算法。在回归里面需要考虑的问题就是,我如... 查看详情

机器学习-线性回归算法(房价预测项目)(代码片段)

文章目录简介损失函数优化算法正规方程梯度下降项目实战前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介线性回归(LinearRegression)是回归... 查看详情

机器学习入门之单变量线性回归(上)——梯度下降法(代码片段)

 在统计学中,线性回归(英语:linearregression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一... 查看详情

机器学习分类算法之逻辑回归(代码片段)

一、概念逻辑回归(LogisticRegression,LR)是一种广义的线性回归分析模型,属于监督学习算法,需要打标数据,可以用在回归、二分类和多分类等问题上,最常用的是二分类。线性回归就是通过一条曲线区分不同的数据集,在二分类问... 查看详情

机器学习回归算法-精讲(代码片段)

回归算法回归算法线性回归和非线性回归:线性回归线性回归方程:损失函数:损失函数推理过程:公式转换:误差公式:转化为`θ`求解:似然函数求`θ`:对数似然:损失函数࿱... 查看详情

机器学习九大算法---回归(代码片段)

机器学习九大算法---回归 转自:http://blog.csdn.net/xiaohai1232/article/details/59551240回归分析即,量化因变量受自变量影响的大小,建立线性回归方程或者非线性回归方程,从而达对因变量的预测,或者对因变量的解释作用。回归分... 查看详情

机器学习-非线性回归(unlinearregression)-逻辑回归(logisticregression)算法(代码片段)

学习彭亮《深度学习基础介绍:机器学习》课程概率定义概率(Probability):对一件事情发生的可能性的衡量范围0<=P<=1计算方法根据个人置信根据历史数据根据模拟数据条件概率即A在B发生的情况下的概率=AB同时发... 查看详情

机器学习-逻辑回归与线性回归(代码片段)

logistic回归与线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model)。这一家族中的模型形... 查看详情

机器学习sklearn(78):算法实例(三十五)回归线性回归大家族多重共线性:岭回归与lassolasso(代码片段)

3Lasso3.1Lasso与多重共线性      3.2Lasso的核心作用:特征选择  importnumpyasnpimportpandasaspdfromsklearn.linear_modelimportRidge,LinearRegression,Lassofromsklearn.model_selecti 查看详情

机器学习线性回归之自行车数据版本1——简易版(代码片段)

数据说明数据来源:http://archive.ics.uci.edu/ml/datasets/Bike+Sharing+Dataset 数据说明:仅使用day.csv文件字段说明:Instant记录号     Dteday:日期     Season:季节            1=春天 2=夏天 3=秋天 4=... 查看详情