基於機器學習的降雨預測
機器學習的強大功能使我們能夠利用多種演算法(包括隨機森林和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.
注意 - 上述示例中的降雨預測針對的是印度北方邦東部地區;您可以選擇任何州或地區。
請確保從上面提到的連結下載資料集以獲取輸出。
結論
機器學習演算法可用於構建準確的降雨預測模型,這有助於有效的水資源管理和災害管理。
但是,模型的準確性取決於資料的質量、特徵的選擇以及適當演算法的選擇。
因此,務必仔細收集和預處理資料,選擇相關的特徵,併為降雨預測選擇合適的機器學習演算法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP