写在前面:
既然写了Relief为啥不写个ReliefF?然后就有了这段只更新了一点点的代码。
比起Relief,ReliefF可以用于多类的问题,而且拥有更好的稳定性(因为neraHit和nearMiss不再只选一个,而是选择几个进行平均),如果你对Relief不是很了解,那么可以看我前面一篇文章,我觉得Relief的算法我还是介绍地比较详细的,仍然废话不多说,上代码,末尾我会解释一下这段代码和Relief的区别在什么地方。
import numpy as np
from random import randrange
from sklearn.datasets import make_blobs
from sklearn.preprocessing import normalize
def distanceNorm(Norm,D_value):
# initialization
# Norm for distance
if Norm == '1':
counter = np.absolute(D_value);
counter = np.sum(counter);
elif Norm == '2':
counter = np.power(D_value,2);
counter = np.sum(counter);
counter = np.sqrt(counter);
elif Norm == 'Infinity':
counter = np.absolute(D_value);
counter = np.max(counter);
else:
raise Exception('