import scipy as sp
import matplotlib.pyplot as plt
'''
precision 浮点数输出精度位数(默认值8位)
suppress 是否 禁止 使用 科学记数法(默认为False)打印小浮点值
'''
sp.set_printoptions(precision=4, suppress=True)
data = sp.genfromtxt("web_traffic.tsv", delimiter="\t")
x = data[:, 0]
y = data[:, 1]
def error(f, x, y):
return sp.sum((f(x)-y)**2)
x = x[~sp.isnan(y)]
y = y[~sp.isnan(y)]
plt.scatter(x, y)
plt.title("Web traffic over the last month")
plt.xlabel("Time")
plt.ylabel("Hits/Hour")
plt.xticks([w*7*24 for w in range(10)],
['week %i'%w for w in range(10)])
fp1, residuals, rank, sv, rcond = sp.polyfit(x, y, 1, full=True)
print('Model parameters: {}'.format(fp1))
print('residuals is {}'.format(residuals))
f1 = sp.poly1d(fp1)
print(type(f1))
print(error(f1, x, y))
fx = sp.linspace(0, x[-1], 1000)
print(fx)
plt.plot(fx, f1(fx), linewidth=4)
plt.legend(['d=%i'%f1.order], loc='upper right')
plt.autoscale(tight=True)
plt.grid()
plt.show()
f2p = sp.polyfit(x, y, 2)
f2 = sp.poly1d(f2p)
print(error(f2, x, y))
inflection = int(3.5*7*24)
xa = x[:inflection]
ya = y[:inflection]
xb = x[inflection:]
yb = y[inflection:]
fa = sp.poly1d(sp.polyfit(xa, ya, 1))
fb = sp.poly1d(sp.polyfit(xb, yb, 1))
fa_error = error(fa, xa, ya)
fb_error = error(fb, xb, yb)
print('Error inflection=%f' % (fa_error + fb_error))
fb2 = sp.poly1d(sp.polyfit(xb, yb, 2))
from scipy.optimize import fsolve
'''
给出一个起始估计值 800
返回由“func(x)= 0”定义的(非线性)方程的根 func(x)=fb2-100000
'''
reached_max = fsolve(fb2 - 100000, 800)/(7*24)
print("100,000 hits/hour excepted at week {}".format(reached_max[0]))
C:\Users\rHotD\Anaconda3\python.exe C:/Users/rHotD/PycharmProjects/BuildingMachineLearningSystemWithPython/chapter-1/MLApp(little).py
Model parameters: [ 2.5962 989.0249]
residuals is [ 3.1739e+08]
<class 'numpy.lib.polynomial.poly1d'>
317389767.34
[ 0. 0.7437 1.4875 2.2312 2.975 3.7187 4.4625
5.2062 5.9499 6.6937 7.4374 8.1812 8.9249 9.6687
10.4124 11.1562 11.8999 12.6436 13.3874 14.1311 14.8749
15.6186 16.3624 17.1061 17.8498 18.5936 19.3373 20.0811
20.8248 21.5686 22.3123 23.0561 23.7998 24.5435 25.2873
26.031 26.7748 27.5185 28.2623 29.006 29.7497 30.4935
31.2372 31.981 32.7247 33.4685 34.2122 34.956 35.6997
36.4434 37.1872 37.9309 38.6747 39.4184 40.1622 40.9059
41.6496 42.3934 43.1371 43.8809 44.6246 45.3684 46.1121
46.8559 47.5996 48.3433 49.0871 49.8308 50.5746 51.3183
52.0621 52.8058 53.5495 54.2933 55.037 55.7808 56.5245
57.2683 58.012 58.7558 59.4995 60.2432 60.987 61.7307
62.4745 63.2182 63.962 64.7057 65.4494 66.1932 66.9369
67.6807 68.4244 69.1682 69.9119 70.6557 71.3994 72.1431
72.8869 73.6306 74.3744 75.1181 75.8619 76.6056 77.3493
78.0931 78.8368 79.5806 80.3243 81.0681 81.8118 82.5556
83.2993 84.043 84.7868 85.5305 86.2743 87.018 87.7618
88.5055 89.2492 89.993 90.7367 91.4805 92.2242 92.968
93.7117 94.4555 95.1992 95.9429 96.6867 97.4304 98.1742
98.9179 99.6617 100.4054 101.1491 101.8929 102.6366 103.3804
104.1241 104.8679 105.6116 106.3554 107.0991 107.8428 108.5866
109.3303 110.0741 110.8178 111.5616 112.3053 113.049 113.7928
114.5365 115.2803 116.024 116.7678 117.5115 118.2553 118.999
119.7427 120.4865 121.2302 121.974 122.7177 123.4615 124.2052
124.9489 125.6927 126.4364 127.1802 127.9239 128.6677 129.4114
130.1552 130.8989 131.6426 132.3864 133.1301 133.8739 134.6176
135.3614 136.1051 136.8488 137.5926 138.3363 139.0801 139.8238
140.5676 141.3113 142.0551 142.7988 143.5425 144.2863 145.03
145.7738 146.5175 147.2613 148.005 148.7487 149.4925 150.2362
150.98 151.7237 152.4675 153.2112 153.955 154.6987 155.4424
156.1862 156.9299 157.6737 158.4174 159.1612 159.9049 160.6486
161.3924 162.1361 162.8799 163.6236 164.3674 165.1111 165.8549
166.5986 167.3423 168.0861 168.8298 169.5736 170.3173 171.0611
171.8048 172.5485 173.2923 174.036 174.7798 175.5235 176.2673
177.011 177.7548 178.4985 179.2422 179.986 180.7297 181.4735
182.2172 182.961 183.7047 184.4484 185.1922 185.9359 186.6797
187.4234 188.1672 188.9109 189.6547 190.3984 191.1421 191.8859
192.6296 193.3734 194.1171 194.8609 195.6046 196.3483 197.0921
197.8358 198.5796 199.3233 200.0671 200.8108 201.5546 202.2983
203.042 203.7858 204.5295 205.2733 206.017 206.7608 207.5045
208.2482 208.992 209.7357 210.4795 211.2232 211.967 212.7107
213.4545 214.1982 214.9419 215.6857 216.4294 217.1732 217.9169
218.6607 219.4044 220.1481 220.8919 221.6356 222.3794 223.1231
223.8669 224.6106 225.3544 226.0981 226.8418 227.5856 228.3293
229.0731 229.8168 230.5606 231.3043 232.048 232.7918 233.5355
234.2793 235.023 235.7668 236.5105 237.2543 237.998 238.7417
239.4855 240.2292 240.973 241.7167 242.4605 243.2042 243.9479
244.6917 245.4354 246.1792 246.9229 247.6667 248.4104 249.1542
249.8979 250.6416 251.3854 252.1291 252.8729 253.6166 254.3604
255.1041 255.8478 256.5916 257.3353 258.0791 258.8228 259.5666
260.3103 261.0541 261.7978 262.5415 263.2853 264.029 264.7728
265.5165 266.2603 267.004 267.7477 268.4915 269.2352 269.979
270.7227 271.4665 272.2102 272.954 273.6977 274.4414 275.1852
275.9289 276.6727 277.4164 278.1602 278.9039 279.6476 280.3914
281.1351 281.8789 282.6226 283.3664 284.1101 284.8539 285.5976
286.3413 287.0851 287.8288 288.5726 289.3163 290.0601 290.8038
291.5475 292.2913 293.035 293.7788 294.5225 295.2663 296.01
296.7538 297.4975 298.2412 298.985 299.7287 300.4725 301.2162
301.96 302.7037 303.4474 304.1912 304.9349 305.6787 306.4224
307.1662 307.9099 308.6537 309.3974 310.1411 310.8849 311.6286
312.3724 313.1161 313.8599 314.6036 315.3473 316.0911 316.8348
317.5786 318.3223 319.0661 319.8098 320.5536 321.2973 322.041
322.7848 323.5285 324.2723 325.016 325.7598 326.5035 327.2472
327.991 328.7347 329.4785 330.2222 330.966 331.7097 332.4535
333.1972 333.9409 334.6847 335.4284 336.1722 336.9159 337.6597
338.4034 339.1471 339.8909 340.6346 341.3784 342.1221 342.8659
343.6096 344.3534 345.0971 345.8408 346.5846 347.3283 348.0721
348.8158 349.5596 350.3033 351.047 351.7908 352.5345 353.2783
354.022 354.7658 355.5095 356.2533 356.997 357.7407 358.4845
359.2282 359.972 360.7157 361.4595 362.2032 362.9469 363.6907
364.4344 365.1782 365.9219 366.6657 367.4094 368.1532 368.8969
369.6406 370.3844 371.1281 371.8719 372.6156 373.3594 374.1031
374.8468 375.5906 376.3343 377.0781 377.8218 378.5656 379.3093
380.0531 380.7968 381.5405 382.2843 383.028 383.7718 384.5155
385.2593 386.003 386.7467 387.4905 388.2342 388.978 389.7217
390.4655 391.2092 391.953 392.6967 393.4404 394.1842 394.9279
395.6717 396.4154 397.1592 397.9029 398.6466 399.3904 400.1341
400.8779 401.6216 402.3654 403.1091 403.8529 404.5966 405.3403
406.0841 406.8278 407.5716 408.3153 409.0591 409.8028 410.5465
411.2903 412.034 412.7778 413.5215 414.2653 415.009 415.7528
416.4965 417.2402 417.984 418.7277 419.4715 420.2152 420.959
421.7027 422.4464 423.1902 423.9339 424.6777 425.4214 426.1652
426.9089 427.6527 428.3964 429.1401 429.8839 430.6276 431.3714
432.1151 432.8589 433.6026 434.3463 435.0901 435.8338 436.5776
437.3213 438.0651 438.8088 439.5526 440.2963 441.04 441.7838
442.5275 443.2713 444.015 444.7588 445.5025 446.2462 446.99
447.7337 448.4775 449.2212 449.965 450.7087 451.4525 452.1962
452.9399 453.6837 454.4274 455.1712 455.9149 456.6587 457.4024
458.1461 458.8899 459.6336 460.3774 461.1211 461.8649 462.6086
463.3524 464.0961 464.8398 465.5836 466.3273 467.0711 467.8148
468.5586 469.3023 470.046 470.7898 471.5335 472.2773 473.021
473.7648 474.5085 475.2523 475.996 476.7397 477.4835 478.2272
478.971 479.7147 480.4585 481.2022 481.9459 482.6897 483.4334
484.1772 484.9209 485.6647 486.4084 487.1522 487.8959 488.6396
489.3834 490.1271 490.8709 491.6146 492.3584 493.1021 493.8458
494.5896 495.3333 496.0771 496.8208 497.5646 498.3083 499.0521
499.7958 500.5395 501.2833 502.027 502.7708 503.5145 504.2583
505.002 505.7457 506.4895 507.2332 507.977 508.7207 509.4645
510.2082 510.952 511.6957 512.4394 513.1832 513.9269 514.6707
515.4144 516.1582 516.9019 517.6456 518.3894 519.1331 519.8769
520.6206 521.3644 522.1081 522.8519 523.5956 524.3393 525.0831
525.8268 526.5706 527.3143 528.0581 528.8018 529.5455 530.2893
531.033 531.7768 532.5205 533.2643 534.008 534.7518 535.4955
536.2392 536.983 537.7267 538.4705 539.2142 539.958 540.7017
541.4454 542.1892 542.9329 543.6767 544.4204 545.1642 545.9079
546.6517 547.3954 548.1391 548.8829 549.6266 550.3704 551.1141
551.8579 552.6016 553.3453 554.0891 554.8328 555.5766 556.3203
557.0641 557.8078 558.5516 559.2953 560.039 560.7828 561.5265
562.2703 563.014 563.7578 564.5015 565.2452 565.989 566.7327
567.4765 568.2202 568.964 569.7077 570.4515 571.1952 571.9389
572.6827 573.4264 574.1702 574.9139 575.6577 576.4014 577.1451
577.8889 578.6326 579.3764 580.1201 580.8639 581.6076 582.3514
583.0951 583.8388 584.5826 585.3263 586.0701 586.8138 587.5576
588.3013 589.045 589.7888 590.5325 591.2763 592.02 592.7638
593.5075 594.2513 594.995 595.7387 596.4825 597.2262 597.97
598.7137 599.4575 600.2012 600.9449 601.6887 602.4324 603.1762
603.9199 604.6637 605.4074 606.1512 606.8949 607.6386 608.3824
609.1261 609.8699 610.6136 611.3574 612.1011 612.8448 613.5886
614.3323 615.0761 615.8198 616.5636 617.3073 618.0511 618.7948
619.5385 620.2823 621.026 621.7698 622.5135 623.2573 624.001
624.7447 625.4885 626.2322 626.976 627.7197 628.4635 629.2072
629.951 630.6947 631.4384 632.1822 632.9259 633.6697 634.4134
635.1572 635.9009 636.6446 637.3884 638.1321 638.8759 639.6196
640.3634 641.1071 641.8509 642.5946 643.3383 644.0821 644.8258
645.5696 646.3133 647.0571 647.8008 648.5445 649.2883 650.032
650.7758 651.5195 652.2633 653.007 653.7508 654.4945 655.2382
655.982 656.7257 657.4695 658.2132 658.957 659.7007 660.4444
661.1882 661.9319 662.6757 663.4194 664.1632 664.9069 665.6507
666.3944 667.1381 667.8819 668.6256 669.3694 670.1131 670.8569
671.6006 672.3443 673.0881 673.8318 674.5756 675.3193 676.0631
676.8068 677.5506 678.2943 679.038 679.7818 680.5255 681.2693
682.013 682.7568 683.5005 684.2442 684.988 685.7317 686.4755
687.2192 687.963 688.7067 689.4505 690.1942 690.9379 691.6817
692.4254 693.1692 693.9129 694.6567 695.4004 696.1441 696.8879
697.6316 698.3754 699.1191 699.8629 700.6066 701.3504 702.0941
702.8378 703.5816 704.3253 705.0691 705.8128 706.5566 707.3003
708.044 708.7878 709.5315 710.2753 711.019 711.7628 712.5065
713.2503 713.994 714.7377 715.4815 716.2252 716.969 717.7127
718.4565 719.2002 719.9439 720.6877 721.4314 722.1752 722.9189
723.6627 724.4064 725.1502 725.8939 726.6376 727.3814 728.1251
728.8689 729.6126 730.3564 731.1001 731.8438 732.5876 733.3313
734.0751 734.8188 735.5626 736.3063 737.0501 737.7938 738.5375
739.2813 740.025 740.7688 741.5125 742.2563 743. ]
179983507.878
Error inflection=132950348.197616
100,000 hits/hour excepted at week 9.837964434790596
Process finished with exit code 0