cs229 - 02

梯度下降和最小二乘测试

import sys



data = [(0.000000,95.364693) ,
        (1.000000,97.217205) ,
        (2.000000,75.195834),
        (3.000000,60.105519) ,
        (4.000000,49.342380),
        (5.000000,37.400286),
        (6.000000,51.057128),
        (7.000000,25.500619),
        (8.000000,5.259608),
        (9.000000,0.639151),
        (10.000000,-9.409936),
        (11.000000, -4.383926),
        (12.000000,-22.858197),
        (13.000000,-37.758333),
        (14.000000,-45.606221)]




alpha=0.01
theta0=100.
theta1=100.
count = 0
size=len(data)
variance=0.00001
'''while True:
    count+=1
    theta0_rate=0.0
    theta1_rate=0.0
    for i in range(size):
        theta0_rate+=(1./size)*(theta1*data[i][0]+theta0-data[i][1])
        theta1_rate+=(1./size)*(theta1*data[i][0]+theta0-data[i][1])*data[i][0]
    theta0_old=theta0
    theta1_old=theta1
    theta0=theta0-alpha*theta0_rate
    theta1=theta1-alpha*theta1_rate
    if(abs(theta1-theta1_old) < variance and abs(theta0-theta0_old) < variance):
        print 'theta0=',theta0,'  theta1=',theta1
        break    '''
while True:
    count+=1
    sum_diff0=0.
    sum_diff1=0.
    for i in range(size):
        sum_diff0 = sum_diff0 + (theta1*data[i][0]+theta0-data[i][1])
        sum_diff1 = sum_diff1 + (theta1*data[i][0]+theta0-data[i][1])*data[i][0]
    #
    #break
    print '                      ->''sum_diff0=',sum_diff0,'  sum_diff1=',sum_diff1 
    theta0_old=theta0
    theta1_old=theta1
    print '                      ->''sum_diff0=',sum_diff0,'  sum_diff1=',sum_diff1
    print '                      ->''alpha=',alpha,'  size=',size,'alpha*sum_diff0*(1./size)=',alpha*sum_diff0*(1./size)
    theta0=theta0 - alpha*sum_diff0*(1./size)
    theta1=theta1 - alpha*sum_diff1*(1./size)


    print '----------->''theta0=',theta0,'  theta1=',theta1
    if(count >10):break
    #break
    if(abs(theta1-theta1_old) < variance and abs(theta1-theta1_old) < variance):
        print '----------->''theta0=',theta0,'  theta1=',theta1
        break
print '最小二乘法--->'


cgma_x = 0
cgma_y = 0
cgma_xx = 0
cgma_xy = 0
for item in data:
    cgma_x += item[0]
    cgma_y += item[1]
    cgma_xx += item[0]*item[0]
    cgma_xy += item[0]*item[1]


beta2 = (size*cgma_xy - cgma_x * cgma_y)*(1./(size * cgma_xx - cgma_x*cgma_x))
beta1 = (cgma_xx * cgma_y - cgma_x * cgma_xy)*1.0/(size * cgma_xx - cgma_x*cgma_x)

print '----------->''theta0=',beta1,'  theta1=',beta2



----------->theta0= 88.786463429   theta1= -9.34491568773
                      ->sum_diff0= -26.4850057769   sum_diff1= 38.4828659978
                      ->sum_diff0= -26.4850057769   sum_diff1= 38.4828659978
                      ->alpha= 0.01   size= 15 alpha*sum_diff0*(1./size)= -0.0176566705179
----------->theta0= 88.8041200995   theta1= -9.37057093173
                      ->sum_diff0= -28.9139563389   sum_diff1= 14.2967437437
                      ->sum_diff0= -28.9139563389   sum_diff1= 14.2967437437
                      ->alpha= 0.01   size= 15 alpha*sum_diff0*(1./size)= -0.0192759708926
----------->theta0= 88.8233960704   theta1= -9.38010209422
                      ->sum_diff0= -29.6255888376   sum_diff1= 6.64659075418
                      ->sum_diff0= -29.6255888376   sum_diff1= 6.64659075418
                      ->alpha= 0.01   size= 15 alpha*sum_diff0*(1./size)= -0.0197503925584
----------->theta0= 88.843146463   theta1= -9.38453315473
                      ->sum_diff0= -29.794594302   sum_diff1= 4.22285556248
                      ->sum_diff0= -29.794594302   sum_diff1= 4.22285556248
                      ->alpha= 0.01   size= 15 alpha*sum_diff0*(1./size)= -0.019863062868
----------->theta0= 88.8630095258   theta1= -9.38734839177

。。。。


梯度下降法------>theta0= 96.1139550973   theta1= -10.1408315064
最小二乘法--->:
----------->theta0= 96.1490781417   theta1= -10.1444796393
>>> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值