I worked on making functions for K Nearest Neighbors. I have tested each function separately and they all work well. However whenever I put them together and run KNN_method
, it shows unhashable type: 'numpy.ndarray'
.
Here is my code:
def distance(p,point):import numpy as npvalue = np.sqrt(sum(np.power((p-point),2)))return(value)def find_neighbors(p,list_of_points, k = 3):import numpy as npdistances = np.zeros(list_of_points.shape[0])for i in range(list_of_points.shape[0]):distances[i]= distance(p,list_of_points[i])ind = np.argsort(distances)return(ind[0:k])def majority_votes(votes):import randomvote_result = {}for key in votes:if key in vote_result:vote_result[key] += 1else:vote_result[key] = 1final_list = []for (number, vote) in vote_result.items():if vote == max(vote_result.values()):final_list.append(number)Winner = random.choice(final_list)return(Winner)def KNN_method(p , list_of_points , outcomes , k = 3):ind = find_neighbors(p , list_of_points , k) Final = majority_votes(outcomes[ind])return(Final)