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

标签 python scikit-learn

我使用自己定义的内核函数创建了一个 SVM 实例。当我尝试对创建的模型运行交叉验证时,出现以下错误:

ValueError: X should be a square kernel matrix
Traceback:

scores = cross_val_score(model, X, y, cv=10)

File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\cross_validation.py", line 1152, in cross_val_score
for train, test in cv)

File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\externals\joblib\parallel.py", line 517, in call

self.dispatch(function, args, kwargs)

File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\externals\joblib\parallel.py", line 312, in dispatch

job = ImmediateApply(func, args, kwargs)

File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7- win32.egg\sklearn\externals\joblib\parallel.py", line 136, in init

self.results = func(*args, **kwargs)

File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\cross_validation.py", line 1047, in _cross_val_score

raise ValueError("X should be a square kernel matrix")

这是我的代码:

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

关于python - 错误 - 在 scikit-learn 中为 SVM 使用自定义内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22329893/

相关文章:

python - Django 通过列表中的值从数据库中查找项目?

python - 从 networkx 中的 shapefile 创建图形时如何保留或至少对边缘属性进行排序?

Python scikit svm "ValueError: X has 62 features per sample; expecting 337"

nlp - 使用 scikit-learn 为 NER 训练 NLP 对数线性模型

python - Python 中的多重回归(带因子选择)

python - sklearn 线性回归中的 n_jobs

python - 树莓派-Python : Install Pandas on Python 3. 5.2

python - 尝试修复 SQL 语法中的错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法

python - 基于 Python 中的几个正则表达式规则进行替换

python - Scikit Learn - 组合 TfidfVectorizer 和 OneHotEncoder 的输出 - 维度