Я пытался разработать KNN с нуля до данных Iris, но занялся спетом - очень запутанный для новичка. Не могли бы вы уделить минуту, чтобы помочь мне исправить эту ошибку IndexError: индекс 4 выходит за границы оси 0 с размером 4 ? Большое спасибо
Я хотел применить 13 тыс. Соседей, но не очень хорошо
from sklearn import datasets # import datasets
import numpy as np # import numpy
iris = datasets.load_iris() # load data
X = iris.data # get features
y = iris.target # get targets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
def euclidean_distance(row1, row2):
distance = 0.0
for i in range(len(row1)-1):
distance += (row1[i] - row2[i])**2
return sqrt(distance)
# Locate the most similar neighbors
def call_neighbors(X_train, X_test, num_neighbors):
distances = list()
for train_row in X_train:
dist = euclidean_distance(X_test, train_row)
distances.append((X_train, dist))
distances.sort(key=lambda tup: tup[1])
neighbors = list()
for i in range(14):
neighbors.append(distances[i][0])
return neighbors
neighbors = call_neighbors(X_train, X_test, 13)
for neighbor in neighbors:
print(neighbor)
# Make a classification prediction with neighbors
def predict_classification(train, test_row, num_neighbors):
neighbors = get_neighbors(X_train, X_test, 13)
output_values = [row[-1] for row in neighbors]
prediction = max(set(output_values), key=output_values.count)
return prediction