Создайте копию функции myKNeighborsClassifier и измените ее так, чтобы она считала выступ объекта. Назовите ее calcMargin
Нужно было создать модель для предсказания выживших пассажиров на "Титанике" (классическое учебное Kaggle соревнование). Проблема в том, что я не знаю, как изменить KNeighborsClassifier так, чтоб она считала выступы. Если будет нужно могу загрузить файл .ipynb, где расположен остальной код.
//////////// Создайте копию функции myKNeighborsClassifier и измените ее так, чтобы она считала выступ объекта. Назовите ее calcMargin.
Вычислите выступы для всех объектов и выведите информацию о пяти объектах с минимальным выступом (шумовых выбросах) и пяти объектах с максимальным выступом (эталонах).
Сам код myKNeighborsClassifier:
def myKNeighborsClassifier(learnData, K, passengerIndexForPrediction):
dists = np.zeros((learnData.shape[0] - 1, 2))
i = 0
for idx, row in learnData.iterrows():
if idx != passengerIndexForPrediction: #LOO метод контроля ошибки
dists[i][0] = distance(learnData.loc[passengerIndexForPrediction,], row)
dists[i][1] = row['Survived']
i += 1
dists = sorted(dists, key = lambda pair: pair[0])
prediction = 0
for i in range(K):
prediction += dists[i][1]
prediction /= K
return round(prediction)
accuracy = 0
for idx, row in tqdm.tqdm(people.iterrows(), total=len(people)):
accuracy += row['Survived'] == myKNeighborsClassifier(people, 5, idx)
print(accuracy/people.shape[0])`