from sklearn.model_selection import train_test_split
X = df.drop(‘HeartDisease’, axis=1)
y = df[‘HeartDisease’]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=1)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=1/9, random_state=1)
def euclidean_distance(a, b):
distance = np.sqrt(np.sum(a - b)**2)
return distance
def manhattan_distance(a, b):
distance = 0
for a_i,b_i in zip(a,b):
distance += abs(a_i - b_i)
return distance
def KNN_euclidean(X_train, X_test, y_train, y_test, K):
y_list = []
for test_knn in X_test.to_numpy():
distances = []
for i in range(len(X_train)):
distances.append(euclidean_distance((np.array(X_train.iloc[i])), test_knn))
distance_data = pd.DataFrame(data = distances, columns = ['distance'], index = y_train.index)
k_neighbors_list = distance_data.sort_values(by=['distance'], axis = 0)[:K]
labels = y_train.loc[k_neighbors_list.index]
voting = mode(labels).mode[0]
y_list.append(voting)
return y_list
def KNN_manhattan(X_train, X_test, y_train, y_test, K):
y_list = []
for test_knn in X_test.to_numpy():
distances = []
for i in range(len(X_train)):
distances.append(manhattan_distance((np.array(X_train.iloc[i])), test_knn))
distance_data = pd.DataFrame(data = distances, columns = ['distance'], index = y_train.index)
k_neighbors_list = distance_data.sort_values(by=['distance'], axis = 0)[:K]
labels = y_train.loc[k_neighbors_list.index]
voting = mode(labels).mode[0]
y_list.append(voting)
return y_list
euclidean_acc_trains = []
for i in range(1, 10):
**f = KNN_euclidean(X_train, X_test, y_train, y_test, K=i).fit(X_train, y_train)**
result = clf.predict(X_train)
euclidean_acc_trains.append(accuracy_score(y_train, result))
plt.plot(range(1, 10), euclidean_acc_trains, color='b', marker='o')
****AttributeError: ‘list’ object has no attribute ‘fit’
i wanna get train accuracy with this code, but it doesnt work. how can i solve this prob?