一种方法是使用Pipeline,SVC(kernel =’precomputed’)并将自定义内核函数包装为sklearn估计器(BaseEstimator和TransformerMixin的子类)).
例如,sklearn包含custom kernel function chi2_kernel(X,Y = None,gamma = 1.0),它计算特征向量X和Y的核矩阵.
该函数采用参数gamma,最好使用交叉验证来设置.
我们可以对这个函数的参数进行网格搜索,如下所示:
from __future__ import print_function
from __future__ import division
import sys
import numpy as np
import sklearn
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.cross_validation import train_test_split
from sklearn.datasets import load_digits
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import accuracy_score
from sklearn.metrics.pairwise import chi2_kernel
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
# Wrapper class for the custom kernel chi2_kernel
class Chi2Kernel(BaseEst