【发布时间】:2021-05-14 18:45:40
【问题描述】:
我有以下代码:
import numpy as np
from sklearn import svm
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
def tanimotoKernel(xs, ys):
a = 0
b = 0
for x, y in zip(xs, ys):
a += min(x, y)
b += max(x, y)
return a / b
def tanimotoLambdaKernel(xs,ys, gamma = 0.01):
return np.exp(gamma * tanimotoKernel(xs,ys)) / (np.exp(gamma) - 1)
def GramMatrix(X1, X2, K_function=tanimotoLambdaKernel):
gram_matrix = np.zeros((X1.shape[0], X2.shape[0]))
for i, x1 in enumerate(X1):
for j, x2 in enumerate(X2):
gram_matrix[i, j] = K_function(x1, x2)
return gram_matrix
X, y = datasets.load_iris(return_X_y=True)
x_train, x_test, y_train, y_test = train_test_split(X, y)
clf.fit(x_train, y_train)
accuracy_score(clf.predict(x_test), y_test)
clf = svm.SVC(kernel=GramMatrix)
但是,我希望能够用GridSearchCV 调整tanimotoLambdaKernel 的gamma 参数,因为我不想手动测试参数,检查准确性等。
有什么办法吗?
【问题讨论】:
标签: python python-3.x machine-learning scikit-learn