Я разработал код ниже для запуска проекта для метода SVM:
import numpy as np
import pandas as pd
from sklearn import svm
from sklearn.datasets import load_boston
from sklearn.metrics import mean_absolute_error
housing = load_boston()
df = pd.DataFrame(np.c_[housing['data'], housing['target']],
columns= np.append(housing['feature_names'], ['target']))
features = df.columns.tolist()
label = features[-1]
features = features[:-1]
x_train = df[features].iloc[:400]
y_train = df[label].iloc[:400]
x_test = df[features].iloc[400:]
y_test = df[label].iloc[400:]
svr = svm.SVR(kernel='rbf')
svr.fit(x_train, y_train)
y_pred = svr.predict(x_test)
print(mean_absolute_error(y_pred, y_test))
Теперь я хочу использовать мое настроенное ядро rbf:
def my_rbf(feat, lbl):
#feat = feat.values
#lbl = lbl.values
ans = np.array([])
gamma = 0.000005
for i in range(len(feat)):
ans = np.append(ans, np.exp(-gamma * np.dot(feat[i]-lbl[i], feat[i]-lbl[i])))
return ans
Затем я изменил svm.SVR(kernel=my_rbf)
Но я получаю множество ошибок, когда модифицирую его любым способом. Я также попытался использовать простую функцию, такую как np.dot(feat-lbl,feat-lbl)
, которая прекрасно работала в методе SVR.fit
, но в svr.predict
произошла ошибка, которая говорила, что форма входной матрицы должна быть похожа на [n_samples_test, n_samples_train].
Я заблокирован, чтобы разобраться с ошибками. Может кто-нибудь помочь мне заставить этот код работать?