Я работаю над функцией knn. Внутри него у меня уже есть функция, которая будет возвращать индексы k-ближайших соседей для данной точки данных, когда эта точка сравнивается с набором данных.
Теперь я пытаюсь заставить фактическую функцию классификатора работать, но у меня проблемы с оператором if / then. Нет никакого веса для ближайших соседей, так что это большинство голосов, и поэтому расчет режима должен сделать это.
Однако, поскольку «k» может быть четным числом, существует вероятность ничьей, и в этом случае ближайший сосед «выигрывает» голосование.
Так что я в основном пытаюсь кодировать следующее:
если режим существует / 'statistics.mode ()' не выдает ошибку, то документ будет классифицирован по режиму
В противном случае документ будет классифицирован ближайшим соседом.
TIA за любую помощь! Вот код, который у меня есть
def getPrediction(indices_of_nearest_neighbors, training_labels):
# get vector of "votes"
nearest_Y = training_labels.iloc[indices_of_nearest_neighbors, 1].values
if statistics.mode(nearest_Y) ##does not throw an error:
doc_classification=statistics.mode(nearest_Y)
else doc_classification= training_labels.iloc[closest_neighbor,1]
return doc_classification