降雨預(yù)測(cè)-C++編程
降雨徑流預(yù)測(cè)-最小二乘回歸模型
選題要求:
1.利用提供的數(shù)據(jù)集rainstream05_06.csv實(shí)現(xiàn)徑流預(yù)測(cè)。輸入降雨量,根據(jù)線性回歸模型計(jì)算徑流量,輸出徑流值。徑流量是指在某一時(shí)段內(nèi)通過(guò)河流某一過(guò)水?dāng)嗝娴乃俊,F(xiàn)假定降雨量與徑流量之間存在線性關(guān)系。

表中數(shù)據(jù)第一列為日期,具體編程實(shí)現(xiàn)中,同學(xué)們可以刪除;”P(pán)”列為降雨量(單位:mm),“Q”列為徑流量(單位:m3)。線性模型定義如下:

?
w為權(quán)重,可理解為當(dāng)日降水轉(zhuǎn)換為徑流的比例,b為偏移量,可以理解為其他相關(guān)因素對(duì)徑流量的影響(如土壤水分、植被等)。線性回歸的目的就是找到最合理的w和b。
參考類定義如下:
Class?rainStream{
double P;
double Q;
double w;
double b;
……
Public:
…… ?//方法定義
};
2?實(shí)現(xiàn)方法要求,核心算法不允許使用第三方庫(kù),自行編程實(shí)現(xiàn)算法并測(cè)試。
3.編寫(xiě)函數(shù)dataLoad()實(shí)現(xiàn)數(shù)據(jù)的預(yù)處理,將給定的數(shù)據(jù)集按7:3的比例讀入訓(xùn)練數(shù)據(jù)集trainSet和測(cè)試數(shù)據(jù)集testData。
4.利用trainSet數(shù)據(jù)確定w和b的最優(yōu)值。

使用計(jì)算的w和b的值推算測(cè)試數(shù)據(jù)testData中Q的預(yù)測(cè)值。
計(jì)算:,可以截取不同的訓(xùn)練集,討論比較誤差,是否能找到w和b最優(yōu)解。
5. 要求用文件處理功能完成數(shù)據(jù)的讀入以及測(cè)試結(jié)果的存儲(chǔ)。
6.設(shè)計(jì)界面,可以是圖形界面也可以是終端界面(command)。
7.誤差分析(測(cè)試集),計(jì)算RMSE(Root Mean Squard Error)、R(相關(guān)系數(shù))
?

?

其中為預(yù)測(cè)值,為真實(shí)值,為預(yù)測(cè)平均值,為真實(shí)平均值。
8.合理引入運(yùn)算符重載、繼承關(guān)系的設(shè)計(jì)。
9.優(yōu)化改進(jìn)(必做):認(rèn)真觀察誤差,結(jié)合你對(duì)數(shù)據(jù)的理解,進(jìn)行模型改進(jìn),使得預(yù)測(cè)更為接近真實(shí)值。有理即可!
?



線性排布不可隨機(jī)




如果覺(jué)得自己很勇可以使用initgraph();cleardevice();outtextxy(,,),本人學(xué)渣,懶得寫(xiě)。

嘗試過(guò)將循環(huán)和讀入輸出也寫(xiě)到函數(shù)里但是確實(shí)是不會(huì)啊