Skip to main content
 首页 » 编程设计

python-3.x之如何找出特定的Python错误

2025年12月25日30txw1958

我正在编写以下分类器来检查 sci-kit。

...

class MyClassifier(): 
    def fit(self, x_train, y_train): 
        self.x_train = x_train 
        self.y_train = y_train 
        return 
 
    def predict(self, x_test): 
        prediction = [] 
        for row in x_test: 
            label = self.closest(row) 
            prediction.append(label) 
        return prediction 
 
    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[0]) 
            if dist < best_dist: 
                best_dist = dist 
                best_index = i 
        return self.y_train[best_index] 

后来,我想使用自己的分类器:

# Use my own Classifier 
classifer = MyClassifier() 
print(classifer) 
classifer = classifer.fit(x_train, y_train) 
prediction = classifer.predict(x_test) 
print(prediction) 
print(y_test) 

当我运行它时,出现以下错误:

<__main__.MyClassifier object at 0x103ec5668> 
Traceback (most recent call last): 
  File "/.../NewClassifier.py", line 72, in <module> 
    prediction = classifer.predict(x_test) 
AttributeError: 'NoneType' object has no attribute 'predict' 

predict() 函数有什么问题?

请您参考如下方法:

你的类方法

def fit(self, x_train, y_train): 
    self.x_train = x_train 
    self.y_train = y_train 
    return 

不返回任何内容,因此它隐式返回None

因此 classifer = classifer.fit(x_train, y_train) 会用 None 覆盖 MyClassifier 类型的名为 classifer 的变量.

A None 没有您可以调用的方法 - 这就是您收到的确切错误消息。

您应该将classifer = classifer.fit(x_train, y_train)更改为简单的

classifer.fit(x_train, y_train) 

因此,您可以将名为 classifer 的变量保留为您的类实例,而不是使用 None“覆盖”它。


这应该可以修复它:

# Use my own Classifier 
classifer = MyClassifier() 
print(classifer) 
classifer.fit(x_train, y_train) 
prediction = classifer.predict(x_test) 
print(prediction) 
print(y_test)