Как я могу улучшить производительность моей модели без нормализации? - PullRequest
0 голосов
/ 19 декабря 2018

Я новичок в 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_);

OutPut

...