繁体   English   中英

错误 - 在scikit-learn中使用SVM的自定义内核

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM