附加到不在Python

时间:2015-10-18 01:08:55

标签: python list class append ipython

在Jupyter(iPython)中运行它,我有一个字典,其中键是一个复合词,值是Model类的一个实例。我正在迭代我的化合物列表,并尝试将所有单个模型添加到该化合物的Model类实例的模型列表属性中。

这是完美的,因为我总结了如果模型是好还是D_compound_Models[cpd].summation += accuracy但是当我D_compound_Models[cpd].models.append(model)它看起来它是为每个实例中的所有化合物累加所有模型。

当我得到len(D_compound_Model [cpd] .models)时,它应该超过len(lpo),应该是780。我想出了如何通过添加到lpo for-loop之外的列表来修复它,然后在最后将该属性添加到类中,但这不是我想要的方式。

为什么列表附加操作不能正常工作?

特别是因为累积金额正常工作......

这是我的班级

class Models:
    def __init__(self,compound=None,models=[],summation=0.0,duration=0.0):
        self.compound = compound; self.models = models; self.summation = summation; self.duration = duration
    def score(self):
        return(self.summation/len(self.models))   

这是我将类的实例添加到相应的化合物

的地方
from sklearn.cross_validation import LeavePOut

D_compound_Models = {}
lpo = LeavePOut(len(DF_attributes.index), p=2) #All combinations of 40 index values while leaving out 2
query_compounds = ["AG1024","AG1478"]

#Check order of indices
for cpd in query_compounds:
    #Create compound instance
    D_compound_Models[cpd] = Models(compound=cpd)
    #Get sensitivity column for compound
    SR_compound = DF_compoundSensitivity[cpd]
    #Create and train models
    for index_values in lpo: #There should be 780 of these

        #Create model
        model = #Some model object

        #a bunch of model training stuff that's irrelevant       

        accuracy = #1 or 0 

        #Store models
        D_compound_Models[cpd].models.append(model)
        D_compound_Models[cpd].summation += accuracy

这就是我在最后检查它的方式

for cpd in query_compounds:
    M = D_compound_Models[cpd]

    print(cpd,M.summation,len(M.models),M.score())

这是我不想这样做的正确答案(最后添加列表)

#Correct: Note how 630 and 528 are not == 780. I do some filtering so it's alright
('AG1024', 304.0, 630, 0.48253968253968255)
('AG1478', 221.0, 528, 0.4185606060606061)

使用上面的代码(附加到列表)

这是不正确的答案
#Incorrect
('AG1024', 304.0, 1158, 0.26252158894645944)
('AG1478', 221.0, 1158, 0.19084628670120898)

我确保每次在Jupyter中运行时重置课程。我甚至重新启动了内核并得到了相同的结果......

0 个答案:

没有答案