Как настроить научную фантастику SVR? - PullRequest
0 голосов
/ 03 марта 2019

Наличие набора данных (50х13).Когда я решил проблему регрессии на WEKA с помощью функции SMOReg, используя параметры по умолчанию, это дает мне коэффициент корреляции 70.49% между входами и выходами.Затем я попытался решить ту же проблему, научившись SVR.Для получения оптимальных параметров я применил метод Gridsearch.Тем не менее, это дает не более 28% корреляции.

Моя следующая попытка - игнорировать метод поиска по сетке и использовать параметры по умолчанию weka для svm.SVR.Результаты не изменились, и svr даже не приблизился к тому, что производит Weka.

И моя последняя попытка - использовать параметры поиска по сетке scikit-learn в weka.Результаты не изменились.С такими же параметрами weka дает гораздо лучший результат.Я не уверен, где я делаю неправильно.Вот мой полный код на Python.

import pandas as pd
import os
import numpy as np
from sklearn import metrics
from scipy.stats import zscore
from sklearn.model_selection import KFold
from keras.models import Sequential
from keras.layers.core import Dense, Activation
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn import svm
import matplotlib.pyplot as plt
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
df=pd.read_csv("Data.csv")

x=df.iloc[:,:-1]
y=df.iloc[:,-1]
x=np.array(x)
y=np.array(y)
x_train, x_test, y_train, y_test = train_test_split(    
x, y, test_size=0.20, random_state=42)



scaler = StandardScaler()
x_train = scaler.fit_transform( x_train )
x_test = scaler.transform( x_test )

# GRID SEARCH
parameters = {'kernel':( 'poly', 'rbf', 'sigmoid'),'gamma':np.arange(0.1, 5, 0.1),'C':np.arange(0.1, 3, 0.1)}
svr = svm.SVR()
clf = GridSearchCV(svr, parameters, cv=3)
clf.fit(x_train, y_train)

print(clf.best_params_)
print(clf.best_score_)
y_pred=clf.predict(x_test)
print(clf.score(x_test,y_test))


plt.plot(y_test)
plt.plot(y_pred)
plt.show()

plt.plot(y_train)
plt.plot(clf.predict(x_train))

Scikit-learn SVR results Weka SMOReg Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...