Я новичок в SVM и использую SVR для прогнозирования моих данных. data_link
while True:
dataset = pd.read_excel(r"C:\Users\Desktop\NN_CAP\DATA2.xlsx")
if dataset.empty is True:
print('dateset is empty, keep reading')
else:
print('dataset is not empty')
break
X = dataset.iloc[:, 0] # input
Y = dataset.iloc[:, 1].ravel() # output Delta capacitance
encoder_X = MinMaxScaler()
encoder_Y = MinMaxScaler()
X = encoder_X.fit_transform(X)
Y = encoder_Y.fit_transform(Y.reshape(-1, 1))
X = X.reshape(-1, 1)
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 0.2)
# define SVM by using polynominal
svr_model = SVR(kernel='poly', degree=5)
svr_model.fit(X_train, Y_train.ravel())
Y_pred = svr_model.predict(X_test)
Y_test = encoder_Y.inverse_transform(Y_test)
Y_pred = encoder_Y.inverse_transform(Y_test)
from sklearn import metrics
print(metrics.r2_score(Y_test, Y_pred))
plt.scatter(X_test, Y_test, color='red')
plt.scatter(X_test, Y_pred, color='blue')
plt.show()
, но результаты прогноза плохие. как цифра
Я также пытался использовать gridsearchCV
, чтобы найти лучшие параметры. но результаты были не лучше.
define gridsearchCV
param_grid = {'kernel': ['rbf', 'poly', 'sigmoid'], #
'C': np.logspace(0.01, 100, 5),
'gamma': ['auto', 'scale'], # 'gamma': np.logspace(1e-3, 1, 5)
'epsilon': [0.1, 0.2, 0.5, 0.3],
} # 'degree': [3, 5, 7, 8, 9, 10]
svr_search = GridSearchCV(SVR(), param_grid, verbose=1000)
svr_search.fit(X_train, Y_train.ravel())
best_params = svr_search.best_params_
print(svr_search.best_params_)
svr_model = SVR(kernel='rbf', C=best_params['C'], epsilon=best_params['epsilon'], gamma=best_params['gamma'])
Кто-нибудь может дать какие-нибудь предложения? любые идеи искренне ценятся.