Ошибка имени: имя ‘_predicted’ не определено при использовании Google colab

#python #python-3.x #google-colaboratory #knn

#python #python-3.x #google-colaboratory #knn

Вопрос:

Я изучаю K-БЛИЖАЙШИХ СОСЕДЕЙ (KNN).Я могу запустить код в Jupyter Notebook.Но я получаю сообщение об ошибке «Ошибка имени: имя ‘_predicted’ не определено при использовании Google colab.

Я учусь у https://www.youtube.com/watch?v=ngLyX54e1LUamp;list=PLqnslRFeH2Upcrywf-u2etjdxxkL8nl7Eamp;index=1

 from google.colab import drive

drive.mount('/content/drive')

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
cmap = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])

iris = datasets.load_iris()
X, y = iris.data, iris.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 1234)

import sys
sys.path.append('/content/drive/MyDrive/Colab Notebooks')
from knn import KNN
clf = KNN(k=3)
clf.fit(X_train, y_train)
predictions = clf.predict(X_test)
acc = np.sum(predictions == y_test) / len(y_test)
print(acc)

 

knn.py

 import numpy as np
from collections import Counter

def euclidiean_distance(x1, x2):
    return np.sqrt(np.sum((x1-x2)**2))

class KNN:

    def __init__(self, k=3):
        self.k = k
    
    def fit(self, X, y):
        self.X_train = X
        self.y_train = y

    def predict(self, X):
        predicted_labels = [self._predicted(x) for x in X]
        return np.array(predicted_labels)
    
    def _predicted(self, x):
        distance = [euclidiean_distance(x, x_train) for x_train in self.X_train]
        k_indices = np.argsort(distance)[:self.k]
        k_nearest_laybels = [self.y_train[i] for i in k_indices]
        most_common = Counter(k_nearest_laybels).most_common(1)
        return most_common[0][0]
 

Комментарии:

1. Привет, я протестировал ваш код на Colab, и он отлично работал.

2. Я открываю новый ноутбук, и он работает нормально.

3. Я отредактировал knn.py . Но я забыл очистить вывод ячейки.