机器学习——Day2

1.5sklearn——一元线性回归

from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
# 载入数据
data = np.genfromtxt("data.csv", delimiter=",")
x_data = data[:,0]
y_data = data[:,1]
plt.scatter(x_data,y_data)
plt.show()
print(x_data.shape)

在这里插入图片描述

# 调整数据格式
x_data = data[:,0,np.newaxis]
y_data = data[:,1,np.newaxis]
# 创建并拟合模型
model = LinearRegression()
model.fit(x_data, y_data)


# 画图
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, model.predict(x_data), 'r')
plt.show()

在这里插入图片描述

1.6多元线性回归

多元线性回归的求解和一元线性回归异曲同工,无非是求导的次数增加了
f ( x ) = θ 0 + θ 1 ∗ x 1 + . . . + θ n ∗ x n f(x) = \theta_0+\theta_1*x_1+...+\theta_n*x_n f(x)=θ0+θ1x1+...+θnxn
Γ ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m ∑ i = 1 m ( y i − h θ ( x i ) ) 2 \Gamma(\theta_0,\theta_1,...,\theta_n) = \frac{1}{2m}\sum_{i=1}^{m}(y^i-h_\theta(x^i))^2 Γ(θ0θ1...θn)=2m1i=1m(yihθ(xi))2
每一次迭代更新权值
θ j : = θ j − α ∂ ∂ θ j Γ ( θ 0 , θ 1 ) ( f o r 1 j = 0... n ) \theta_j:=\theta_j-\alpha \frac{\partial }{\partial \theta_j}\Gamma(\theta_0,\theta_1)(for \hphantom{1} j=0...n) θj:=θjαθjΓ(θ0,θ1)(for1j=0...n)

1.7多项式回归

多项式方程:
f ( x ) = θ 0 + θ 1 ∗ x + . . . + θ n ∗ x n f(x) = \theta_0+\theta_1*x+...+\theta_n*x^n f(x)=θ0+θ1x+...+θnxn
梯度下降法求解:

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
import matplotlib.pyplot as plt

# 载入数据
data = np.genfromtxt("job.csv", delimiter=",")
x_data = data[1:,1]
y_data = data[1:,2]

x_data = x_data[:,np.newaxis]
y_data = y_data[:,np.newaxis]
# 训练模型
model = LinearRegression()
model.fit(x_data, y_data)
# 画图
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, model.predict(x_data), 'r')
plt.show()

在这里插入图片描述

# 定义多项式回归,degree的值可以调节多项式的特征
poly_reg  = PolynomialFeatures(degree=3) 
# 特征处理
x_poly = poly_reg.fit_transform(x_data)
# 定义回归模型
lin_reg = LinearRegression()
# 训练模型
lin_reg.fit(x_poly, y_data)
# 画图
plt.plot(x_data, y_data, 'b.')
plt.plot(x_data, lin_reg.predict(x_poly), c='r')
plt.show()

在这里插入图片描述
标准方程法:
标准方差法与递归下降法主要区别在于其代价函数(cost function)不一致
J ( θ ) = a θ 2 + b θ + c J( \theta) =a\theta^2+b\theta+c J(θ)=aθ2+bθ+c
在这里插入图片描述
∂ ∂ θ J ( θ ) = 0 \frac{\partial }{\partial \theta}J(\theta)=0 θJ(θ)=0
以此求解 θ 0 , . . . , θ n \theta_0,...,\theta_n θ0,...,θn
优缺点:

梯度下降法标准方程法
需要选择学习速率α不需要选择学习速率α
需要多次迭代不需要多次迭代
即使n很大,也能很好的工作当n很大,因为需要计算(XTX)-1,会计算的非常慢

总结:
当n比较大的时候(通常n>10000),选择梯度下降法
当n不是很大(通常n<10000),选择标准方程法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值