陳麗敏,劉金平,徐志保
(1.福建電力職業(yè)技術(shù)學(xué)院馬克思主義學(xué)院,福建泉州;2.福建電力職業(yè)技術(shù)學(xué)院發(fā)展安全質(zhì)量部,福建泉州;3.福建電力職業(yè)技術(shù)學(xué)院綜合能源工程系,福建泉州)
韋伯分布的特點(diǎn)在于其概率密度函數(shù)十分靈活,適用于不同數(shù)據(jù)集特征。而Python 作為一種被廣泛應(yīng)用的編程語(yǔ)言,提供了豐富的科學(xué)計(jì)算以及數(shù)據(jù)分析模塊,令研究人員能夠便捷地進(jìn)行概率分布建模。具體實(shí)踐中,利用Python 編程進(jìn)行韋伯分布擬合,研究人員可以更為直觀地了解數(shù)據(jù)分布特征,從而識(shí)別異常值,為預(yù)測(cè)未來(lái)事件提供更為準(zhǔn)確的依據(jù)。
本次研究以西南地區(qū)某風(fēng)力發(fā)電廠為例,該發(fā)電廠占地面積約為20.22 km2,山頂海拔約為600 m~1 500 m,為了獲得更多持續(xù)的風(fēng)能,設(shè)計(jì)人員在建設(shè)風(fēng)力發(fā)電機(jī)過(guò)程中,將風(fēng)機(jī)全部布置在高海拔區(qū),風(fēng)機(jī)距離地面的高度約為75 m。該風(fēng)力發(fā)電廠周圍布置了6 座側(cè)風(fēng)塔,本次研究中,相關(guān)工作人員考慮到地形以及環(huán)境因素,對(duì)風(fēng)速可能造成的潛在影響,選取該風(fēng)場(chǎng)內(nèi)75 m 高度處的風(fēng)速數(shù)據(jù)作為樣本。
本次實(shí)驗(yàn)中,研究人員采集距離地面75 m 高的風(fēng)機(jī)測(cè)速裝置在10 min 內(nèi)測(cè)得的風(fēng)速數(shù)據(jù)。這些數(shù)據(jù)從2022 年6 月25 日零時(shí)開始收集,一直到2023年2 月28 日24 時(shí)結(jié)束。在此期間,總共收集到了35 564 個(gè)風(fēng)速數(shù)據(jù)。在數(shù)據(jù)收集過(guò)程中,研究人員發(fā)現(xiàn)部分?jǐn)?shù)據(jù)存在失真、結(jié)構(gòu)缺失等問(wèn)題。為了保證數(shù)據(jù)的準(zhǔn)確性,研究人員對(duì)這些失真以及缺失的數(shù)據(jù)進(jìn)行剔除,最終得到了24 580 個(gè)實(shí)際有效的風(fēng)速數(shù)據(jù)[1]。而在分析上述數(shù)據(jù)時(shí),研究人員考慮到在相同區(qū)域內(nèi)的風(fēng)速具有一定的相似性。因此,研究人員決定采用相鄰測(cè)風(fēng)塔的有效觀測(cè)數(shù)據(jù),并用其替換缺失及失真的數(shù)據(jù)。這樣一來(lái),原本不完整的測(cè)風(fēng)數(shù)據(jù)得到了補(bǔ)充,使得整個(gè)數(shù)據(jù)集更加完整、可靠。
使用Ridge 回歸可以解決韋伯分布擬合共線性問(wèn)題。在線性回歸中,若特征之間存在強(qiáng)相關(guān)性時(shí),模型系數(shù)估算變得不穩(wěn)定[2]。Ridge 回歸通過(guò)在損失函數(shù)中引入L2 正則化項(xiàng),其中包含系數(shù)的平方和,對(duì)系數(shù)進(jìn)行懲罰。
(1) 安裝庫(kù)。使用指定的命令安裝scikit-learn庫(kù),其中包含Ridge 回歸模型:
pip install scikit-learn
(2) 導(dǎo)入庫(kù)。在Python 腳本或Jupyter Notebook中,導(dǎo)入scikit-learn 庫(kù)的linear_model 模塊:
from sklearn.linear_model import Ridge
(3) 創(chuàng)建Ridge 模型實(shí)例。利用Ridge 類創(chuàng)建Ridge 回歸模型的實(shí)例[3]。在創(chuàng)建模型時(shí),需要指定正則化強(qiáng)度的超參數(shù)α,該參數(shù)越大,代表正則化效果越強(qiáng)。
ridge_model = Ridge(α=1.0)
(4) 數(shù)據(jù)準(zhǔn)備。準(zhǔn)備訓(xùn)練數(shù)據(jù)X_train 和目標(biāo)變量y_train:
X_train, y_train =...
(5) 模型訓(xùn)練。使用訓(xùn)練數(shù)據(jù)對(duì)Ridge 模型進(jìn)行訓(xùn)練:
ridge_model.fit(X_train, y_train)
Lasso 回歸主要用于稀疏模型估計(jì)和特征選擇,與Ridge 回歸相比,Lasso 回歸最大的特點(diǎn)在于其在損失函數(shù)中引入正則化項(xiàng),該正則化項(xiàng)包含系數(shù)的絕對(duì)值之和。
(1) 安裝庫(kù)。研究人員使用指定的命令安裝scikit-learn 庫(kù):
pip install scikit-learn
(2) 導(dǎo)入庫(kù)。研究人員在Python 腳本中導(dǎo)入scikit-learn 庫(kù)的linear_model 模塊:
from sklearn.linear_model import Lasso
(3) 創(chuàng)建Lasso 模型實(shí)例。研究人員利用Lasso類創(chuàng)建Lasso 回歸模型的實(shí)例:
lasso_model = Lasso(alpha=1.0)
(4) 模型訓(xùn)練。研究人員使用訓(xùn)練數(shù)據(jù)對(duì)Lasso模型進(jìn)行訓(xùn)練:
lasso_model.fit(X_train, y_train)
Multi-task Lasso 回歸是基于Lasso 回歸的一種擴(kuò)展模型,擅長(zhǎng)處理多個(gè)相關(guān)任務(wù)[4]。它在L1 正則化項(xiàng)的基礎(chǔ)上,引入了對(duì)多個(gè)任務(wù)共享稀疏模型的懲罰。
(1) 安裝庫(kù)。使用以下命令安裝scikit-learn 庫(kù):
pip install scikit-learn
(2) 導(dǎo)入庫(kù)。研究人員在Python 腳本中導(dǎo)入scikit-learn 庫(kù)的linear_model 模塊:
from sklearn.linear_model import MultiTaskLasso
(3) 創(chuàng)建Multi-task Lasso 模型實(shí)例。研究人員利用MultiTaskLasso 類創(chuàng)建Multi-task Lasso 回歸模型的實(shí)例:
multi_task_lasso_model = MultiTaskLasso(alpha=1.0)
(4) 數(shù)據(jù)準(zhǔn)備。研究人員準(zhǔn)備多個(gè)訓(xùn)練數(shù)據(jù)集X_train_task1,X_train_task2,以及對(duì)應(yīng)的目標(biāo)變量y_train_task1,y_train_task2。
X_train_task1, y_train_task1 =...
X_train_task2, y_train_task2 =...
(5) 模型訓(xùn)練。研究人員使用訓(xùn)練數(shù)據(jù)對(duì)Multi-task Lasso 模型進(jìn)行訓(xùn)練:
multi_task_lasso_model.fit([X_train_task1, X_train_task2], [y_train_task1, y_train_task2])
通過(guò)上述措施,研究人員構(gòu)建起基于Ridge 模型、Lasso 模型、Multi-task Lasso 模型的Python 開發(fā)環(huán)境,為后續(xù)進(jìn)行風(fēng)速數(shù)據(jù)韋伯分布擬合打好基礎(chǔ)。
基于Python 編程進(jìn)行風(fēng)速數(shù)據(jù)的韋伯分布擬合中,研究人員使用一些科學(xué)計(jì)算庫(kù),如NumPy 和SciPy,以及繪圖庫(kù),如Matplotlib。
(1) 導(dǎo)入必要的庫(kù)。正式開始韋伯分布擬合之前,研究人員導(dǎo)入本次研究需要用到的Python 庫(kù),其代碼為:
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
(2) 導(dǎo)入風(fēng)速數(shù)據(jù)。研究人員從外部數(shù)據(jù)源導(dǎo)入風(fēng)速數(shù)據(jù)。
# 風(fēng)速數(shù)據(jù)
wind_speed_data = np.array ([8.2, 7.5, 6.8, 8.5,9.2, 7.4, 10.1, 8.8, 9.5, 8.1])
(3) 計(jì)算參數(shù)估計(jì)。研究人員使用SciPy 庫(kù)中的fit 函數(shù),估計(jì)韋伯分布的參數(shù),即:
shape,loc,scale=stats.weibull_min.fit(wind_speed_data)
fit 函數(shù)中,shape、loc 和scale 分別代表韋伯分布的形狀、位置和尺度參數(shù)。這些參數(shù)通過(guò)最大似然估計(jì)(MLE)進(jìn)行估計(jì),以使韋伯分布最好地?cái)M合觀測(cè)到的數(shù)據(jù)[5]。
(4) 生成韋伯分布概率密度函數(shù)。研究人員使用擬合參數(shù),生成韋伯分布概率密度函數(shù),即:
weibull_fit = stats.weibull_min (shape, loc=loc,scale=scale)
概率密度函數(shù)能夠描述韋伯分布在給定參數(shù)(c)、(λ)、(k)下的概率密度,其計(jì)算公式為:
式中:x 代表風(fēng)速隨機(jī)變量;c 代表位置參數(shù),即風(fēng)速的最小值;λ 代表控制分布形狀的尺度參數(shù);k 代表控制分布的尖峰度[6]。此外,研究人員還引入了最大似然估計(jì)的目標(biāo)概念,該目標(biāo)是最大化對(duì)數(shù)似然函數(shù),通過(guò)優(yōu)化參數(shù)(c)、(λ)、(k),令樣本的觀測(cè)值在韋伯分布下的概率達(dá)到最大值,其計(jì)算公式為:
式中:n 代表樣本數(shù)據(jù);xi代表第i 個(gè)樣本點(diǎn)。
(5) 擬合結(jié)果輸出。研究人員使用Matplotlib 繪圖軟件,展示原始風(fēng)速數(shù)據(jù)及韋伯分布的擬合結(jié)果[7]。通過(guò)plt.hist 繪制原始數(shù)據(jù)的直方圖,然后使用weibull_fit.pdf(x)生成韋伯分布的概率密度函數(shù)曲線,最后再基于plt.show()指令顯示圖形。
本次研究中,相關(guān)工作人員基于數(shù)學(xué)模型以及統(tǒng)計(jì)學(xué)方法,描述風(fēng)力資源的特性[8]。具體實(shí)踐中,研究人員利用Python 編程技術(shù),使得韋伯分布的擬合變得更加高效(如圖1 所示)。
圖1 程序框架
Ridge、Lasso、Multi-task Lasso 三個(gè)模塊估算的k、c 值如表1 所示。
表1 Ridge、Lasso、Multi-task Lasso 三個(gè)模塊估算的k、c 值
(1) 參數(shù)k 和c 的比較。Multi-task Lasso 模型給出的k 和c 值分別為0.92、13.8,比Ridge 模型和Lasso 模型更接近實(shí)際韋伯分布的參數(shù)[9]。此外,Multitask Lasso 模型的k 值相對(duì)較高,說(shuō)明其更能捕捉實(shí)際數(shù)據(jù)的尾部分布,而c 值相對(duì)較大,說(shuō)明位置參數(shù)的估計(jì)相對(duì)準(zhǔn)確。
(2) 擬合度R 的比較。Multi-task Lasso 模型的擬合度R 達(dá)到0.94,明顯高于Ridge 模型以及Lasso模型,如此高的高擬合度,說(shuō)明Multi-task Lasso 模型能夠更好地描述實(shí)際風(fēng)速數(shù)據(jù)的分布特征,與韋伯分布的擬合度接近[10]。
(3) 與實(shí)測(cè)韋伯分布的對(duì)比。Multi-task Lasso模型的擬合度R 超過(guò)了其他兩個(gè)模型,且更為接近實(shí)測(cè)韋伯分布的擬合度。這說(shuō)明Multi-task Lasso 模型在估算風(fēng)速數(shù)據(jù)的韋伯分布時(shí)更為精確,更符合實(shí)際分布的特征。
本次研究中,相關(guān)研究人員采用了Ridge、Lasso和Multi-task Lasso 模型,嘗試對(duì)西南某風(fēng)力發(fā)電廠風(fēng)速與發(fā)電量關(guān)系問(wèn)題,進(jìn)行韋伯分布擬合計(jì)算,基于NumPy、SciPy 和Matplotlib 等庫(kù),進(jìn)行參數(shù)估計(jì)和概率密度函數(shù)生成。對(duì)于對(duì)三種模型k 值、c 值以及擬合度的橫向?qū)Ρ?,發(fā)現(xiàn)Multi-task Lasso 模型的擬合度R明顯高于其他模型,更接近實(shí)測(cè)韋伯分布的擬合度。本研究證實(shí)了Multi-task Lasso 模型在估算風(fēng)速數(shù)據(jù)的韋伯分布時(shí)具有更高的精確度和擬合度,未來(lái)的研究可以進(jìn)一步探索其他建模技術(shù)或考慮更多環(huán)境因素,以提高對(duì)風(fēng)力發(fā)電資源的準(zhǔn)確預(yù)測(cè)。
為了進(jìn)一步提高風(fēng)力發(fā)電效率,研究人員利用Python 開發(fā)環(huán)境,對(duì)某風(fēng)力發(fā)電場(chǎng)風(fēng)速數(shù)據(jù)進(jìn)行韋伯分布擬合,進(jìn)一步明確風(fēng)速與風(fēng)力發(fā)電機(jī)發(fā)電量之間的線性關(guān)系,提高風(fēng)力電能存儲(chǔ)、輸送、使用效率,為進(jìn)一步擴(kuò)展風(fēng)力發(fā)電覆蓋范圍,增加清潔能源在能源總量中的占比提供技術(shù)支持。