MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)人體脂肪百分比數(shù)據(jù)|附代碼數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=22739
最近我們被客戶要求撰寫關(guān)于神經(jīng)網(wǎng)絡(luò)的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
這個(gè)例子說明了一個(gè)函數(shù)擬合的神經(jīng)網(wǎng)絡(luò)如何根據(jù)測(cè)量結(jié)果來估計(jì)脂肪百分比(BFP)?
問題:估計(jì)脂肪百分比
在這個(gè)例子中,我們?cè)噲D建立一個(gè)神經(jīng)網(wǎng)絡(luò)來估計(jì)一個(gè)人的脂肪百分比,這個(gè)人由13個(gè)物理屬性描述。
年齡
體重
身高
頸圍
胸圍
腹部周長(zhǎng)?
臀圍?
大腿周長(zhǎng)?
膝蓋周長(zhǎng)
踝關(guān)節(jié)周長(zhǎng)
肱二頭肌(伸展)周長(zhǎng)
前臂周長(zhǎng)
腕圍
這是一個(gè)擬合問題的例子,其中輸入與相關(guān)的目標(biāo)輸出相匹配,我們希望創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò),它不僅可以估計(jì)已知的目標(biāo),給定已知的輸入,而且還可以泛化,來準(zhǔn)確估計(jì)未知數(shù)據(jù)的結(jié)果。
為什么是神經(jīng)網(wǎng)絡(luò)?
神經(jīng)網(wǎng)絡(luò)在函數(shù)擬合問題上非常出色。一個(gè)有足夠多的元素(稱為神經(jīng)元)的神經(jīng)網(wǎng)絡(luò)可以以任意的精度擬合任何數(shù)據(jù)。它們特別適合于解決非線性問題。鑒于現(xiàn)實(shí)世界的非線性性質(zhì),如身體脂肪的增加,神經(jīng)網(wǎng)絡(luò)是解決該問題的不錯(cuò)方法。
十三個(gè)物理屬性將作為神經(jīng)網(wǎng)絡(luò)的輸入,而體脂百分比將是目標(biāo)。
該網(wǎng)絡(luò)通過使用已經(jīng)知道體脂百分比的人體數(shù)據(jù)來建立模型,來訓(xùn)練它產(chǎn)生目標(biāo)值。
準(zhǔn)備數(shù)據(jù)
函數(shù)擬合的數(shù)據(jù)是兩個(gè)矩陣,即輸入矩陣X和目標(biāo)矩陣T。
輸入矩陣的每一列將有13個(gè)元素,代表一個(gè)已知脂肪百分比的身體數(shù)據(jù)。
目標(biāo)矩陣的每一對(duì)應(yīng)列將有一個(gè)元素,代表脂肪百分比。
加載數(shù)據(jù)集后,我們可以查看輸入X和目標(biāo)變量T的大小。
請(qǐng)注意,X和T都有252列。這些代表了252種體質(zhì)(輸入變量)和相關(guān)的體脂百分比(目標(biāo)變量)。
輸入矩陣X有13行,代表13個(gè)屬性。目標(biāo)矩陣T只有一行,因?yàn)閷?duì)于每個(gè)例子我們只有一個(gè)期望的輸出,即脂肪百分比。
size(X)size(T)

用神經(jīng)網(wǎng)絡(luò)擬合函數(shù)
下一步是創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò),它將學(xué)習(xí)估計(jì)脂肪百分比。
由于神經(jīng)網(wǎng)絡(luò)以隨機(jī)的初始權(quán)重開始,這個(gè)例子每次運(yùn)行的結(jié)果都會(huì)略有不同。設(shè)置隨機(jī)種子是為了避免這種隨機(jī)性。
setdemorandstream(491)
兩層(即一個(gè)隱藏層)前饋神經(jīng)網(wǎng)絡(luò)可以擬合任何輸入-輸出關(guān)系,只要隱藏層有足夠的神經(jīng)元。不屬于輸出層的層被稱為隱藏層。
在這個(gè)例子中,我們將嘗試使用由15個(gè)神經(jīng)元組成的單一隱藏層。一般來說,更難的問題需要更多的神經(jīng)元,也許需要更多的層。較簡(jiǎn)單的問題則需要較少的神經(jīng)元。
輸入和輸出的大小為0,因?yàn)樯窠?jīng)網(wǎng)絡(luò)還沒有被配置為與我們的輸入和目標(biāo)數(shù)據(jù)相匹配。將在網(wǎng)絡(luò)被訓(xùn)練時(shí)進(jìn)行。
net?=?fitnet(15);view(net)

現(xiàn)在,網(wǎng)絡(luò)已經(jīng)準(zhǔn)備好被訓(xùn)練了。樣本被自動(dòng)劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集。訓(xùn)練集被用來訓(xùn)練網(wǎng)絡(luò)。只要網(wǎng)絡(luò)在驗(yàn)證集上繼續(xù)改進(jìn),訓(xùn)練就會(huì)繼續(xù)。測(cè)試集提供了一個(gè)完全獨(dú)立的網(wǎng)絡(luò)準(zhǔn)確性的衡量標(biāo)準(zhǔn)。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容

【視頻】CNN(卷積神經(jīng)網(wǎng)絡(luò))模型以及R語言實(shí)現(xiàn)回歸數(shù)據(jù)分析
左右滑動(dòng)查看更多
01

02

03

04

神經(jīng)網(wǎng)絡(luò)訓(xùn)練工具顯示正在訓(xùn)練的網(wǎng)絡(luò)和用于訓(xùn)練的算法。它還顯示了訓(xùn)練期間的訓(xùn)練狀態(tài),停止訓(xùn)練的標(biāo)準(zhǔn)將以綠色突出顯示。
底部的按鈕可以打開有用的圖表,這些圖表可以在訓(xùn)練中和訓(xùn)練后打開。算法名稱和繪圖按鈕旁邊的鏈接可以打開關(guān)于這些主題的文檔。
?train(net,X,T);

要看網(wǎng)絡(luò)的性能在訓(xùn)練中是如何提高的,可以點(diǎn)擊訓(xùn)練工具中的 "性能 "按鈕。
性能是以均方誤差來衡量的,并以對(duì)數(shù)比例顯示。隨著網(wǎng)絡(luò)的訓(xùn)練,誤差迅速減小。訓(xùn)練集、驗(yàn)證集和測(cè)試集的性能分別顯示。最終的網(wǎng)絡(luò)是在驗(yàn)證集上表現(xiàn)最好的網(wǎng)絡(luò)。
plotperform(tr)

測(cè)試神經(jīng)網(wǎng)絡(luò)
現(xiàn)在可以測(cè)量訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)的均方誤差與測(cè)試樣本的關(guān)系。我們可以了解該網(wǎng)絡(luò)在應(yīng)用于真實(shí)數(shù)據(jù)時(shí)的表現(xiàn)如何。
mse(net,testT,testY)

另一個(gè)衡量神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)擬合程度的方法是回歸圖。這里的回歸圖是在所有樣本中繪制的。
回歸圖顯示了實(shí)際網(wǎng)絡(luò)輸出與目標(biāo)值的關(guān)系。如果網(wǎng)絡(luò)已經(jīng)學(xué)會(huì)了很好地?cái)M合數(shù)據(jù),那么這個(gè)輸出-目標(biāo)關(guān)系的線性擬合應(yīng)該與圖的左下角和右上角緊密相交。
如果不是這樣,那么進(jìn)一步的訓(xùn)練,或者訓(xùn)練一個(gè)有更多隱藏神經(jīng)元的網(wǎng)絡(luò)。
plot(T,Y)

另一個(gè)衡量神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)的擬合程度的方法是誤差直方圖。這顯示了誤差大小是如何分布的。通常情況下,大多數(shù)誤差接近零,很少有誤差遠(yuǎn)離零。
e?=?T?-?Y;hist(e)

這個(gè)例子說明了如何設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò),從身體特征來估計(jì)脂肪百分比。

點(diǎn)擊文末?“閱讀原文”
獲取全文完整代碼數(shù)據(jù)資料。
本文選自《MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)人體脂肪百分比》。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
【視頻】CNN(卷積神經(jīng)網(wǎng)絡(luò))模型以及R語言實(shí)現(xiàn)回歸數(shù)據(jù)分析
Python用LSTM長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)對(duì)不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測(cè)分析
深度學(xué)習(xí)實(shí)現(xiàn)自編碼器Autoencoder神經(jīng)網(wǎng)絡(luò)異常檢測(cè)心電圖ECG時(shí)間序列spss modeler用決策樹神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)ST的股票
Python中TensorFlow的長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)、指數(shù)移動(dòng)平均法預(yù)測(cè)股票市場(chǎng)和可視化
RNN循環(huán)神經(jīng)網(wǎng)絡(luò) 、LSTM長(zhǎng)短期記憶網(wǎng)絡(luò)實(shí)現(xiàn)時(shí)間序列長(zhǎng)期利率預(yù)測(cè)
結(jié)合新冠疫情COVID-19股票價(jià)格預(yù)測(cè):ARIMA,KNN和神經(jīng)網(wǎng)絡(luò)時(shí)間序列分析
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡(jiǎn)單文本分類分析新聞組數(shù)據(jù)
用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測(cè)銀行客戶流失模型
PYTHON用LSTM長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化方法預(yù)測(cè)時(shí)間序列洗發(fā)水銷售數(shù)據(jù)
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測(cè)、準(zhǔn)確度檢查和結(jié)果可視化
R語言深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò) (CNN)對(duì) CIFAR 圖像進(jìn)行分類:訓(xùn)練與結(jié)果評(píng)估可視化
深度學(xué)習(xí):Keras使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡(jiǎn)單文本分類分析新聞組數(shù)據(jù)
Python用LSTM長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)對(duì)不穩(wěn)定降雨量時(shí)間序列進(jìn)行預(yù)測(cè)分析
R語言深度學(xué)習(xí)Keras循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)模型預(yù)測(cè)多輸出變量時(shí)間序列
R語言KERAS用RNN、雙向RNNS遞歸神經(jīng)網(wǎng)絡(luò)、LSTM分析預(yù)測(cè)溫度時(shí)間序列、 IMDB電影評(píng)分情感
Python用Keras神經(jīng)網(wǎng)絡(luò)序列模型回歸擬合預(yù)測(cè)、準(zhǔn)確度檢查和結(jié)果可視化R語言中的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)時(shí)間序列:多層感知器(MLP)和極限學(xué)習(xí)機(jī)(ELM)數(shù)據(jù)分析報(bào)告
R語言深度學(xué)習(xí):用keras神經(jīng)網(wǎng)絡(luò)回歸模型預(yù)測(cè)時(shí)間序列數(shù)據(jù)
Matlab用深度學(xué)習(xí)長(zhǎng)短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對(duì)文本數(shù)據(jù)進(jìn)行分類
R語言KERAS深度學(xué)習(xí)CNN卷積神經(jīng)網(wǎng)絡(luò)分類識(shí)別手寫數(shù)字圖像數(shù)據(jù)(MNIST)
MATLAB中用BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)人體脂肪百分比數(shù)據(jù)
Python中用PyTorch機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)分類預(yù)測(cè)銀行客戶流失模型
R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
SAS使用鳶尾花(iris)數(shù)據(jù)集訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)(ANN)模型
【視頻】R語言實(shí)現(xiàn)CNN(卷積神經(jīng)網(wǎng)絡(luò))模型進(jìn)行回歸數(shù)據(jù)分析
Python使用神經(jīng)網(wǎng)絡(luò)進(jìn)行簡(jiǎn)單文本分類
R語言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
R語言基于遞歸神經(jīng)網(wǎng)絡(luò)RNN的溫度時(shí)間序列預(yù)測(cè)
R語言神經(jīng)網(wǎng)絡(luò)模型預(yù)測(cè)車輛數(shù)量時(shí)間序列
R語言中的BP神經(jīng)網(wǎng)絡(luò)模型分析學(xué)生成績(jī)
matlab使用長(zhǎng)短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)對(duì)序列數(shù)據(jù)進(jìn)行分類
R語言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)和結(jié)果可視化
用R語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)股票實(shí)例
使用PYTHON中KERAS的LSTM遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行時(shí)間序列預(yù)測(cè)
python用于NLP的seq2seq模型實(shí)例:用Keras實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯
用于NLP的Python:使用Keras的多標(biāo)簽文本LSTM神經(jīng)網(wǎng)絡(luò)分類