Python实现 线性回归(梯度下降)

import numpy as np
import pandas as pd
from numpy import *
from pandas import *
import matplotlib.pyplot as plt


x = np.array([[1,2],[2,1],[3,2.5],[4,3],
              [5,4],[6,5],[7,2.7],[8,4.5],
              [9,2]])

m, n = np.shape(x)
x_data = np.ones((m,n))
x_data[:,:-1] = x[:,:-1]
y_data = x[:,-1]

print x_data.shape
print y_data.shape
m, n = np.shape(x_data)
theta = np.ones(n)


def batchGradientDescent(maxiter,x,y,theta,alpha):
    xTrains = x.transpose()
    for i in range(0,maxiter):
        hypothesis = np.dot(x,theta)
        loss = (hypothesis-y)
        gradient = np.dot(xTrains,loss)/m
        theta = theta - alpha * gradient
        cost = 1.0/2*m*np.sum(np.square(np.dot(x,np.transpose(theta))-y))
        print "cost: %f"%cost
    return theta

result = batchGradientDescent(10000,x_data,y_data,theta,0.01)
newy = np.dot(x_data,result)
fig, ax = plt.subplots()
ax.plot(x[:,0],newy, 'k--')
ax.plot(x[:,0],x[:,1], 'ro')
plt.show()
print "final: ",result

cost: 299.028425
cost: 167.353519
cost: 107.271829
cost: 79.847296
cost: 67.319323
cost: 61.586458
cost: 58.953241
cost: 57.733994
cost: 57.159802
cost: 56.879924
cost: 56.734371
cost: 56.650162
cost: 56.594009
cost: 56.550726
cost: 56.513387
cost: 56.478830
cost: 56.445615
cost: 56.413084
cost: 56.380936
cost: 56.349033
cost: 56.317313
cost: 56.285748
cost: 56.254322
cost: 56.223031
cost: 56.191870
cost: 56.160837
cost: 56.129933
cost: 56.099156
cost: 56.068505
cost: 56.037980
cost: 56.007580
cost: 55.977305
cost: 55.947154
cost: 55.917127
cost: 55.887223
cost: 55.857442
cost: 55.827783
cost: 55.798246
cost: 55.768830
cost: 55.739534
cost: 55.710359
cost: 55.681304
cost: 55.652367
cost: 55.623550
cost: 55.594851
cost: 55.566269
cost: 55.537805
cost: 55.509457
cost: 55.481226
cost: 55.453111
cost: 55.425111
cost: 55.397226
cost: 55.369455
cost: 55.341799
cost: 55.314256
cost: 55.286825
cost: 55.259508
cost: 55.232302
cost: 55.205208
cost: 55.178226
cost: 55.151354
cost: 55.124592
cost: 55.097940
cost: 55.071397
cost: 55.044964
cost: 55.018638
cost: 54.992421
cost: 54.966312
cost: 54.940309
cost: 54.914413
cost: 54.888624
cost: 54.862940
cost: 54.837362
cost: 54.811889
cost: 54.786520
cost: 54.761255
cost: 54.736094
cost: 54.711036
cost: 54.686081
cost: 54.661228
cost: 54.636478
cost: 54.611829
cost: 54.587281
cost: 54.562834
cost: 54.538487
cost: 54.514240
cost: 54.490092
cost: 54.466044
cost: 54.442094
cost: 54.418242
cost: 54.394489
cost: 54.370833
cost: 54.347274
cost: 54.323811
cost: 54.300445
cost: 54.277175
cost: 54.254000
cost: 54.230920
cost: 54.207935
cost: 54.185045
cost: 54.162248
cost: 54.139545
cost: 54.116935
cost: 54.094417
cost: 54.071992
cost: 54.049660
cost: 54.027418
cost: 54.005268
cost: 53.983209
cost: 53.961241
cost: 53.939362
cost: 53.917574
cost: 53.895874
cost: 53.874264
cost: 53.852743
cost: 53.831309
cost: 53.809964
cost: 53.788706
cost: 53.767536
cost: 53.746452
cost: 53.725455
cost: 53.704544
cost: 53.683719
cost: 53.662979
cost: 53.642325
cost: 53.621755
cost: 53.601270
cost: 53.580868
cost: 53.560551
cost: 53.540316
cost: 53.520165
cost: 53.500096
cost: 53.480110
cost: 53.460206
cost: 53.440383
cost: 53.420642
cost: 53.400982
cost: 53.381402
cost: 53.361903
cost: 53.342484
cost: 53.323144
cost: 53.303884
cost: 53.284703
cost: 53.265601
cost: 53.246577
cost: 53.227631
cost: 53.208762
cost: 53.189972
cost: 53.171258
cost: 53.152621
cost: 53.134060
cost: 53.115576
cost: 53.097168
cost: 53.078835
cost: 53.060577
cost: 53.042394
cost: 53.024286
cost: 53.006252
cost: 52.988292
cost: 52.970406
cost: 52.952593
cost: 52.934854
cost: 52.917187
cost: 52.899592
cost: 52.882070
cost: 52.864620
cost: 52.847241
cost: 52.829934
cost: 52.812697
cost: 52.795531
cost: 52.778436
cost: 52.761411
cost: 52.744456
cost: 52.727570
cost: 52.710754
cost: 52.694006
cost: 52.677328
cost: 52.660718
cost: 52.644175
cost: 52.627701
cost: 52.611295
cost: 52.594955
cost: 52.578683
cost: 52.562478
cost: 52.546339
cost: 52.530266
cost: 52.514259
cost: 52.498318
cost: 52.482442
cost: 52.466632
cost: 52.450886
cost: 52.435205
cost: 52.419588
cost: 52.404036
cost: 52.388547
cost: 52.373121
cost: 52.357759
cost: 52.342461
cost: 52.327224
cost: 52.312051
cost: 52.296939
cost: 52.281890
cost: 52.266902
cost: 52.251976
cost: 52.237111
cost: 52.222307
cost: 52.207564
cost: 52.192881
cost: 52.178259
cost: 52.163697
cost: 52.149194
cost: 52.134751
cost: 52.120367
cost: 52.106042
cost: 52.091776
cost: 52.077568
cost: 52.063419
cost: 52.049328
cost: 52.035294
cost: 52.021319
cost: 52.007400
cost: 51.993539
cost: 51.979734
cost: 51.965986
cost: 51.952295
cost: 51.938660
cost: 51.925080
cost: 51.911557
cost: 51.898089
cost: 51.884676
cost: 51.871318
cost: 51.858015
cost: 51.844767
cost: 51.831573
cost: 51.818433
cost: 51.805347
cost: 51.792315
cost: 51.779336
cost: 51.766410
cost: 51.753538
cost: 51.740718
cost: 51.727951
cost: 51.715236
cost: 51.702574
cost: 51.689963
cost: 51.677404
cost: 51.664897
cost: 51.652441
cost: 51.640036
cost: 51.627682
cost: 51.615379
cost: 51.603126
cost: 51.590924
cost: 51.578771
cost: 51.566669
cost: 51.554616
cost: 51.542612
cost: 51.530658
cost: 51.518753
cost: 51.506896
cost: 51.495089
cost: 51.483330
cost: 51.471619
cost: 51.459956
cost: 51.448341
cost: 51.436773
cost: 51.425253
cost: 51.413781
cost: 51.402355
cost: 51.390976
cost: 51.379644
cost: 51.368359
cost: 51.357120
cost: 51.345926
cost: 51.334779
cost: 51.323678
cost: 51.312622
cost: 51.301611
cost: 51.290646
cost: 51.279726
cost: 51.268850
cost: 51.258019
cost: 51.247233
cost: 51.236491
cost: 51.225793
cost: 51.215138
cost: 51.204528
cost: 51.193961
cost: 51.183437
cost: 51.172957
cost: 51.162519
cost: 51.152125
cost: 51.141773
cost: 51.131463
cost: 51.121196
cost: 51.110971
cost: 51.100788
cost: 51.090647
cost: 51.080547
cost: 51.070489
cost: 51.060472
cost: 51.050496
cost: 51.040561
cost: 51.030667
cost: 51.020813
cost: 51.011000
cost: 51.001227
cost: 50.991494
cost: 50.981801
cost: 50.972148
cost: 50.962535
cost: 50.952961
cost: 50.943426
cost: 50.933930
cost: 50.924474
cost: 50.915056
cost: 50.905677
cost: 50.896336
cost: 50.887034
cost: 50.877769
cost: 50.868543
cost: 50.859355
cost: 50.850204
cost: 50.841091
cost: 50.832015
cost: 50.822977
cost: 50.813976
cost: 50.805011
cost: 50.796083
cost: 50.787192
cost: 50.778338
cost: 50.769520
cost: 50.760738
cost: 50.751992
cost: 50.743281
cost: 50.734607
cost: 50.725968
cost: 50.717365
cost: 50.708797
cost: 50.700264
cost: 50.691766
cost: 50.683303
cost: 50.674875
cost: 50.666481
cost: 50.658122
cost: 50.649797
cost: 50.641506
cost: 50.633250
cost: 50.625027
cost: 50.616837
cost: 50.608682
cost: 50.600560
cost: 50.592471
cost: 50.584416
cost: 50.576393
cost: 50.568403
cost: 50.560447
cost: 50.552522
cost: 50.544631
cost: 50.536772
cost: 50.528945
cost: 50.521150
cost: 50.513387
cost: 50.505656
cost: 50.497956
cost: 50.490289
cost: 50.482652
cost: 50.475047
cost: 50.467474
cost: 50.459931
cost: 50.452419
cost: 50.444938
cost: 50.437488
cost: 50.430068
cost: 50.422679
cost: 50.415320
cost: 50.407992
cost: 50.400693
cost: 50.393425
cost: 50.386186
cost: 50.378977
cost: 50.371797
cost: 50.364647
cost: 50.357526
cost: 50.350435
cost: 50.343372
cost: 50.336339
cost: 50.329334
cost: 50.322358
cost: 50.315411
cost: 50.308492
cost: 50.301602
cost: 50.294740
cost: 50.287906
cost: 50.281100
cost: 50.274322
cost: 50.267572
cost: 50.260850
cost: 50.254155
cost: 50.247488
cost: 50.240848
cost: 50.234235
cost: 50.227649
cost: 50.221091
cost: 50.214559
cost: 50.208054
cost: 50.201576
cost: 50.195124
cost: 50.188699
cost: 50.182300
cost: 50.175928
cost: 50.169581
cost: 50.163261
cost: 50.156966
cost: 50.150698
cost: 50.144455
cost: 50.138238
cost: 50.132046
cost: 50.125880
cost: 50.119739
cost: 50.113623
cost: 50.107532
cost: 50.101466
cost: 50.095425
cost: 50.089409
cost: 50.083418
cost: 50.077451
cost: 50.071509
cost: 50.065591
cost: 50.059697
cost: 50.053828
cost: 50.047983
cost: 50.042161
cost: 50.036364
cost: 50.030590
cost: 50.024840
cost: 50.019113
cost: 50.013410
cost: 50.007731
cost: 50.002075
cost: 49.996442
cost: 49.990832
cost: 49.985245
cost: 49.979681
cost: 49.974140
cost: 49.968621
cost: 49.963126
cost: 49.957652
cost: 49.952202
cost: 49.946773
cost: 49.941367
cost: 49.935983
cost: 49.930621
cost: 49.925282
cost: 49.919964
cost: 49.914667
cost: 49.909393
cost: 49.904140
cost: 49.898909
cost: 49.893699
cost: 49.888511
cost: 49.883344
cost: 49.878198
cost: 49.873074
cost: 49.867970
cost: 49.862887
cost: 49.857825
cost: 49.852784
cost: 49.847764
cost: 49.842764
cost: 49.837784
cost: 49.832825
cost: 49.827887
cost: 49.822969
cost: 49.818071
cost: 49.813193
cost: 49.808335
cost: 49.803496
cost: 49.798678
cost: 49.793880
cost: 49.789101
cost: 49.784342
cost: 49.779602
cost: 49.774882
cost: 49.770181
cost: 49.765500
cost: 49.760837
cost: 49.756194
cost: 49.751570
cost: 49.746965
cost: 49.742379
cost: 49.737811
cost: 49.733263
cost: 49.728733
cost: 49.724221
cost: 49.719728
cost: 49.715254
cost: 49.710798
cost: 49.706360
cost: 49.701940
cost: 49.697539
cost: 49.693155
cost: 49.688790
cost: 49.684442
cost: 49.680113
cost: 49.675801
cost: 49.671506
cost: 49.667230
cost: 49.662971
cost: 49.658729
cost: 49.654505
cost: 49.650298
cost: 49.646108
cost: 49.641936
cost: 49.637781
cost: 49.633642
cost: 49.629521
cost: 49.625417
cost: 49.621329
cost: 49.617259
cost: 49.613205
cost: 49.609167
cost: 49.605146
cost: 49.601142
cost: 49.597154
cost: 49.593183
cost: 49.589227
cost: 49.585288
cost: 49.581365
cost: 49.577459
cost: 49.573568
cost: 49.569693
cost: 49.565834
cost: 49.561991
cost: 49.558164
cost: 49.554352
cost: 49.550557
cost: 49.546776
cost: 49.543011
cost: 49.539262
cost: 49.535528
cost: 49.531809
cost: 49.528106
cost: 49.524418
cost: 49.520745
cost: 49.517087
cost: 49.513444
cost: 49.509816
cost: 49.506202
cost: 49.502604
cost: 49.499020
cost: 49.495452
cost: 49.491897
cost: 49.488358
cost: 49.484833
cost: 49.481322
cost: 49.477826
cost: 49.474344
cost: 49.470876
cost: 49.467423
cost: 49.463983
cost: 49.460558
cost: 49.457147
cost: 49.453750
cost: 49.450367
cost: 49.446998
cost: 49.443642
cost: 49.440301
cost: 49.436973
cost: 49.433659
cost: 49.430358
cost: 49.427071
cost: 49.423797
cost: 49.420537
cost: 49.417290
cost: 49.414057
cost: 49.410836
cost: 49.407629
cost: 49.404435
cost: 49.401255
cost: 49.398087
cost: 49.394932
cost: 49.391790
cost: 49.388662
cost: 49.385546
cost: 49.382442
cost: 49.379352
cost: 49.376274
cost: 49.373209
cost: 49.370156
cost: 49.367116
cost: 49.364088
cost: 49.361073
cost: 49.358070
cost: 49.355080
cost: 49.352101
cost: 49.349135
cost: 49.346182
cost: 49.343240
cost: 49.340310
cost: 49.337392
cost: 49.334487
cost: 49.331593
cost: 49.328711
cost: 49.325841
cost: 49.322983
cost: 49.320136
cost: 49.317301
cost: 49.314478
cost: 49.311667
cost: 49.308866
cost: 49.306078
cost: 49.303301
cost: 49.300535
cost: 49.297780
cost: 49.295037
cost: 49.292305
cost: 49.289585
cost: 49.286875
cost: 49.284177
cost: 49.281489
cost: 49.278813
cost: 49.276148
cost: 49.273493
cost: 49.270850
cost: 49.268217
cost: 49.265595
cost: 49.262984
cost: 49.260384
cost: 49.257794
cost: 49.255215
cost: 49.252647
cost: 49.250089
cost: 49.247541
cost: 49.245004
cost: 49.242478
cost: 49.239962
cost: 49.237456
cost: 49.234960
cost: 49.232475
cost: 49.230000
cost: 49.227535
cost: 49.225080
cost: 49.222635
cost: 49.220200
cost: 49.217775
cost: 49.215360
cost: 49.212955
cost: 49.210560
cost: 49.208175
cost: 49.205800
cost: 49.203434
cost: 49.201078
cost: 49.198732
cost: 49.196395
cost: 49.194068
cost: 49.191750
cost: 49.189442
cost: 49.187143
cost: 49.184854
cost: 49.182574
cost: 49.180304
cost: 49.178043
cost: 49.175791
cost: 49.173549
cost: 49.171315
cost: 49.169091
cost: 49.166876
cost: 49.164670
cost: 49.162473
cost: 49.160285
cost: 49.158106
cost: 49.155936
cost: 49.153775
cost: 49.151623
cost: 49.149479
cost: 49.147345
cost: 49.145219
cost: 49.143102
cost: 49.140993
cost: 49.138893
cost: 49.136802
cost: 49.134719
cost: 49.132645
cost: 49.130580
cost: 49.128523
cost: 49.126474
cost: 49.124434
cost: 49.122402
cost: 49.120379
cost: 49.118363
cost: 49.116356
cost: 49.114358
cost: 49.112367
cost: 49.110385
cost: 49.108411
cost: 49.106444
cost: 49.104486
cost: 49.102536
cost: 49.100594
cost: 49.098660
cost: 49.096734
cost: 49.094816
cost: 49.092906
cost: 49.091003
cost: 49.089109
cost: 49.087222
cost: 49.085342
cost: 49.083471
cost: 49.081607
cost: 49.079751
cost: 49.077903
cost: 49.076062
cost: 49.074228
cost: 49.072402
cost: 49.070584
cost: 49.068773
cost: 49.066970
cost: 49.065174
cost: 49.063385
cost: 49.061604
cost: 49.059830
cost: 49.058063
cost: 49.056303
cost: 49.054551
cost: 49.052806
cost: 49.051068
cost: 49.049337
cost: 49.047613
cost: 49.045897
cost: 49.044187
cost: 49.042485
cost: 49.040789
cost: 49.039100
cost: 49.037419
cost: 49.035744
cost: 49.034076
cost: 49.032415
cost: 49.030760
cost: 49.029113
cost: 49.027472
cost: 49.025838
cost: 49.024211
cost: 49.022590
cost: 49.020976
cost: 49.019369
cost: 49.017768
cost: 49.016174
cost: 49.014586
cost: 49.013005
cost: 49.011431
cost: 49.009862
cost: 49.008301
cost: 49.006745
cost: 49.005196
cost: 49.003654
cost: 49.002118
cost: 49.000588
cost: 48.999064
cost: 48.997546
cost: 48.996035
cost: 48.994530
cost: 48.993031
cost: 48.991539
cost: 48.990052
cost: 48.988572
cost: 48.987097
cost: 48.985629
cost: 48.984167
cost: 48.982710
cost: 48.981260
cost: 48.979816
cost: 48.978377
cost: 48.976945
cost: 48.975518
cost: 48.974097
cost: 48.972682
cost: 48.971273
cost: 48.969870
cost: 48.968472
cost: 48.967080
cost: 48.965694
cost: 48.964313
cost: 48.962939
cost: 48.961569
cost: 48.960206
cost: 48.958848
cost: 48.957495
cost: 48.956148
cost: 48.954807
cost: 48.953471
cost: 48.952141
cost: 48.950816
cost: 48.949497
cost: 48.948183
cost: 48.946874
cost: 48.945571
cost: 48.944273
cost: 48.942980
cost: 48.941693
cost: 48.940411
cost: 48.939134
cost: 48.937862
cost: 48.936596
cost: 48.935335
cost: 48.934079
cost: 48.932828
cost: 48.931583
cost: 48.930342
cost: 48.929107
cost: 48.927876
cost: 48.926651
cost: 48.925431
cost: 48.924215
cost: 48.923005
cost: 48.921800
cost: 48.920599
cost: 48.919404
cost: 48.918213
cost: 48.917027
cost: 48.915847
cost: 48.914671
cost: 48.913500
cost: 48.912333
cost: 48.911172
cost: 48.910015
cost: 48.908863
cost: 48.907715
cost: 48.906573
cost: 48.905435
cost: 48.904302
cost: 48.903173
cost: 48.902049
cost: 48.900930
cost: 48.899815
cost: 48.898705
cost: 48.897599
cost: 48.896498
cost: 48.895401
cost: 48.894309
cost: 48.893222
cost: 48.892139
cost: 48.891060
cost: 48.889986

趋近于平滑了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值