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

圖1 程序框架
Ridge、Lasso、Multi-task Lasso 三個模塊估算的k、c 值如表1 所示。

表1 Ridge、Lasso、Multi-task Lasso 三個模塊估算的k、c 值
(1) 參數(shù)k 和c 的比較。Multi-task Lasso 模型給出的k 和c 值分別為0.92、13.8,比Ridge 模型和Lasso 模型更接近實際韋伯分布的參數(shù)[9]。此外,Multitask Lasso 模型的k 值相對較高,說明其更能捕捉實際數(shù)據(jù)的尾部分布,而c 值相對較大,說明位置參數(shù)的估計相對準確。
(2) 擬合度R 的比較。Multi-task Lasso 模型的擬合度R 達到0.94,明顯高于Ridge 模型以及Lasso模型,如此高的高擬合度,說明Multi-task Lasso 模型能夠更好地描述實際風速數(shù)據(jù)的分布特征,與韋伯分布的擬合度接近[10]。
(3) 與實測韋伯分布的對比。Multi-task Lasso模型的擬合度R 超過了其他兩個模型,且更為接近實測韋伯分布的擬合度。這說明Multi-task Lasso 模型在估算風速數(shù)據(jù)的韋伯分布時更為精確,更符合實際分布的特征。
本次研究中,相關(guān)研究人員采用了Ridge、Lasso和Multi-task Lasso 模型,嘗試對西南某風力發(fā)電廠風速與發(fā)電量關(guān)系問題,進行韋伯分布擬合計算,基于NumPy、SciPy 和Matplotlib 等庫,進行參數(shù)估計和概率密度函數(shù)生成。對于對三種模型k 值、c 值以及擬合度的橫向?qū)Ρ龋l(fā)現(xiàn)Multi-task Lasso 模型的擬合度R明顯高于其他模型,更接近實測韋伯分布的擬合度。本研究證實了Multi-task Lasso 模型在估算風速數(shù)據(jù)的韋伯分布時具有更高的精確度和擬合度,未來的研究可以進一步探索其他建模技術(shù)或考慮更多環(huán)境因素,以提高對風力發(fā)電資源的準確預(yù)測。
為了進一步提高風力發(fā)電效率,研究人員利用Python 開發(fā)環(huán)境,對某風力發(fā)電場風速數(shù)據(jù)進行韋伯分布擬合,進一步明確風速與風力發(fā)電機發(fā)電量之間的線性關(guān)系,提高風力電能存儲、輸送、使用效率,為進一步擴展風力發(fā)電覆蓋范圍,增加清潔能源在能源總量中的占比提供技術(shù)支持。