Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Python by (47.6k points)

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 np 

value = np.sqrt(sum(np.power((p-point),2))) 

return(value) 

def find_neighbors(p,list_of_points, k = 3): 

import numpy as np 

distances = 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 random 

vote_result = {} 

for key in votes: 

if key in vote_result: 

vote_result[key] += 1 

else: 

vote_result[key] = 1 

final_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)

1 Answer

0 votes
by (106k points)

Firstly you need to convert it into to tuple.

hash(tuple(np.array([1,2,3,4])))

Interested to learn more about Python? Come & join our Python course 

Related questions

0 votes
1 answer
0 votes
2 answers
0 votes
2 answers
0 votes
1 answer
0 votes
1 answer

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...