016-线性回归——最简单、最容易理解的模型

有很多同学,刚开始学习数据挖掘的时候,入门的第一个算法就是线性回归。那么今天本人将浅析数据挖掘算法中的——线性回归问题。

线性回归,顾名思义就是线性地去求解一个问题,比如说

y=2x

在上面的算式中,x是我们的输入值,y是我们的输出值,2则是我们将要求得的函数,那么把上面的算式泛化之后可以得到,

y=f(x)

其中x是输入,y是输出,f是要求的函数,那么我们通过训练得到f的过程就叫做线性回归

 

在我们实际的计算中,最常见的场景是

y=\Theta x

其中θ和x都是矩阵,这个时候有必要讲解最常见的矩阵运算模型——最小二乘法模型

 

最小二乘法模型三大公式:

y=\Theta x

L=\frac{1}{2}\left ( \Theta x-y \right )^{T}\left ( \Theta x-y \right )

\Theta =\left ( x^{T}x \right )^{-1}x^{T}y

——公式一是参数模型,这是一个线性模型

——公式二是一个损失函数,线性回归的终极目的就是使得这个函数值最小

——公式三是求导数之后,可以直接在Python里面操作的一个公式

 

具体操作:首先将Numpy这个库,这是一个神奇的库,对矩阵操作非常友好

import numpy as np
#矩阵的逆
from numpy.linalg import inv
#点乘
from numpy import dot
#矩阵
from numpy import mat

操作代码如下:

import numpy as np
from numpy.linalg import inv
from numpy import dot
from numpy import mat

A = np.mat([1,1])
print(A)

B = np.mat([[1,2],[2,3]])
print(B)

#A 1*2  B 2*2
print(dot(A,B))

print(dot(B,A.T))#运算成功

#求B的逆矩阵
print("B的逆矩阵",inv(B))

#求B的第一行
print(B[0,:])
# 求B的第一列
print(B[:,0])

#把一行两列变成两行一列
print(A.reshape(2,1))

C = np.mat([[2,3],[4,5],[5,6]])
print(C)
#转为2行3列或者1行6列
print(C.reshape(2,3))#[[2 3 4] [5 5 6]]
print(C.reshape(1,6))

#y=2x
#把一行三列的输入值转变为三行一列
X = mat([1,2,3]).reshape(3,1)
Y = 2*X

#然后求θ
xita = dot(dot(inv(dot(X.T,X)),X.T),Y)
print(xita)

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值