[英]Error - Using custom kernels for SVM in scikit-learn
我创建了一个SVM实例,其中包含我自己定义的内核函数。 当我尝试在创建的模型上运行交叉验证时,我收到以下错误:
ValueError:X应该是方形内核矩阵
追溯:
得分= cross_val_score(model,X,y,cv = 10)
文件“C:\\ Python27 \\ lib \\ site-packages \\ scikit_learn-0.14.1-py2.7-win32.egg \\ sklearn \\ cross_validation.py”,第1152行,cross_val_score
用于火车,在cv中测试)
文件“C:\\ Python27 \\ lib \\ site-packages \\ scikit_learn-0.14.1-py2.7-win32.egg \\ sklearn \\ externals \\ joblib \\ parallel.py”,第517行, 电话
self.dispatch(function,args,kwargs)
文件“C:\\ Python27 \\ lib \\ site-packages \\ scikit_learn-0.14.1-py2.7-win32.egg \\ sklearn \\ externals \\ joblib \\ parallel.py”,第312行,在发送中
job = ImmediateApply(func,args,kwargs)
文件“C:\\ Python27 \\ lib \\ site-packages \\ scikit_learn-0.14.1-py2.7- win32.egg \\ sklearn \\ externals \\ joblib \\ parallel.py”,第136行,在init中
self.results = func(* args,** kwargs)
_cross_val_score中的文件“C:\\ Python27 \\ lib \\ site-packages \\ scikit_learn-0.14.1-py2.7-win32.egg \\ sklearn \\ cross_validation.py”,第1047行
提出ValueError(“X应该是方形内核矩阵”)
这是我的代码:
def hist_intersection(x, y):
return np.sum(np.array([min(xi,yi) for xi,yi in zip(x,y)]))
model = svm.SVC(kernel = hist_intersection)
scores = cross_val_score(model, X, y, cv=10)
我快速浏览了一下,SVC类(以及交叉验证工具)似乎都期望内核可调用来从全数据矩阵一次计算整个内核矩阵(这使得这个特性非常有限,我同意)。 请查看测试以获取更多详细信息:
https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/svm/tests/test_svm.py#L124
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.