/*
* 文件名:ZeroOneLoss.java
* 版权:Copyright 2008-20012 复旦大学 All Rights Reserved.
* 修改人:xpqiu
* 修改时间:2009 Sep 7, 2009 6:36:21 PM
* 修改内容:新增
*
* 修改人:〈修改人〉
* 修改时间:YYYY-MM-DD
* 修改内容:〈修改内容〉
*/
package edu.fudan.ml.loss.struct;
import java.util.List;
import edu.fudan.ml.loss.Loss;
/**
* 0-1错误
*/
public class ZeroOneLoss implements Loss {
private float calc(List l1, List l2) {
boolean eq = true;
for(int i=0; i<l1.size(); i++) {
if (!l1.get(i).equals(l2.get(i))){
eq = false;
break;
}
}
return eq?0:1;
}
private float calc(int[] l1, int[] l2) {
boolean eq = true;
for(int i=0; i<l1.length; i++) {
if (l1[i] != l2[i]){
eq = false;
break;
}
}
return eq?0:1;
}
public float calc(Object l1, Object l2) {
if (!l1.getClass().equals(l2.getClass()))
throw new IllegalArgumentException("Exception in HammingLoss: l1 and l2 have different types");
float ret = 0;
if (l1 instanceof int[]) {
ret = calc((int[])l1, (int[])l2);
}else if (l1 instanceof List) {
ret = calc((List)l1, (List)l2);
}else {
throw new UnsupportedOperationException("");
}
return ret;
}
}