2015-11-22 9 views
0

Здесь X является обучающей матрицей, а test_feature является тестовым массивом.Ядро RBF для классификации с использованием KNN

squared_euclidian = np.sum(np.square(X - test_feature), axis=1) 

squared_euclidian является Squared Euclidian distance

Для евклидово расстояние во входном массиве с полной матрицей Numpy

dist = np.sqrt(squared_euclidian) 

и RBF (гауссово) ядра в соответствии с this Slide 5

test_sigma = np.square(np.std(test_feature)) 
dist = np.exp(-1 * (squared_euclidian/test_sigma)) 

Я тестировал эти f в наборе данных 2000 экземпляров, где я получил точность 91% для евклидова, но 54% ​​для другой.

Является ли формула для ядра RBF неправильной?

ответ

0

Разве это не правильная формула, поскольку я вижу ее на слайде 5?

dist = np.exp(-.5 * squared_euclidian/np.square(test_feature.std())) 

Посмотрите примечания here о смещении блок оценки для np.std(ddof=...)