Я использую SVR для прогноза осадков с помощью Python. Я взял 7 предикторов (например, x1, x2, ... x7) и один предикат (т.е. количество осадков, y). У меня есть около 50 лет обучающих наборов предикторов и предикторов, и 100 лет тестирующих данных для предикторов. Я установил SVR, а затем использовал 7 предикторов (используя данные за 100 лет), чтобы предсказать 100-летнее количество осадков. Коды выполнены правильно. Но когда я вижу прогнозируемые результаты осадков, я получаю очень низкие значения (среднее значение составляет около 10, а максимальное - 30), в то время как фактическое среднее значение составляет около 70, а максимальное - 141. Пожалуйста, предложите мне.
Вот мои коды
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#Import data
X_hist = pd.read_csv('X.csv') # predictors-total 7
y_hist = pd.read_csv('y.csv') # predictand as a rainfall
X_pred = pd.read_csv('X_predictors.csv') # test data of predictors- 7
#Preprocessing
X_hist.head()
y_hist.head()
X_pred.head()
#converted into np arrays
X_hist1=np.array(X_hist)
y_hist1=np.array(y_hist)
X_pred1=np.array(X_pred)
#changed the variable name for my reference
X_train=X_hist1
X_test=X_pred1
y_train=y_hist1
#Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_x=StandardScaler()
sc_y=StandardScaler()
x =sc_x.fit_transform(X_train)
y =sc_y.fit_transform(y_train)
# Training SVR to dataset
from sklearn.svm import SVR
regressor = SVR(kernel = 'rbf')
regressor.fit(x,y)
#Predict using Regression Model
y_pred = sc_y.inverse_transform(regressor.predict(sc_x.transform(np.array(X_test))))
pred1=pd.DataFrame(y_pred)
pred1.to_csv("results.csv")