reliefF算法
import numpy as npimport pandas as pd
from sklearn import datasets
data = datasets.load_iris()
x,y = data.data,data.target
arr = np.hstack((x,y.reshape(len(y),1)))
k = 10
#获取某个类别的K个近邻样本
def countNeighborDist(randomSample,randomIndex,label):
dis = {}
chooseKSampleIndex = []
index = np.where(arr[:,-1]==label)[0]
for i in index:
dist = np.sqrt(np.sum((randomSample[0:-1] - arr[i,0:-1])**2))
dis[i] = dist
if randomIndex in index:
del dis[randomIndex]
for j in range(k):
index = min(dis,key=dis.get)
chooseKSampleIndex.append(index)
del dis[index]
return arr[chooseKSampleIndex]
#得到各个类别下K个样本的集合
def getSample():
sort =