第2次迭代的压缩变量丢失值

时间:2018-09-28 04:42:31

标签: python machine-learning

我对Python还是很陌生,所以我确定这不是最有效的编码方法。我遇到的问题是我有第二个For循环,该循环在另一个for循环内运行。第一次运行良好,但是在第二次迭代中,第二个for循环不会注册数据并跳过数据,因此它永远不会再次运行。我使用了一个压缩的元组,它看起来完全失去了价值。

class Model:
    def predict(self, data):
         prediction = []
         distances = []
         for item in data:
             distances.clear()
             for trainedItem in self.Train_Data:
                 distances.append([(abs((item[0] - trainedItem[0][3])) + abs((item[1] - trainedItem[0][1])) + abs((item[2] - trainedItem[0][2])) + abs((item[3] - trainedItem[0][3]))), trainedItem[1]])
             distances.sort()
             targetNeighbors = []
             for closest in distances[:self.K]:
                 targetNeighbors.append(closest[1])
             prediction.append(Counter(targetNeighbors).most_common()[0][0])
         return prediction


class HardcodedClassifier:
     def fit(X_Train, Y_Train, k):
         Model.Train_Data = zip(X_Train, Y_Train)
         Model.K = k
         return Model`

2 个答案:

答案 0 :(得分:1)

迭代器已耗尽。尝试PDF,以便每次在内部for循环中进行迭代。

答案 1 :(得分:0)

根据我所看到的,您正在调用Model类构造函数,而不是实例化模型对象并访问其数据。当声明一个类时,该声明仅创建一个构造函数对象。构造函数将返回您在调用时定义的类型的新对象。

class Bacon:
     tasty = true
     def __init__():
         self.salty = true

Bacon
>> <class constructor object at #memoryaddress>
Bacon.tasty
>> True
Bacon.salty
>> Error: Attribute not found

baconstrip = Bacon()
baconstrip
>> <Bacon object at #memoryaddress>

baconstrip.tasty
>> True
baconstrip.salty
>> True

baconstrip对象是Bacon类型,具有内存和为其分配的自己的名称空间来存储变量。培根变量是构造函数,您也可以像访问对象一样访问它,但这不是它本身的实际实例。

输入您的代码

class HardcodedClassifier:
     def __init__(self, model):  # to initialize the class, provide a model.
         self.model = model

     def fit(X_Train, Y_Train, k):
         self.model.Train_Data = zip(X_Train, Y_Train)
         self.model.K = k
         # no need to return a value. The state of the object is preserved.

mymodel = Model()
myclassifier = HardcodedClassifier(mymodel)