机器学习中梯度下降算法java实现

补充下对梯度下降算法的认知:梯度下降算法在机器学习中很常见,主要是找到最小值。为什么要找到最小值?是因为要找损失函数。损失函数是什么?损失函数是为了计算机拟合函数与目标(真实)函数的误差,梯度下降算法找到最小值,即得到最佳的拟合函数,这样就可以预测了。
https://blog.csdn.net/zzh1301051836/article/details/79082958

java实现代码

public static void main(String[] args) {
        //初始值,决定迭代的算法的效率
        double step = 0.01, x = -10;
        //结束条件,可以根据迭代次数,也可以是达到条件后停止
        double precision = 0.01, iter = 0;
        //函数
        double y = Math.pow(x-10, 2);
        //x,y在每次迭代后的变化值
        double y_diff, x_diff;
        do {
            x_diff = step *  (2 * x - 20);//x的变化幅度,(2 * x - 20)为导函数(x-10)^2的导函数,怎么求
            x = x - x_diff;//x的改变化的值
            double y_cur = Math.pow(x-10, 2);
            y_diff = y - y_cur;//获得y值的变化量,如果y值变化量达到指定条件,刚迭代结束
            y = y_cur;
            iter++;
            System.out.println("iter:" + iter + "(" + x + "," + y + ") precision:" + x_diff + "," + y_diff);
        }while (y_diff > precision);
    }

函数图像

这里写图片描述

输出值

iter:1.0(-9.6,384.1600000000001) precision:-0.4,15.839999999999918
iter:2.0(-9.208,368.94726399999996) precision:-0.392,15.21273600000012
iter:3.0(-8.82384,354.3369523456) precision:-0.38416,14.610311654399936
iter:4.0(-8.4473632,340.3052090327142) precision:-0.3764768,14.031743312885851
iter:5.0(-8.078415936,326.8291227550187) precision:-0.36894726399999994,13.476086277695458
iter:6.0(-7.716847617280001,313.88668949392013) precision:-0.36156831872,12.942433261098586
iter:7.0(-7.362510664934401,301.45677658996084) precision:-0.3543369523456001,12.429912903959291
iter:8.0(-7.015260451635713,289.5190882369983) precision:-0.34725021329868805,11.937688352962539
iter:9.0(-6.674955242602999,278.0541323428132) precision:-0.3403052090327142,11.464955894185096
iter:10.0(-6.341456137750939,267.0431887020378) precision:-0.33349910485205997,11.010943640775395
iter:11.0(-6.01462701499592,256.46827842943713) precision:-0.3268291227550188,10.574910272600675
iter:12.0(-5.694334474696001,246.31213460363142) precision:-0.3202925402999184,10.156143825805714
iter:13.0(-5.380447785202081,236.55817407332762) precision:-0.31388668949392,9.7539605303038
iter:14.0(-5.07283882949804,227.1904703800238) precision:-0.3076089557040416,9.36770369330381
iter:15.0(-4.771382052908079,218.1937277529749) precision:-0.3014567765899608,8.996742627048917
iter:16.0(-4.4759544118499175,209.5532561339571) precision:-0.2954276410581616,8.640471619017802
iter:17.0(-4.186435323612919,201.2549471910524) precision:-0.28951908823699835,8.298308942904697
iter:18.0(-3.9027066171406606,193.2852512822867) precision:-0.2837287064722584,7.9696959087656865
iter:19.0(-3.6246524847978474,185.63115533150815) precision:-0.27805413234281323,7.654095950778554
iter:20.0(-3.3521594351018904,178.28016158038045) precision:-0.27249304969595695,7.350993751127703
iter:21.0(-3.0851162463998527,171.22026718179737) precision:-0.2670431887020378,7.059894398583083
iter:22.0(-2.8234139214718557,164.4399446013982) precision:-0.26170232492799705,6.780322580399172
iter:23.0(-2.5669456430424185,157.92812279518282) precision:-0.2564682784294371,6.51182180621538
iter:24.0(-2.31560673018157,151.6741691324936) precision:-0.25133891286084836,6.253953662689213
iter:25.0(-2.0692945955779387,145.66787203484682) precision:-0.24631213460363144,6.0062970976467795
iter:26.0(-1.82790870366638,139.89942430226688) precision:-0.24138589191155876,5.7684477325799435
iter:27.0(-1.5913505295930523,134.35940709989714) precision:-0.23655817407332758,5.540017202369739
iter:28.0(-1.3595235190011912,129.03877457874123) precision:-0.23182701059186106,5.320632521155915
iter:29.0(-1.1323330486211673,123.92883910542304) precision:-0.22719047038002382,5.109935473318188
iter:30.0(-0.909686387648744,119.0212570768483) precision:-0.22264666097242333,4.907582028574737
iter:31.0(-0.6914926598957691,114.30801529660509) precision:-0.21819372775297488,4.713241780243209
iter:32.0(-0.47766280669785377,109.78141789085954) precision:-0.21382985319791536,4.526597405745548
iter:33.0(-0.2681095505638967,105.43407374238153) precision:-0.2095532561339571,4.347344148478015
iter:34.0(-0.06274735955261873,101.2588844221832) precision:-0.20536219101127795,4.175189320198328
iter:35.0(0.13850758763843365,97.24903259906473) precision:-0.20125494719105239,4.009851823118467
iter:36.0(0.33573743588566496,93.39797090814177) precision:-0.1972298482472313,3.851061690922961
iter:37.0(0.5290226871679516,89.69941126017936) precision:-0.19328525128228669,3.698559647962412
iter:38.0(0.7184422334245926,86.14731457427625) precision:-0.18941954625664095,3.552096685903109
iter:39.0(0.9040733887561008,82.7358809171349) precision:-0.18563115533150815,3.4114336571413446
iter:40.0(1.0859919209809787,79.45954003281639) precision:-0.18191853222487797,3.2763408843185147
iter:41.0(1.2642720825613591,76.31294224751686) precision:-0.17828016158038043,3.1465977852995337
iter:42.0(1.438986640910132,73.29094973451518) precision:-0.17471455834877284,3.0219925130016776
iter:43.0(1.6102069080919292,70.38862812502839) precision:-0.17122026718179736,2.9023216094867905
iter:44.0(1.7780027699300907,67.60123845127727) precision:-0.16779586183816142,2.7873896737511217
iter:45.0(1.9424427145314889,64.92422940860669) precision:-0.16443994460139819,2.6770090426705764
iter:46.0(2.103593860240859,62.35322992402586) precision:-0.16115114570937025,2.570999484580831
iter:47.0(2.261521983036042,59.88404201903443) precision:-0.1579281227951828,2.469187904991429
iter:48.0(2.4162915433753214,57.51263395508067) precision:-0.15476956033927916,2.3714080639537585
iter:49.0(2.567965712507815,55.23513365045946) precision:-0.1516741691324936,2.2775003046212134
iter:50.0(2.7166063982576585,53.047822357901275) precision:-0.14864068574984368,2.187311292558185
iter:51.0(2.8622742702925055,50.94712859252838) precision:-0.14566787203484682,2.1006937653728954
iter:52.0(3.0050287848866555,48.929622300264256) precision:-0.1427545145941499,2.017506292264123
iter:53.0(3.1449282091889224,46.9920092571738) precision:-0.1398994243022669,1.9376130430904581
iter:54.0(3.282029645005144,45.13112569058971) precision:-0.13710143581622156,1.8608835665840857
iter:55.0(3.4163890521050413,43.343933113242365) precision:-0.13435940709989713,1.7871925773473478
iter:56.0(3.5480612710629407,41.62751336195796) precision:-0.13167221895789918,1.7164197512844055
iter:57.0(3.677100045641682,39.97906383282442) precision:-0.1290387745787412,1.6484495291335364
iter:58.0(3.803558044728848,38.395892905044576) precision:-0.12645799908716637,1.5831709277798467
iter:59.0(3.927486883834271,36.8754155460048) precision:-0.12392883910542304,1.5204773590397735
iter:60.0(4.048937146157586,35.41514909038302) precision:-0.12145026232331457,1.4602664556217846
iter:61.0(4.167958403234434,34.01270918640385) precision:-0.11902125707684828,1.4024399039791646
iter:62.0(4.284599235169745,32.66580590262226) precision:-0.11664083193531133,1.346903283781593
iter:63.0(4.39890725046635,31.37223998887842) precision:-0.1143080152966051,1.2935659137438407
iter:64.0(4.5109291054570235,30.12989928531883) precision:-0.11202185499067299,1.242340703559588
iter:65.0(4.620710523347883,28.936755273620207) precision:-0.10978141789085953,1.1931440116986245
iter:66.0(4.728296312880926,27.79085976478484) precision:-0.10758578953304233,1.1458955088353662
iter:67.0(4.833730386623308,26.690341718099358) precision:-0.10543407374238148,1.1005180466854831
iter:68.0(4.937055778890842,25.633404186062624) precision:-0.10332539226753384,1.0569375320367342
iter:69.0(5.038314663313025,24.618321380294542) precision:-0.10125888442218317,1.0150828057680812
iter:70.0(5.137548370046765,23.643435853634877) precision:-0.0992337067337395,0.9748855266596657
iter:71.0(5.234797402645829,22.707155793830935) precision:-0.09724903259906471,0.9362800598039414
iter:72.0(5.330101454592913,21.807952424395232) precision:-0.09530405194708343,0.8992033694357033
iter:73.0(5.4234994255010545,20.944357508389178) precision:-0.09339797090814175,0.8635949160060541
iter:74.0(5.515029436991034,20.114960951056965) precision:-0.09153001148997891,0.8293965573322133
iter:75.0(5.604728848251213,19.318408497395108) precision:-0.08969941126017933,0.7965524536618567
iter:76.0(5.692634271286189,18.55339952089826) precision:-0.08790542303497574,0.7650089764968477
iter:77.0(5.778781585860465,17.818684899870686) precision:-0.08614731457427623,0.7347146210275746
iter:78.0(5.863205954143256,17.113064977835812) precision:-0.0844243682827907,0.7056199220348738
iter:79.0(5.945941835060391,16.43538760471351) precision:-0.0827358809171349,0.6776773731223003
iter:80.0(6.027022998359183,15.784546255566854) precision:-0.08108116329879218,0.650841349146658
iter:81.0(6.106482538392,15.159478223846403) precision:-0.07945954003281633,0.6250680317204509
iter:82.0(6.1843528876241605,14.559162886182083) precision:-0.07787034923216,0.6003153376643198
iter:83.0(6.2606658298716775,13.982620035889271) precision:-0.0763129422475168,0.576542850292812
iter:84.0(6.335452513274244,13.428908282468058) precision:-0.07478668340256645,0.5537117534212133
iter:85.0(6.408743463008759,12.897123514482322) precision:-0.07329094973451512,0.5317847679857355
iter:86.0(6.4805685937485835,12.386397423308823) precision:-0.07182513073982483,0.510726091173499
iter:87.0(6.550957221873611,11.895896085345797) precision:-0.07038862812502833,0.49050133796302653
iter:88.0(6.61993807743614,11.4248186003661) precision:-0.06898085556252777,0.4710774849796966
iter:89.0(6.687539315887417,10.972395783791603) precision:-0.0676012384512772,0.45242281657449723
iter:90.0(6.753788529569668,10.537888910753457) precision:-0.06624921368225166,0.4345068730381456
iter:91.0(6.818712758978275,10.120588509887622) precision:-0.06492422940860663,0.41730040086583564
iter:92.0(6.882338503798709,9.71981320489607) precision:-0.06362574482043451,0.40077530499155145
iter:93.0(6.944691733722735,9.334908601982189) precision:-0.06235322992402582,0.3849046029138812
iter:94.0(7.00579789904828,8.965246221343696) precision:-0.06110616532554531,0.3696623806384931
iter:95.0(7.065681941067314,8.610222470978483) precision:-0.05988404201903441,0.3550237503652127
iter:96.0(7.124368302245968,8.269257661127735) precision:-0.058686361178653716,0.34096480985074784
iter:97.0(7.181880936201049,7.941795057747077) precision:-0.05751263395508063,0.327462603380658
iter:98.0(7.2382433174770275,7.627299973460294) precision:-0.05636238127597903,0.31449508428678286
iter:99.0(7.293478451127487,7.3252588945112675) precision:-0.05523513365045945,0.3020410789490269
iter:100.0(7.347608882104937,7.035178642288623) precision:-0.05413043097745027,0.2900802522226442
iter:101.0(7.400656704462838,6.756585568053994) precision:-0.053047822357901266,0.278593074234629
iter:102.0(7.452643570373581,6.489024779559055) precision:-0.051986865910743245,0.26756078849493914
iter:103.0(7.50359069896611,6.2320593982885155) precision:-0.050947128592528375,0.2569653812705397
iter:104.0(7.553518884986787,5.985269846116292) precision:-0.049928186020677806,0.2467895521722232
iter:105.0(7.602448507287051,5.748253160210088) precision:-0.04892962230026426,0.2370166859062044
iter:106.0(7.65039953714131,5.520622335065769) precision:-0.047951029854258975,0.22763082514431865
iter:107.0(7.697391546398484,5.302005690597164) precision:-0.0469920092571738,0.21861664446860551
iter:108.0(7.743443715470515,5.092046265249515) precision:-0.046052169072030316,0.2099594253476491
iter:109.0(7.788574841161105,4.890401233145632) precision:-0.045131125690589705,0.2016450321038823
iter:110.0(7.832803344337883,4.6967413443130654) precision:-0.0442285031767779,0.1936598888325669
iter:111.0(7.876147277451125,4.51075038707827) precision:-0.04334393311324235,0.18599095723479575
iter:112.0(7.918624331902103,4.332124671749969) precision:-0.042477054450977506,0.17862571532830085
iter:113.0(7.960251845264061,4.160572534748669) precision:-0.04162751336195795,0.17155213700130023
iter:114.0(8.00104680835878,3.995813862372622) precision:-0.040794963094718785,0.1647586723760468
iter:115.0(8.041025872191604,3.837579633422667) precision:-0.03997906383282441,0.15823422894995476
iter:116.0(8.080205354747772,3.685611479939128) precision:-0.039179482556167926,0.15196815348353887
iter:117.0(8.118601247652817,3.5396612653335358) precision:-0.03839589290504456,0.14595021460559243
iter:118.0(8.15622922269976,3.399490679226329) precision:-0.03762797504694365,0.14017058610720667
iter:119.0(8.193104638245766,3.264870848328966) precision:-0.03687541554600479,0.13461983089736318
iter:120.0(8.22924254548085,3.1355819627351367) precision:-0.03613790723508469,0.12928888559382923
iter:121.0(8.264657694571234,3.0114129170108246) precision:-0.035415149090382986,0.12416904572431209
iter:122.0(8.299364540679809,2.8921609654971965) precision:-0.03470684610857532,0.11925195151362811
iter:123.0(8.333377249866214,2.7776313912635056) precision:-0.03401270918640382,0.11452957423369092
iter:124.0(8.366709704868889,2.6676371881694725) precision:-0.03333245500267573,0.10999420309403307
iter:125.0(8.399375510771511,2.56199875551796) precision:-0.032665805902622226,0.10563843265151229
iter:126.0(8.431388000556082,2.460543604799448) precision:-0.032012489784569775,0.10145515071851241
iter:127.0(8.46276024054496,2.363106078049391) precision:-0.03137223998887837,0.09743752675005668
iter:128.0(8.49350503573406,2.2695270773586356) precision:-0.030744795189100813,0.09357900069075553
iter:129.0(8.523634935019379,2.179653805095234) precision:-0.0301298992853188,0.08987327226340147
iter:130.0(8.553162236318991,2.093339514413462) precision:-0.029527301299612424,0.08631429068177221
iter:131.0(8.582098991592611,2.010443269642691) precision:-0.028936755273620173,0.08289624477077107
iter:132.0(8.610457011760758,1.9308297161648424) precision:-0.02835802016814778,0.07961355347784838
iter:133.0(8.638247871525543,1.8543688594047139) precision:-0.02779085976478484,0.07646085676012859
iter:134.0(8.665482914095032,1.780935852572289) precision:-0.027235042569489137,0.07343300683242493
iter:135.0(8.692173255813131,1.710410792810426) precision:-0.026690341718099368,0.07052505976186296
iter:136.0(8.718329790696869,1.6426785254151326) precision:-0.02615653488373738,0.06773226739529337
iter:137.0(8.743963194882932,1.5776284558086917) precision:-0.02563340418606263,0.06505006960644089
iter:138.0(8.769083930985273,1.515154368958668) precision:-0.025120736102341362,0.06247408685002376
iter:139.0(8.793702252365568,1.4551542559479034) precision:-0.02461832138029454,0.06000011301076458
iter:140.0(8.817828207318257,1.3975301474123654) precision:-0.024125954952688638,0.05762410853553801
iter:141.0(8.841471643171893,1.3421879535748338) precision:-0.023643435853634855,0.055342193837531584
iter:142.0(8.864642210308455,1.2890373106132704) precision:-0.023170567136562143,0.053150642961563355
iter:143.0(8.887349366102287,1.2379914331129833) precision:-0.0227071557938309,0.05104587750028711
iter:144.0(8.90960237878024,1.18896697236171) precision:-0.022253012677954268,0.04902446075127331
iter:145.0(8.931410331204635,1.1418838802561881) precision:-0.02180795242439519,0.04708309210552186
iter:146.0(8.952782124580542,1.0966652785980426) precision:-0.021371793375907302,0.04521860165814551
iter:147.0(8.973726482088932,1.0532373335655603) precision:-0.020944357508389154,0.043427945032482373
iter:148.0(8.994251952447152,1.011529135156365) precision:-0.02052547035822137,0.041708198409195374
iter:149.0(9.01436691339821,0.9714725814041729) precision:-0.02011496095105695,0.04005655375219197
iter:150.0(9.034079575130246,0.9330022671805663) precision:-0.019712661732035813,0.03847031422360658
iter:151.0(9.05339798362764,0.8960553774002175) precision:-0.019318408497395082,0.03694688978034888
iter:152.0(9.072330023955088,0.8605715844551681) precision:-0.0189320403274472,0.03548379294504933
iter:153.0(9.090883423475987,0.8264929497107424) precision:-0.018553399520898246,0.03407863474442574
iter:154.0(9.109065755006467,0.7937638289021961) precision:-0.01818233153048027,0.032729120808546286
iter:155.0(9.126884439906338,0.7623307812776698) precision:-0.017818684899870655,0.031433047624526256
iter:156.0(9.14434675110821,0.7321424823390741) precision:-0.01746231120187325,0.03018829893859576
iter:157.0(9.161459816086047,0.7031496400384454) precision:-0.017113064977835785,0.028992842300628707
iter:158.0(9.178230619764326,0.6753049142929234) precision:-0.016770803678279052,0.027844725745521992
iter:159.0(9.19466600736904,0.6485628396869227) precision:-0.016435387604713476,0.026742074606000643
iter:160.0(9.21077268722166,0.6228797512353205) precision:-0.016106679852619196,0.025683088451602276
iter:161.0(9.226557233477227,0.5982137130864015) precision:-0.01578454625556681,0.02466603814891899
iter:162.0(9.242026088807682,0.5745244500481798) precision:-0.015468855330455469,0.02368926303822172
iter:163.0(9.257185567031529,0.5517732818262711) precision:-0.015159478223846357,0.022751168221908702
iter:164.0(9.2720418556909,0.5299230598659496) precision:-0.014856288659369419,0.021850221960321492
iter:165.0(9.28660101857708,0.5089381066952592) precision:-0.014559162886182015,0.02098495317069038
iter:166.0(9.300868998205539,0.48878415767012656) precision:-0.014267979628458391,0.020153949025132623
iter:167.0(9.314851618241429,0.46942830502638894) precision:-0.01398262003588922,0.019355852643737625
iter:168.0(9.3285545858766,0.45083894414734516) precision:-0.013702967635171426,0.01858936087904378
iter:169.0(9.341983494159066,0.4329857219591113) precision:-0.013428908282468016,0.017853222188233875
iter:170.0(9.355143824275885,0.41583948736953086) precision:-0.01316033011681867,0.017146234589580422
iter:171.0(9.368040947790368,0.3993722436696968) precision:-0.012897123514482302,0.016467243699834044
iter:172.0(9.38068012883456,0.3835571028203763) precision:-0.012639181044192647,0.015815140849320508
iter:173.0(9.39306652625787,0.3683682415486884) precision:-0.012386397423308786,0.015188861271687892
iter:174.0(9.405205195732712,0.3537808591833611) precision:-0.012138669474842594,0.014587382365327306
iter:175.0(9.417101091818058,0.3397711371597003) precision:-0.011895896085345754,0.014009722023660798
iter:176.0(9.428759069981696,0.3263162001281765) precision:-0.011657978163638845,0.013454937031523784
iter:177.0(9.440183888582062,0.31339407860310076) precision:-0.011424818600366074,0.01292212152507577
iter:178.0(9.451380210810422,0.3009836730904171) precision:-0.011196322228358754,0.012410405512683631
iter:179.0(9.462352606594214,0.28906471963603597) precision:-0.010972395783791562,0.011918953454381154
iter:180.0(9.47310555446233,0.2776177567384481) precision:-0.010752947868115719,0.011446962897587898
iter:181.0(9.483643443373085,0.26662409357160477) precision:-0.010537888910753388,0.010993663166843304
iter:182.0(9.493970574505623,0.2560657794661696) precision:-0.010327131132538305,0.010558314105435174
iter:183.0(9.50409116301551,0.24592557459931008) precision:-0.010120588509887547,0.010140204866859515
iter:184.0(9.5140093397552,0.23618692184517692) precision:-0.009918176739689812,0.009738652754133159

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值