#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 . Но я забыл очистить вывод ячейки.