




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
鋰電池剩余使用時(shí)間預(yù)測(cè)實(shí)驗(yàn)實(shí)證研究目錄1.緒論 [25]擁有很多的優(yōu)點(diǎn):RVM能夠得到概率輸出從而能夠進(jìn)行概率式預(yù)測(cè);在決定如何挑選適合的核函數(shù)的時(shí)候,RVM不同于SVM,可以不用受Mercer定理的束縛,因此能夠按照自身所需去構(gòu)造任意的核函數(shù);相比于SVM,RVM中的參數(shù)值是能夠自動(dòng)賦予的并不用去人為的設(shè)置懲罰因子,使得訓(xùn)練過程變得更加的簡(jiǎn)單,但是在SVM中必須要人為的去設(shè)置懲罰因子并且稍有不慎就會(huì)帶來過度學(xué)習(xí)的麻煩;相比于SVM,RVM中相關(guān)向量的數(shù)量要比支持向量的數(shù)量的更加少,擁有著更加優(yōu)越的稀疏性,而且能夠非常有效地減少預(yù)測(cè)所需要的計(jì)算時(shí)長(zhǎng),非常適合用來進(jìn)行在線預(yù)測(cè)。在SVM中,支持向量的個(gè)數(shù)會(huì)跟著訓(xùn)練樣本數(shù)的漸漸變多而呈現(xiàn)快速增長(zhǎng),因此在訓(xùn)練樣本數(shù)量非常多的情況之下使用SVM是不得當(dāng)?shù)?;相比于SVM,RVM在測(cè)驗(yàn)從不曾訓(xùn)練過的樣本時(shí)所呈現(xiàn)出來的泛化性更強(qiáng);相比于SVM,RVM在處理分類或者回歸問題的時(shí)候擁有著更好的準(zhǔn)確度。綜上所述,本文選擇以RVM算法能夠更好、更精確的預(yù)測(cè)鋰電池剩余使用時(shí)間。3鋰電池剩余使用時(shí)間預(yù)測(cè)的相關(guān)向量機(jī)方法實(shí)驗(yàn)3.1數(shù)據(jù)集分析數(shù)據(jù)集來源于NASA,選取其中一組數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù)。數(shù)據(jù)集是一組四節(jié)鋰電池(5號(hào)、6號(hào)、7號(hào)和18號(hào))在室溫下經(jīng)過三種不同的操作模式(充電、放電和阻抗)。以1.5A的恒定電流(ConstantCurrent,CC)模式下進(jìn)行充電,直到蓄電池電壓到達(dá)4.2V,然后再恒定電壓(ConstantVoltage,CV)模式下繼續(xù)充電,直到充電電流降至20mA。以2A的恒定電流(CC)模式下進(jìn)行放電,直到電池電壓分別降至2.7V、2.5V、2.2V和2.5V(電池5、6、7和18)。通過電化學(xué)阻抗譜(ElectrochemicalImpedanceSpectroscopy,EIS)頻率掃描從0.1Hz到5kHz進(jìn)行阻抗測(cè)量。重復(fù)的充電和放電循環(huán)會(huì)加速電池的老化,而阻抗測(cè)量則可以深入了解隨著老化過程而變化的電池內(nèi)部參數(shù)。當(dāng)電池達(dá)到壽命終止(EOL)標(biāo)準(zhǔn)時(shí),即額定容量衰減30%(從2小時(shí)到1.4小時(shí)),實(shí)驗(yàn)停止。數(shù)據(jù)集為B0005.mat、B0006.mat、B0007.mat和B0018.mat,此數(shù)據(jù)集是MATLAB的數(shù)據(jù)集格式,通過MATLAB軟件加載數(shù)據(jù)文件后,如圖3.1所示。圖3.1B0005數(shù)據(jù)集展示由圖3.1可知,數(shù)據(jù)集包含4列信息,如下表所示:表3.1數(shù)據(jù)集信息表數(shù)據(jù)集信息相應(yīng)解釋類型操作類型。充電、放電或者阻抗環(huán)境溫度環(huán)境溫度(攝氏度)時(shí)間周期開始的日期和時(shí)間。采用MATLAB日期向量格式。數(shù)據(jù)包含測(cè)量值的數(shù)據(jù)結(jié)構(gòu)。測(cè)量值的數(shù)據(jù)結(jié)構(gòu)打開后如圖3.2所示。圖3.2B0005.cycle.data表3.2充電字段充電字段參數(shù)相應(yīng)解釋及單位電壓測(cè)量值電池端子電壓(伏特)電流測(cè)量值電池輸出電流(安培)溫度測(cè)量指電池溫度(攝氏度)充電器電流充電器測(cè)得的電流(安培)充電電壓充電器測(cè)得的電壓(伏特)時(shí)間周期的時(shí)間向量(秒)表3.3放電字段放電字段參數(shù)相應(yīng)解釋及單位電壓測(cè)量值電池端子電壓(伏特)電流測(cè)量值電池輸出電流(安培)溫度測(cè)量指電池溫度(攝氏度)充電器電流負(fù)載下測(cè)得的電流(安培)充電電壓負(fù)載下測(cè)得的電壓(伏特)時(shí)間周期的時(shí)間向量(秒)容量放電至2.7V的電池容量(Ahr)表3.4放電字段抗阻字段參數(shù)相應(yīng)解釋及單位感應(yīng)電流感應(yīng)支路的電流(安培)電池電流電池支路中的電流(安培)電流比以上的電流比值電池阻抗根據(jù)原始數(shù)據(jù)計(jì)算出的電池阻抗(Ohms)整流阻抗校準(zhǔn)和平滑的電池阻抗(Ohms)Re估計(jì)的電解質(zhì)電阻(歐姆)Rct估計(jì)的電荷轉(zhuǎn)移電阻(歐姆)3.2數(shù)據(jù)預(yù)處理流程設(shè)計(jì)在選取預(yù)測(cè)數(shù)據(jù)時(shí),考慮到電池充電或者測(cè)量抗阻時(shí)等因素,僅選擇放電狀態(tài)模式的電池(可以默認(rèn)為是充滿電的,工作正常的電池)。即對(duì)每個(gè)數(shù)據(jù)集中類別類為“discharge”的記錄進(jìn)行分析,“discharge”的記錄數(shù)據(jù)結(jié)構(gòu)中有如圖3.3所示。圖3.3類型為放電模式下的data數(shù)據(jù)能夠用于時(shí)間預(yù)測(cè)的數(shù)據(jù)如圖3.3所示有7條,其中Capacity為電池剩余容量,其他數(shù)據(jù)均為一個(gè)197維度的向量。我們選取容量的數(shù)值,并在周期的時(shí)間向量中選擇一個(gè)最大值作為參考值,并將這些數(shù)據(jù)用于放電狀態(tài)下的電池剩余時(shí)間預(yù)測(cè)。作者利用Matlab提取容量和時(shí)長(zhǎng)數(shù)據(jù),提取數(shù)據(jù)保存于CSV文件。提取程序如下:%先加載相應(yīng)的數(shù)據(jù),如B0005.mat%輸入代碼layer=1;%容量值(charge和discharge為一個(gè)循環(huán))fori=1:10000 ifstrcmp(B0005.cycle(i).type,'discharge')%選擇放電循環(huán) capacity.B05(layer,:)=B0005.cycle(i).data.Capacity;%提取capacity layer=layer+1; endendlayer=1;%時(shí)間值(所有時(shí)間最大值)fori=1:10000 ifstrcmp(B0005.cycle(i).type,'discharge')%選擇放電循環(huán) time.B05(layer,:)=max(B0005.cycle(i).data.Time);%提取time layer=layer+1; endenda=[capacity.B05,time.B05];%生成一個(gè)矩陣,第一個(gè)是capaciy_b05的數(shù)據(jù),第二個(gè)是time_B05的數(shù)據(jù)
b=table(a);%因?yàn)閣ritetable方法需要是個(gè)表,所以需要強(qiáng)制類型轉(zhuǎn)換writetable(b,'F:\llzdc\code\B05.csv')%輸出csv文件3.3基于SVR的鋰電池剩余使用時(shí)間預(yù)測(cè)方法設(shè)計(jì)本文基于SVR算法來預(yù)測(cè)鋰電池剩余時(shí)間。考慮到鋰電池是在充電和放電狀態(tài)下最終使得電池的損耗過大從而導(dǎo)致不達(dá)標(biāo),則提取的放電的次數(shù)就可以理解為電池的可循環(huán)次數(shù)。即可以將鋰電池的放電狀態(tài)(容量和時(shí)間)作為訓(xùn)練的輸入,而鋰電池的剩余循環(huán)次數(shù)可以作為模型的輸出結(jié)果,并將兩者用支持向量的方式學(xué)習(xí)并回歸,得到一個(gè)預(yù)測(cè)的結(jié)果。鋰電池剩余時(shí)間使用時(shí)間的預(yù)測(cè)流程如圖3.4所示。圖3.4基于SVR的鋰電池剩余使用時(shí)間預(yù)測(cè)流程3.4基于RVR的鋰電池剩余使用時(shí)間預(yù)測(cè)方法設(shè)計(jì)RVM算法具有SVM許多特征,同時(shí)避免了SVM的主要的局限性。與SVM相比,RVM在核函數(shù)的選擇上可以不受限制,能夠構(gòu)建任意的核函數(shù),因此具有很強(qiáng)的泛化能力。同時(shí),RVM在多個(gè)角度如訓(xùn)練過程、測(cè)試時(shí)間和泛化情況來看都要強(qiáng)于SVM。RVM配置參數(shù)如圖3.5所示。#配置回歸模型(首次)
defregression_rvr():
rvr_model=EMRVR(kernel='linear')
returnrvr_model
defmain():
data_name=["B05","B06","B07","B18"]
train_type="first_train"#首次/其余配置模型(二選一)
foriinrange(len(data_name)):
#導(dǎo)入數(shù)據(jù)
path="./data/%s.csv"%data_name[i]
x_train,x_test,y_train,y_test=import_data(path)
#配置模型及訓(xùn)練
iftrain_type=="first_train":
rvr_model=regression_rvr()
train(rvr_model,x_train,y_train,data_name[i])
print_accuracy(rvr_model,x_train,y_train,x_test,y_test)
show_pic(rvr_model.predict(x_test),y_test,rvr_model.score(x_test,y_test))基于RVR的鋰電池剩余使用時(shí)間預(yù)測(cè)步驟如圖3.5所示。圖3.5基于RVR的鋰電池剩余使用時(shí)間預(yù)測(cè)流4鋰電池剩余使用時(shí)間預(yù)測(cè)實(shí)驗(yàn)及分析4.1實(shí)驗(yàn)環(huán)境搭建PyCharm2020.2及以上3Navigator虛擬環(huán)境4.1.1代碼運(yùn)行所需要的主要環(huán)境依賴包表4.1環(huán)境依賴包版本號(hào)依賴包版本號(hào)Joblib0.17.0Matplotlib3.3.2Numpy1.19.2Pandas1.1.3Sklearn0.23.2Sklearn_rvm0.1.1(1)Joblib在本實(shí)驗(yàn)中主要用于保存訓(xùn)練好的實(shí)驗(yàn)?zāi)P?,具體用法如Joblib.dump()與Jbolib.load()。(2)Matplotlib是一個(gè)繪圖工具集,本文主要使用方法為matplotlib.pyplot,此工具可以通過調(diào)用來生成與函數(shù)數(shù)據(jù)相關(guān)的數(shù)據(jù)圖,并創(chuàng)建窗口。具體使用如plt.figure()、plt.plot()、plt.title()和plt.shouw等方法。(3)Numpy和Pandas是Python中常用的數(shù)據(jù)處理工具,經(jīng)常用于生成矩陣、數(shù)據(jù)切分及讀取文件等操作。(4)Sklearn_rvm是一個(gè)RVM算法的工具包,里面主要包含RVM算法的相關(guān)函數(shù)及優(yōu)化方法。4.2鋰電池剩余使用時(shí)間預(yù)測(cè)的實(shí)現(xiàn)過程4.2.1SVR預(yù)測(cè)在加載SVR回歸模型時(shí),需要填入?yún)?shù),參數(shù)分別為:C、kernel、degree,其中C為懲罰參數(shù);kernel為算法中使用的內(nèi)核類型;degree為多項(xiàng)式核函數(shù)的次數(shù),若核函數(shù)為其他核函數(shù)時(shí),忽略該參數(shù)。在訓(xùn)練時(shí),由于參數(shù)是可調(diào)的,此處展示懲罰參數(shù)C=0.7時(shí),SVR的四組鋰電池預(yù)測(cè)的模型圖如圖4.1所示。(a)B05(b)B06(c)B07(d)B18圖4.1C=0.5時(shí)四組鋰電池預(yù)測(cè)得分在調(diào)試過程中,根據(jù)部分網(wǎng)絡(luò)資料參考,懲罰系數(shù)C過大時(shí),可能會(huì)造成過擬合現(xiàn)象,建議值為0.5~0.8左右。調(diào)整后預(yù)測(cè)模型得分如表4.2所示。表4.2懲罰系數(shù)與模型得分懲罰系數(shù)CB05預(yù)測(cè)得分B06預(yù)測(cè)得分B07預(yù)測(cè)得分B18預(yù)測(cè)得分C=0.50.6763230.6625220.6378970.609001C=0.60.7146380.6709320.7668980.657586C=0.70.7906270.7663890.7060570.732606C=0.80.7931710.7666240.7573570.771610表4.2中模型得分為model.score()函數(shù),其返回值為預(yù)測(cè)系數(shù)R2,如公式4-1所示。R2=1?(4-1)通過表4.2可知參數(shù)C=0.8時(shí)能夠得到相對(duì)較好的擬合效果。隨著懲罰系數(shù)C的調(diào)整,模型得分也在逐漸的提高,而數(shù)據(jù)擬合度也在不斷的提升。當(dāng)C=1.5左右時(shí),產(chǎn)生的圖像已經(jīng)存在過擬合現(xiàn)象。因此,如何為一個(gè)模型調(diào)整適當(dāng)?shù)某瑓?shù)如懲罰系數(shù)C、核函數(shù)或者在其他模型中出現(xiàn)的激活函數(shù),使得模型能夠得到較好的結(jié)果的同時(shí)且不會(huì)造成過擬合現(xiàn)象是一個(gè)值得深究的問題,本實(shí)驗(yàn)將在模擬中進(jìn)行多次參數(shù)調(diào)整,最終選取效果較明顯的過擬合圖像如圖4.2所示。圖4.2懲罰系數(shù)過高導(dǎo)致的過擬合現(xiàn)象4.2.2RVR預(yù)測(cè)RVR在預(yù)測(cè)鋰電池剩余使用時(shí)間時(shí),其方法基本與SVR無異,不同之處是無需對(duì)函數(shù)中的懲罰系數(shù)進(jìn)行設(shè)置,函數(shù)會(huì)自動(dòng)學(xué)習(xí)并調(diào)整相關(guān)超參,不需要人為設(shè)置參數(shù)。RVR預(yù)測(cè)結(jié)果如圖4.3所示。。(a)B05(b)B06(c)B07(d)B18圖4.3RVR模型預(yù)測(cè)四組鋰電池剩余使用時(shí)間由圖4.3可知,RVR在B05、B06、B07、B18這4個(gè)鋰電池?cái)?shù)據(jù)集中擬合效果較SV要更為精確。由于不需要設(shè)置懲罰系數(shù)C,該模型能夠自動(dòng)調(diào)整參數(shù)直至得到最優(yōu)解,且RVR在回歸預(yù)測(cè)時(shí)模型得分均能達(dá)到9.5及以上,說明該模型對(duì)本實(shí)驗(yàn)有較好的適應(yīng)性。4.3結(jié)果分析在表4.2中所展示的僅為一次測(cè)試的結(jié)果,由于每次從新訓(xùn)練模型時(shí),所采用的訓(xùn)練的數(shù)據(jù)集并不相等,基本占比為7:3,但是選擇的部分不同導(dǎo)致可能預(yù)測(cè)的結(jié)果也有誤差,因此表中的數(shù)據(jù)僅作為參考,并不能作為實(shí)際得分標(biāo)準(zhǔn)來評(píng)價(jià)模型。由圖4.1和圖4.3可得,RVR預(yù)測(cè)鋰電池剩余使用時(shí)間相較于SVR模型能夠更加精準(zhǔn),且不需要調(diào)整參數(shù)。經(jīng)過測(cè)試后發(fā)現(xiàn)在SVR將懲罰系數(shù)調(diào)整到2.0及以上,也能夠使模型的評(píng)分到達(dá)接近SVR測(cè)試的結(jié)果,但已經(jīng)遠(yuǎn)遠(yuǎn)超出了懲罰系數(shù)的推薦范圍值。
5總結(jié)與展望5.1總結(jié)鋰電池使用壽命預(yù)測(cè)研究的意義需要添加在鋰電池使用壽命預(yù)測(cè)研究中,國(guó)內(nèi)外學(xué)者已提出了SVM、RVM、神經(jīng)網(wǎng)絡(luò)方面及組合方法,這些方法有各自的優(yōu)點(diǎn)和缺點(diǎn)。本文選取容量和衰減時(shí)間間隔等2個(gè)因素,設(shè)計(jì)并實(shí)現(xiàn)一種基于相關(guān)向量機(jī)的鋰電池壽命預(yù)測(cè)方法。通過對(duì)比SVM和RVM算法預(yù)測(cè)結(jié)果,發(fā)現(xiàn)RVM算法不需要人為設(shè)置相應(yīng)參數(shù),能夠自動(dòng)優(yōu)化參數(shù),RVM算法使用更加簡(jiǎn)便且精度更高。5.2展望首先,由于時(shí)間有限,本項(xiàng)目所實(shí)現(xiàn)的代碼調(diào)用經(jīng)典算法包sklearn,并未對(duì)其參數(shù)和其算法內(nèi)部的數(shù)學(xué)知識(shí)進(jìn)行深入分析。其次,傳統(tǒng)算法評(píng)價(jià)是隨機(jī)抽取數(shù)據(jù)集的80%用于訓(xùn)練數(shù)據(jù)集,訓(xùn)練足夠多的次數(shù),并利用多輪次的平均值作為模型的平均得分。本文以單次模型評(píng)分來評(píng)價(jià)當(dāng)前模型,后續(xù)要進(jìn)一步對(duì)預(yù)測(cè)方法進(jìn)行測(cè)試。。參考文獻(xiàn)王萍,張吉昂,程澤.基于最小二乘支持向量機(jī)誤差補(bǔ)償模型的鋰離子電池健康狀態(tài)估計(jì)方法[J/OL].電網(wǎng)技術(shù):1-11[2021-06-05]王一宣,李澤滔.基于改進(jìn)支持向量回歸機(jī)的鋰離子電池剩余壽命預(yù)測(cè)[J].汽車技術(shù),2020,000(002):28-32.解冰.基于支持向量機(jī)的鋰離子電池壽命預(yù)測(cè)方法研究[D].華中科技大學(xué).崔納新,方浩然,楊亞寧,等.一種基于支持向量機(jī)的鋰離子電池健康狀態(tài)估計(jì)方法及系統(tǒng):.胡麗平.基于支持向量機(jī)的動(dòng)力鋰離子電池SOC估算算法研究.湖北工業(yè)大學(xué).李賽,龐曉瓊,林慧龍,等.基于相關(guān)向量機(jī)的鋰離子電池剩余壽命預(yù)測(cè)[J].計(jì)算機(jī)工程與設(shè)計(jì),2018,v.39;No.380(08):290-294.劉月峰,趙光權(quán),彭喜元.多核相關(guān)向量機(jī)優(yōu)化模型的鋰電池剩余壽命預(yù)測(cè)方法[J].電子學(xué)報(bào),2019,047(006):1285-1292.何怡剛,張朝龍,佐磊,等.基于小波降噪和相關(guān)向量機(jī)的鋰電池剩余壽命預(yù)測(cè)方法:,CN104459560A[P].2015.基于增量學(xué)習(xí)相關(guān)向量機(jī)的鋰離子電池SOC預(yù)測(cè)方法[J].電工技術(shù)學(xué)報(bào),2019,34(013):2700-2708.周建寶.基于RVM的鋰離子電池剩余壽命預(yù)測(cè)方法研究[D].哈爾濱工業(yè)大學(xué),2013.陳穎,黃凱,丁恒,田海建.基于子種群自適應(yīng)思維進(jìn)化-BP神經(jīng)網(wǎng)絡(luò)的鋰離子電池SOC估計(jì)[J/OL].電源學(xué)報(bào):1-15[2021-06-05].丁陽(yáng)征,賈建芳.改進(jìn)PSO優(yōu)化ELM預(yù)測(cè)鋰離子電池剩余壽命[J].電子測(cè)量與儀器學(xué)報(bào),2019,33(02):72-79.王竹晴.基于神經(jīng)網(wǎng)絡(luò)的鋰離子電池RUL預(yù)測(cè)方法研究[D].中北大學(xué),2019.李龍剛,李立偉,楊玉新,羅羽.基于改進(jìn)灰狼優(yōu)化與支持向量回歸的鋰電池健康狀態(tài)預(yù)測(cè)[J].南京理工大學(xué)學(xué)報(bào),2020,44(02):154-161+170.XueZ,ZhangY,ChengC,etal.RemainingUsefulLifePredictionofLithium-ionBatterieswithAdaptiveUnscentedKalmanFilterandOptimizedSupportVectorRegression[J].Neurocomputing,2019,376.楊彥茹,溫杰,史元浩,張澤慧,劉文海.基于CEEMDAN和SVR的鋰離子電池剩余使用壽命預(yù)測(cè)[J].電子測(cè)量與儀器學(xué)報(bào),2020,34(12):197-205.相關(guān)向量機(jī)優(yōu)化方法的研究[D].廣西大學(xué),2013.趙春暉,張燚.相關(guān)向量機(jī)分類方法的研究進(jìn)展與分析[J].智能系統(tǒng)學(xué)報(bào),2012(04):16-23.HarrisT.Creditscoringusingtheclusteredsupportvectormachine[J].ExpertSystemswithApplications,2015.YanMF,ZhaoGF,LiuZF,etal.L-FuzzySetsandL-FuzzySupportVectorMachine[J].JournalofTangshanNormalUniversity,2015.NelloCristianini,JohnShawe-Taylo.支持向量機(jī)導(dǎo)論[M].電子工業(yè)出版社,2004.Shalev-ShwartzS,GonenA,ShamirO.Large-scaleconvexminimizationwithalow-rankconstraint.2011.AnguitaD,BoniA.ImprovedneuralnetworkforSVMlearning[J].IEEETransNeuralNetw,2002,13(5):1243-1244.CuixiaFU,YLuo.UniversitiestheoreticalandexperimentalteachingqualityevaluationmodelbasedonRVMmachinelearningmethod[J].ModernElectronicsTechnique,2019.RafiM,ShaikhMS.AcomparisonofSVMandRVMforDocumentClassification[J].2013.
代碼附錄SVR代碼附錄importjoblib
importmatplotlib.pyplotasplt
importnumpyasnp
importpandasaspd
fromsklearnimportmodel_selection
fromsklearnimportsvm
defmain():
data_name=["B05","B06","B07","B18"]
train_type="first_train"#首次/其余配置模型(二選一)
foriinrange(len(data_name)):
#導(dǎo)入數(shù)據(jù)
path="./data/%s.csv"%data_name[i]
x_train,x_test,y_train,y_test=import_data(path)
#配置模型及訓(xùn)練
iftrain_type=="first_train":
reg=regression_svr()#首次配置模型
train_save(reg,x_train,y_train,data_name[i])
#模型評(píng)估
print_accuracy(reg,x_train,y_train,x_test,y_test)
#繪制結(jié)果圖
show_pic(reg.predict(x_test),y_test,reg.score(x_test,y_test))
eliftrain_type=="other_train":
reg=regression_svr_load(data_name[i])#導(dǎo)入已有模型(可選擇data_name[i]或"B05"等)
#模型評(píng)估
print_accuracy(reg,x_train,y_train,x_test,y_test)
#繪制結(jié)果圖
show_pic(reg.predict(x_test),y_test,reg.score(x_test,y_test))
#預(yù)測(cè)剩余電池壽命(可注釋掉)
#predict_battery_life(reg)
導(dǎo)入數(shù)據(jù)并劃分
defimport_data(file_path):
data=pd.read_csv(file_path)
#計(jì)算剩余循環(huán)次數(shù)
length=int(len(data))
#dataframe
#w.shape[0]
#返回的是dataframe對(duì)象的行數(shù)
#w.shape[1]
#返回的是dataframe對(duì)象的列數(shù)
#df.shape():查看行數(shù)和列數(shù),但是只適用于jupyterNotebook
#pycharm無法打印
#此處觀察數(shù)據(jù)集后,可以將數(shù)據(jù)集中的行數(shù)作為可循環(huán)次數(shù)當(dāng)做學(xué)習(xí)目標(biāo)
data.insert(data.shape[1],'left_cycle',abs(data.index-length+1))
#為了方便訓(xùn)練,把數(shù)據(jù)集轉(zhuǎn)換成數(shù)組類型的列表;
print(data)
data_list=data.values.tolist()
#切分x,y。x為特征
#np.splite(切分的數(shù)據(jù)集;左開右閉,x=capacitytime,y=left_cycle;axis=1時(shí),縱向切分)
x,y=np.split(data_list,(2,),axis=1)
#劃分訓(xùn)練集,測(cè)試集
x_train,x_test,y_train,y_test=model_selection.train_test_split(x,y,test_size=0.3)
returnx_train,x_test,y_train,y_test
#配置回歸模型(首次)
defregression_svr():
reg=svm.SVR(C=0.8,kernel="poly",degree=3)#可選rbfpolylinearsigmoid等
returnreg
#導(dǎo)入并配置回歸模型
defregression_svr_load(data_name):
reg=joblib.load("./model/svr/%s_model.m"%data_name)
print("已導(dǎo)入%s_model.m模型"%data_name)
returnreg
#配置分類模型(暫不用)
defclassifier():
clf=svm.SVC(C=0.5,kernel="rbf",decision_function_shape="ovr")
returnclf
訓(xùn)練并保存模型
deftrain_save(reg,x_train,y_train,data_name):
reg.fit(x_train,y_train.ravel())
joblib.dump(reg,"./model/svr/%s_model.m"%data_name)
print("模型已保存\n")
計(jì)算模塊
defshow_accuracy(a,b,tip):
acc=a.ravel()==b.ravel()
print("%s準(zhǔn)確度:%.3f"%(tip,acc))
#打印準(zhǔn)確度
defprint_accuracy(reg,x_train,y_train,x_test,y_test):
print("訓(xùn)練集預(yù)測(cè)評(píng)估值:%.3f"%reg.score(x_train,y_train))
print("測(cè)試集預(yù)測(cè)評(píng)估值:%.3f"%reg.score(x_test,y_test))
#結(jié)果打印
defshow_pic(result,y_test,score):
plt.figure()
plt.plot(np.arange(len(result)),y_test,'go-',label='truevalue')
plt.plot(np.arange(len(result)),result,'ro-',label='predictvalue')
plt.title('score:%f'%score)
plt.legend()
plt.show()
預(yù)測(cè)剩余電池壽命
defpredict_battery_life(reg):
print("請(qǐng)輸入電池容量(V):")
capability=input()
print("請(qǐng)輸入放電時(shí)長(zhǎng)(s):")
time=input()
result_time=reg.predict([[capability,time]])
print("預(yù)計(jì)剩余電池循環(huán)次數(shù)為:%s"%result_time)
if__name__=='__main__':
main()RVR代碼importjoblib
importnumpyasnp
importpandasaspd
importmatplotlib.pyplotasplt
fromsklearnimportmodel_selection
fromsklearn_rvmimportEMRVR
defmain():
data_name=["B05","B06","B07","B18"]
train_type="other_train"#首次/其余配置模型(二選一)
foriinrange(len(data_name)):
#導(dǎo)入數(shù)據(jù)
path="./data/%s.csv"%data_name[i]
x_train,x_test,y_train,y_test=import_data(path)
配置模型及訓(xùn)練
iftrain_type=="first_train":
rvr_model=regression_rvr()
train(rvr_model,x_train,y_train,data_name[i])
print_accuracy(rvr_model,x_train,y_train,x_test,y_test)
show_pic(rvr_model.predict(x_test),y_test,rvr_model.score(x_test,y_test))
eliftrain_type=="other_train":
rvr_model=regression_rvr_load(data_name[i])#導(dǎo)入已有模型(可選擇data_name[i]或"B05"等)
print_accuracy(rvr_model,x_train,y_train,x_test,y_test)
show_pic(rvr_model.predict(x_test),y_test,rvr_model.score(x_test,y_test))
#預(yù)測(cè)剩余電池壽命(可注釋掉)
#predict_battery_life(rvr_model)
導(dǎo)入數(shù)據(jù)并劃分
defimport_data(file_path):
data=pd.read_csv(file_path)
#計(jì)算剩余循環(huán)次數(shù)
length=int(len(data))
data.insert(data.shape[1],'left_cycle',abs(data.index-length+1))
print(data)
data_list=data.values.tolist()
#切分x,y。x為特征值
x,y=np.split(data_list,(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)工程設(shè)計(jì)階段實(shí)施方案
- 戶外保暖科普知識(shí)培訓(xùn)課件
- 公司印染助劑合成工安全隱患排查考核試卷及答案
- 大數(shù)據(jù)應(yīng)用與會(huì)計(jì)專業(yè)轉(zhuǎn)型升級(jí)的結(jié)合與實(shí)踐
- 工程項(xiàng)目資料檔案歸檔方案
- 工程施工臨時(shí)設(shè)施布置方案
- 風(fēng)光電力并網(wǎng)與氫醇儲(chǔ)存系統(tǒng)方案
- 建設(shè)項(xiàng)目綠色施工技術(shù)方案
- 大一課件教材
- 新生消防知識(shí)培訓(xùn)方案課件
- 2025年10.13日少先隊(duì)建隊(duì)日主題班會(huì)課件薪火相傳強(qiáng)國(guó)有我
- 2025年工會(huì)社會(huì)工作者招聘筆試模擬試題庫(kù)及答案
- 家鄉(xiāng)的變化課件
- 2024年成人高等考試《政治》(專升本)試題真題及答案
- 暖通施工工程方案(3篇)
- 消化內(nèi)科常見疾病診療標(biāo)準(zhǔn)與流程
- 人教部編版八年級(jí)語文上冊(cè)教案(全冊(cè))
- 2025年砌墻磚試題及答案
- 換熱站基礎(chǔ)知識(shí)培訓(xùn)課件
- 泵閘維修方案(3篇)
- wellsenn AI眼鏡拆解及BOM成本報(bào)告:小米AI眼鏡-電致變色
評(píng)論
0/150
提交評(píng)論