我用我自己定义的内核函数创建了一个 SVM 实例。当我尝试对创建的模型运行交叉验证时,出现以下错误:
ValueError: X should be a square kernel matrix
Traceback:
score = 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”,第 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 行,在调度
作业中 = 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)
文件 "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应该是一个方核矩阵")
这是我的代码:
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 = …Run Code Online (Sandbox Code Playgroud) 该Map#get方法是返回键映射到的值还是返回对值的引用?代码(这是我正在处理的程序):
Map<String,Vector<String>> map=new TreeMap<String,Vector<String> >();
for(String line:services)
{
String[] set=line.split(" ");
Vector<String> t=new Vector<String>();
String BioService=set[0];
int i=1;
while(i<set.length)
{
t.clear();
if(map.containsKey(set[i]))
t=map.get(set[i]);
t.addElement(BioService);
map.put(set[i],t);
/*if i put t.clear() here i get null values in my output*/
i++;
}
}
Run Code Online (Sandbox Code Playgroud)