线性回归----梯度下降笔记

机器学习第一讲--------线性回归算大总结

1,梯度下降法

含 一 个 θ 时 ​ h θ = θ x 含一个\theta 时​ h\theta=\theta x θhθ=θx

c = f ( θ ) = ( h θ ( x ) − y ) 2 c=f(\theta)=(h\theta(x)-y)^2 c=f(θ)=(hθ(x)y)2

令 m i n C 约 等 于 0 令minC约等于0 minC0

则 g r a d = − ∂ c / ∂ θ 则grad=-∂c/∂\theta grad=c/θ

θ = θ − g r a d ∗ 0.1 ( 0.1 代 表 学 习 率 ) \theta=\theta-grad*0.1 (0.1代表学习率) θ=θgrad0.1(0.1)

x1x2y
1.1620
1.2725
1.288?

含 多 个 θ 时 含多个\theta时 θ

f ( θ 1 , θ 2 , θ 3 . . . . , θ n ) = θ 1 x 1 + θ 1 x 2 + . . . . + θ n x n = H f(\theta_1,\theta_2,\theta_3....,\theta _n)=\theta_1x_1+\theta_1x_2+....+\theta _nx_n=H f(θ1,θ2,θ3....,θn)=θ1x1+θ1x2+....+θnxn=H

L ( θ 1 , θ 2 . . . . , θ n ) = ( H 1 − Y 1 ) 2 + ( H 2 − Y 2 ) 2 + . . . . . + ( H n − Y n ) 2 L(\theta_1,\theta_2....,\theta _n)=(H_1-Y_1)^2+(H_2-Y_2)^2+.....+(H_n-Y_n)^2 L(θ1,θ2....,θn)=(H1Y1)2+(H2Y2)2+.....+(HnYn)2

= ∑ i = 1 n ( H − Y ) 2 =\sum_{i=1}^{n}{(H-Y)^2} =i=1n(HY)2

这时就可以使用矩阵的方法处理问题

使用python来实现

添加矩阵相关的numpy库

def gradient_dexcending(thate,x,y,learning_rate):
    return thate+get_grad(thate,x,y)*learning_rate

#偏离值
def get_cost(thate,x,y):
    return np.sum((np.dot(x,thate)-y)**2)

thate=np.array([1,1])
x=np.array([[1,2],[1,2]])
y=np.array([0,0])
buchang=0.1

**名词理解 **

梯度:函数下降最快的方向

学习率:步长

损失函数:选取最优的θ,在我们的训练集中让h(x)尽可能接近真实的值。h(x)和真实的值之间的差距,我们定义 了一个函数来描述这个差距,这个函数称为损失函数

2,pandas的使用

df_movies=pd.read_csv("douban4.csv",encoding="utf-8")
print(df_movies)
#丢弃全部为缺失值的行
df_movies1=df_movies.dropna(how='all')
print("丢弃全部为缺失值的行")
print(df_movies1)
#dropna()方法如果不设置任何参数 默认丢弃任何含有缺省值的行
df_movies2=df_movies.dropna()
print("dropna()方法如果不设置任何参数 默认丢弃任何含有缺省值的行")
print(df_movies2)
#axis=1意味着按列执行
df_movies3= df_movies.dropna(how='all',axis=1)
print("axis=1意味着按列执行")
print(df_movies3)
df_movies4=df_movies.dropna(axis=1)
print("dropna默认就是丢弃任何行或列的缺失值,axis=1设置对列check。")
print(df_movies4)
df_movies5=df_movies.fillna(0)
print("使用DataFrame对象的fillna()可以实现数据的填充。它默认返回一个新对象,原对象中的值不变。fillna()中的参数如设置为常数值,则会将缺失值替换为设定的常数值。")
print(df_movies5)
df_movies6=df_movies.fillna({"rating":5.0,"year":2018})
print("通过一个字典调用fillna()就可以实现不同列填充不同值。字典的key为列名,value为填充的值")
print(df_movies6)
df_movies.fillna({"rating":5.0,"year":2018},inplace=True)
print(df_movies)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值