【发布时间】:2019-09-10 06:15:41
【问题描述】:
我已经开发了下面的代码来启动一个 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]。
我难以处理这些错误。谁能帮我让这段代码工作?
【问题讨论】:
标签: python matrix scikit-learn svm