基於機器學習的降雨預測


機器學習的強大功能使我們能夠利用多種演算法(包括隨機森林和XGBoost)來預測降雨。

沒有最好的降雨預測演算法,每種演算法都有其優缺點。隨機森林在小資料集上效率高,而XGBoost在大資料集上效率高。

同樣,我們可以根據專案的需要對其他演算法進行分類。

我們的目標是構建一個基於隨機森林的降雨預測機器學習模型。

演算法

  • 匯入所有必需的庫,例如Pandas、Numpy、Sklearn和matplotlib。

  • 將歷史降雨資料載入到Pandas資料框中。

  • 預處理資料,刪除任何不必要的列並處理缺失值(如有)。

  • 將資料分割成訓練集和測試集。

  • 選擇一個機器學習演算法(例如隨機森林或XGBoost)用於預測。在本例中,我們選擇隨機森林演算法,因為它最適合我們選擇的資料集。

  • 在訓練資料集上訓練演算法。

  • 使用訓練好的模型預測給定月份和年份的降雨量。

  • 評估模型的效率

示例

# Import required libraries
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
import matplotlib.pyplot as plt
#Load the dataset

df=pd.read_csv("Rainfall_dataset.csv")
df.head()
df.fillna(value = 0,inplace =True)
grouped = df.groupby(df.DIVISION)
UP = grouped.get_group("EAST UTTAR PRADESH")

UP.head()
UP.hist(figsize=(12,12))
# Split the dataset into training and testing sets

data = np.asarray(UP[['FEB', 'MAR', 'APR','MAY']])
print(np.shape(data))
X = data[:,0:3]
y = data[:,3]

data = np.asarray(UP[['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']])
print(np.shape(data))

X = None; y = None
for i in range(data.shape[1]-3):
   if X is None:
      X = data[:, i:i+3]
      y = data[:, i+3]
   else:
      X = np.concatenate((X, data[:, i:i+3]), axis=0)
      y = np.concatenate((y, data[:, i+3]), axis=0)
# Train the model

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
np.shape(X_test)
rf = RandomForestRegressor(n_estimators = 100, max_depth=10, n_jobs=1)
rf.fit(X, y)

# Predict on the test set
y_pred = rf.predict(X)
# Evaluate the model
mean_absolute_error(y, y_pred)

print(mean_absolute_error(y, y_pred))
print(y_pred)

資料從Rainfall_dataset.csv檔案載入並存儲到Python資料框中。缺失值用0填充。然後將資料集分割成訓練集和測試集。從資料框中提取2月、3月和4月的降雨量並存儲在不同的陣列中,而5月的降雨量則單獨儲存在另一個數組中。

在整個資料集上訓練一個森林迴歸模型,該模型用於對資料集進行預測。然後將預測值儲存在陣列中。然後使用實際降雨值(從資料集中載入)和預測降雨值(使用mean_absolute_error()函式計算)之間的平均絕對誤差來評估模型的效能。

輸出

25.71495399881942   //This is the mean absolute error (MAE) between the actual values y and the predicted values y_pred 

[18.15560485 28.51579025 18.42870772 ...  3.45343635  6.94081644
  8.22604943]  //These are the predicted values stored in the y_pred.

注意 - 上述示例中的降雨預測針對的是印度北方邦東部地區;您可以選擇任何州或地區。

請確保從上面提到的連結下載資料集以獲取輸出。

結論

機器學習演算法可用於構建準確的降雨預測模型,這有助於有效的水資源管理和災害管理。

但是,模型的準確性取決於資料的質量、特徵的選擇以及適當演算法的選擇。

因此,務必仔細收集和預處理資料,選擇相關的特徵,併為降雨預測選擇合適的機器學習演算法。

更新於:2023年7月21日

479 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告