Создайте копию функции 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])`

Ответы (0 шт):