當(dāng)前位置:
首頁 >
机器学习深度学习
發(fā)布時(shí)間:2025/4/5
35
豆豆
機(jī)器學(xué)習(xí)&深度學(xué)習(xí)
機(jī)器學(xué)習(xí)篇
本代碼模塊對《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》一書中的所有代碼做了整理,解決了讀者在閱讀本書過程中困擾于書上有很多代碼在Python3環(huán)境下不能運(yùn)行的問題。我在代碼中做了大量的注釋,方便各位讀者學(xué)習(xí)。代碼地址:https://github.com/wzy6642/Machine-Learning-in-Action-Python3
深度學(xué)習(xí)篇
我在學(xué)習(xí)深度學(xué)習(xí)過程中,對代碼做了充分的整理。目前已經(jīng)完成的代碼模塊如下所示:
Pima Indians數(shù)據(jù)集為糖尿病患者醫(yī)療記錄數(shù)據(jù),是一個(gè)二分類問題。本代碼采用80%數(shù)據(jù)訓(xùn)練,20%數(shù)據(jù)測試的方法。若數(shù)據(jù)不做歸一化處理,最終模型的分類精度為 79.17%;而數(shù)據(jù)進(jìn)行歸一化以后,最終模型的分類精度為81.38%。
其中還包括一份10折交叉驗(yàn)證的代碼,最終的運(yùn)行結(jié)果為76.69% (+/- 2.95%)。
sklearn結(jié)尾的代碼為用sklearn包的KerasClassifier進(jìn)行多分類,通過10折交叉驗(yàn)證,得到最終的精度為0.7681989076737664
GridSearch結(jié)尾的代碼為用sklearn包的GridSearchCV搜索超參,得到最終的結(jié)果為Best: 0.781250 using {‘batch_size’: 10, ‘epochs’: 150, ‘init’: ‘normal’, ‘optimizer’: ‘rmsprop’}
Iris數(shù)據(jù)集為鳶尾花數(shù)據(jù)集,是一個(gè)擁有4個(gè)特征的3分類問題,數(shù)據(jù)集共有150個(gè)樣本,最終的精度為Accuracy: 83.33% (0.30)
Boston House Price數(shù)據(jù)集為1978年波士頓房價(jià)的統(tǒng)計(jì)數(shù)據(jù),共計(jì)14個(gè)特征,506個(gè)樣本。最終的精度為MSE: 12.36 (4.37)。注意:cross_val_score函數(shù)當(dāng)loss函數(shù)為mean_squared_error、mae等時(shí),其得分為負(fù)數(shù)(cross_val_score里用的指標(biāo)是負(fù)均方誤差),所以最終的MSE指標(biāo)要在交叉驗(yàn)證的結(jié)果上取相反數(shù)!
本案例中使用replace對數(shù)據(jù)集中的英文進(jìn)行了編碼處理,這是這份代碼的一個(gè)亮點(diǎn)!對數(shù)據(jù)作StandardScaler()處理,使用GridSearchCV搜索超參。最終結(jié)果為:Accuracy: 88.92% (0.01) Best: 0.886308 using {‘units_list’: [16]}
使用model.to_json()保存網(wǎng)絡(luò)結(jié)構(gòu),使用model.save_weights()保存權(quán)重。使用model_from_json(model_json)加載已經(jīng)保存好的模型。另一份代碼采用YAML格式對模型進(jìn)行保存與加載。通過加載模型的方式建立新的模型后,必須先編譯模型,后對新的數(shù)據(jù)集進(jìn)行預(yù)測。最終結(jié)果為acc: 99.33%
先用構(gòu)建好的模型對部分?jǐn)?shù)據(jù)進(jìn)行訓(xùn)練,并將網(wǎng)絡(luò)的結(jié)構(gòu)以及權(quán)重進(jìn)行保存。然后將保存的網(wǎng)絡(luò)加載并對剩余的樣本進(jìn)行增量訓(xùn)練。相比于全量更新,這樣可以大大縮短訓(xùn)練時(shí)間。最終結(jié)果為:Base acc: 98.33%\Increment acc: 96.67%
本代碼將val上的accuracy提升時(shí)候的模型的權(quán)重進(jìn)行保存(不覆蓋前一次的保存結(jié)果)。用到了Keras的ModelCheckpoint。最后一次的保存結(jié)果為:Epoch 00177: val_acc improved from 0.80000 to 0.83333, saving model to …/model/weights-improvement-177-0.83.h5
本代碼中將val上accuracy表現(xiàn)最好的模型的權(quán)重進(jìn)行保存,并將該權(quán)重導(dǎo)入用于計(jì)算此時(shí)的all_accuracy。最終得分為:acc: 96.00%
通過調(diào)用fit返回的history繪制網(wǎng)絡(luò)在train/val上accuracy/loss曲線,以觀察模型訓(xùn)練是否收斂。
通過在網(wǎng)絡(luò)中添加Dropout層,隨機(jī)使一部分神經(jīng)元不參與訓(xùn)練。本代碼中首先對輸入層添加Dropout層,然后對隱層以及輸出層添加Dropout層,經(jīng)過10折交叉驗(yàn)證,最終的結(jié)果分別為:Accuracy: 74.00% (0.28)/Accuracy: 65.33% (0.29)
本代碼塊包含兩種學(xué)習(xí)率衰減模式,一種為線性衰減,一種為指數(shù)衰減。線性衰減的最終的結(jié)果為:loss: 0.4630 - acc: 0.6533/指數(shù)衰減的最終結(jié)果為loss: 0.3380 - acc: 0.9000
mnist數(shù)據(jù)集擁有60000個(gè)樣本,每張圖片均為28x28。在本案例中首先采用傳統(tǒng)的多層感知器構(gòu)建手寫體識(shí)別的模型,其原理是把每一張圖片看成一個(gè)向量,其label為圖片代表的數(shù)字,通過構(gòu)造神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)feature與label之間的映射關(guān)系。其精度為MLP: 98.09%;使用卷積神經(jīng)網(wǎng)絡(luò):輸入層->卷積層->池化層->Dropout層->Flatten層->全連接層->輸出層。最終的分類精度為:CNN_Small: 99.07%。
本代碼中利用ImageDataGenerator對圖像進(jìn)行特征標(biāo)準(zhǔn)化、ZCA白化、旋轉(zhuǎn)、移動(dòng)、反轉(zhuǎn)、透視操作,并且介紹了文件路徑的創(chuàng)建(try:/except:)以及圖像的自動(dòng)保存。
CIFAR-10中包含了60000張圖片用于10分類任務(wù)。本代碼中設(shè)計(jì)了大型卷積神經(jīng)網(wǎng)絡(luò)用于多分類任務(wù)。利用model.summary()對模型結(jié)構(gòu)進(jìn)行輸出,TensorBoard記錄計(jì)算過程中的訓(xùn)練信息,LearningRateScheduler動(dòng)態(tài)調(diào)整學(xué)習(xí)率,GlobalAveragePooling2D進(jìn)行平均池化處理,將每一個(gè)feature map變?yōu)橐粋€(gè)特征點(diǎn)。最終的分類精度為:0.8796
IMDB數(shù)據(jù)集包括50000部電影的評價(jià)信息,label為黑白樣本。使用Embedding結(jié)合一維卷積池化可以達(dá)到0.8865的精度。參考鏈接:https://github.com/MoyanZitto/keras-cn/blob/master/docs/legacy/blog/word_embedding.md
AirlinePassengers數(shù)據(jù)集記錄了1949-1960年的國際旅客人數(shù)數(shù)據(jù)集,通過構(gòu)造t-3~t與t+1之間的時(shí)間序列,利用多層感知機(jī)進(jìn)行預(yù)測,最終結(jié)果為:_Train Score: 456.09 MSE (21.36 RMSE)/Validation Score: 2021.68 MSE (44.96 RMSE)。_另外,通過LSTM的批次間記憶,構(gòu)造神經(jīng)網(wǎng)絡(luò)模型,對數(shù)據(jù)集進(jìn)行預(yù)測。最終結(jié)果為:Train Score: 30.70 MSE/Validation Score: 105.41 MSE。
PRSA數(shù)據(jù)集記錄了北京五年內(nèi)每天的PM2.5指數(shù)以及當(dāng)天的溫度、風(fēng)速等情況,通過建立t-1日的各項(xiàng)指標(biāo)與t日的PM2.5指數(shù),構(gòu)造多變量的時(shí)間序列。利用LTSM進(jìn)行預(yù)測,預(yù)測結(jié)果為:val_loss: 53.3895。本代碼亮點(diǎn)在于時(shí)間數(shù)據(jù)的處理parse_dates以及訓(xùn)練數(shù)據(jù)集的合成shift
代碼地址:https://github.com/wzy6642/Deep_Learning_Keras
更多的代碼作者正在編寫中!
實(shí)戰(zhàn)篇
本人于今年參加了DC的房屋租金預(yù)測大賽,取得TOP1的成績,所有代碼及數(shù)據(jù)集都進(jìn)行了開源:https://github.com/wzy6642/HousePrice
除此之外,利用閑暇時(shí)間寫了一個(gè)文本編輯器,開源地址如下:https://github.com/wzy6642/TextEdit
希望能結(jié)識(shí)更多的小伙伴一起學(xué)習(xí)機(jī)器學(xué)習(xí)知識(shí),可以通過添加QQ群聯(lián)系我哦,咱們一起搞事情!點(diǎn)擊鏈接加入群聊【機(jī)器學(xué)習(xí)】:https://jq.qq.com/?_wv=1027&k=582Igkj
總結(jié)
- 上一篇: 百度指数cookie不可用解决方案
- 下一篇: 《动手学深度学习》PyTorch版本