Я новичок в Python и науке о данных.Я работаю над прогнозированием нагрузки на электроэнергию.Когда я использую нормализацию, результаты хорошие.Я получаю очень маленький MAE и MSE.Но когда я применяю SVR к тем же данным без нормализации, я получаю очень высокое значение MSE и MAE.
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import pandas as pd
from sklearn import preprocessing
features=pd.read_csv('selectedData.csv')
names=list(features)
for i in names:
Нормализация моих данных здесь
x=features[[i]].values.astype(float)
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
features[i]=x_scaled
#Selecting the target Variable which want to predict and for which we are
finding feature imps
target = features['SYSLoad']
features= features.drop('SYSLoad', axis = 1)
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target =
train_test_split(features, target, test_size = 0.25, random_state = 42)
n=test_target.values;
test_targ=pd.DataFrame(n);
#train the model using the training sets
from sklearn.svm import SVR
svr_rbf = SVR(kernel='rbf', C=10, epsilon=0.01,gamma=1)
y_rbf = svr_rbf.fit(train_input, train_target);
predicted=y_rbf.predict(test_input);
plt.xlim(20,100);
print('Total Days For training',len(train_input)); print('Total Days For
Testing',len(test_input))
plt.ylabel('Load(MW) Prediction 3 '); plt.xlabel('Days');
plt.plot(test_targ,'-b',label='Actual'); plt.plot(predicted,'-r',label='RBF
kernel ');
plt.gca().legend(('Actual','RBF'))
plt.title('SVM')
plt.show();
mae=mean_absolute_error(test_target,predicted)
mse=mean_squared_error(test_target, predicted)
print("MAE By RBF :", mae);
print("MSE By RBF :", mse);
Должен ли я использовать извлечение функций?Я получил параметры SVR из поиска в таблице?
epsilon=[0.001, 0.01, 0.1, 1]
C = [0.001, 0.01, 0.1, 1, 10]
gammas = [0.001, 0.01, 0.1, 1]
param_grid = {'C': C, 'gamma' : gammas, 'epsilon':epsilon}
grid_search = GridSearchCV(SVR(kernel='RBF'), param_grid, cv=3);
grid_search.fit(train_input, train_target);
print(grid_search.best_params_);