Python 3.x 距离问题。欧几里德()缺失';u';和';v';

Python 3.x 距离问题。欧几里德()缺失';u';和';v';,python-3.x,scikit-learn,scipy-spatial,Python 3.x,Scikit Learn,Scipy Spatial,所以,我在学习机器学习,我想“创建”我自己的分类器 但当我试着跑的时候,它说在远处,欧几里德()忽略了“u”和“v” 你能帮我找出这个问题吗 import random from scipy.spatial import distance def euc(a,b): return distance.euclidean() class KnnSchifoso(): def fit(self, X_train, y_train): self.X_train =

所以,我在学习机器学习,我想“创建”我自己的分类器 但当我试着跑的时候,它说在远处,欧几里德()忽略了“u”和“v” 你能帮我找出这个问题吗

import random 
from scipy.spatial import distance

def euc(a,b):
    return distance.euclidean()


class KnnSchifoso():
    def fit(self, X_train, y_train):
        self.X_train = X_train
        self.y_train = y_train

    def predict(self, X_test):
        predictions = []
        for row in X_test:
            label = self.closest(row)
            predictions.append(label)
        return predictions

    def closest(self, row):
        best_dist = euc(row, self.X_train[0])
        best_index = 0
        for i in range(1, len(self.X_train)):
            dist = euc(row, self.X_train[i])
            if dist < best_dist:
                best_dist = dist
                best_index = i
        return self.y_train[best_index]

from sklearn import datasets
iris = datasets.load_iris()

x = iris.data
y = iris.target

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(x, y, test_size = .5)

my_classifier = KnnSchifoso()

my_classifier.fit(X_train, y_train)

predictions = my_classifier.predict(X_test)
print (predictions)

from sklearn.metrics import accuracy_score
print (accuracy_score(y_test, predictions))
随机导入
从scipy.spatial导入距离
def euc(a、b):
返回距离。欧几里德()
类KnnSchifoso():
def配合(自身、X_系列、y_系列):
self.X_train=X_train
self.y_train=y_train
def预测(自我、X_测试):
预测=[]
对于X_测试中的行:
标签=自最近(行)
预测。追加(标签)
回归预测
def最近(自身,行):
最佳距离=euc(行,self.X\u列[0])
最佳指数=0
对于范围内的i(1,len(self.X_train)):
dist=euc(行,自X_列[i])
如果距离<最佳距离:
最佳距离
最佳指数=i
返回自我。y_列车[最佳索引]
从sklearn导入数据集
iris=数据集。加载\u iris()
x=iris.data
y=iris.target
从sklearn.model\u选择导入列车\u测试\u拆分
X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y,测试大小=.5)
my_分类器=KnnSchifoso()
my_classifier.fit(X_train,y_train)
预测=我的分类器。预测(X_测试)
打印(预测)
从sklearn.metrics导入准确性\u分数
打印(准确度评分(y检验、预测))

您没有将参数传递给距离。欧几里德

def euc(a,b):
    return distance.euclidean(a, b) <--- You need to pass values to the function
def euc(a,b):

返回距离。欧几里得(a,b)别担心,我们都去过