• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

课程与功能 –

python 来源:Christoph 8次浏览

我不确定我做错了什么,因为我几乎可以肯定地确定我已经引用了变量,并且都是正确的。课程与功能 –

我对使用函数还不太熟悉,并且刚刚开始学习如何在一天前使用Python类。

所以,当我运行代码,我得到这个错误信息:

line 37, in pathlist 
    while self.no_of_files > 0:    #self.number_of_files 
AttributeError: 'int' object has no attribute 'no_of_files' 

我猜它是与我的代码顺序步骤,或者是因为我已经转换输入到代码第20行中的int()的numfiles。

我附上我的代码如下。请帮我在此先感谢:)

import csv 
import numpy as np 


''' DEFINING MAIN CONTROL''' 

def main(): 
    no_of_files # = number_of_files() 
    a = Calculate_RMSE_Assess_Models() 
    a.no_of_files() # = no_of_files 
    a.pathlist() 
    a.out_path() 
    a.open_read_write_files() 


''' DEFINING CLASS OF ALL ''' 
class Calculate_RMSE_Assess_Models: 

    def __init__(self, no_of_files): 
     self.no_of_files = no_of_files 

    def number_of_files(): 
     numfiles = input("Enter the number of files to iterate through: ") 
     numfilesnumber = int(numfiles) 
     return numfilesnumber 

    no_of_files = number_of_files() 


    def pathlist(self): 
     filepathlist = [] 
     while self.no_of_files > 0:    #self.number_of_files 
      path = input("Enter the filepath of the input file: ") 
      filepathlist.append(path) 
      no_of_files = no_of_files - 1 
     return filepathlist 

    list_filepath = pathlist(no_of_files) 

    def out_path(): 
     path = input("Enter the file path of output path: ") 
     return path 

    file_out_path = outpath() 

    def open_read_write_files(): 
     with open('{d[0]}'.format(d=list_filepath), 'r') as csvinput, open('{d[1]}'.format(d=list_filepath), 'r') as csvinput2, open('d{[2]}'.format(d=list_filepath), 'r') as csvinput3, open('{d}'.format(d=file_out_path), 'w') as csvoutput: 
      reader, reader2, reader3 = csv.reader(csvinput, csvinput2, csvinput3)            #1: Decision Forest, 2: Boosted Decision Tree, 3: ANN 
      writer = csv.DictWriter(csvoutput, lineterminator='\n', fieldnames = ['oldRMSE', 'Decision Forest Regression RMSE', 'Boosted Decision Tree Regression RMSE', 'Neural Network Regression RMSE', 'Old Accurate Predictions', 'Old Inaccurate Predictions', 'Decision Forest Accurate Predictions', 'Decision Forest Inaccurate Predictions', 'Boosted Decision Tree Accurate Predictions', 'Boosted Decision Tree Inaccurate Predictions', 'Neural Network Accurate Predictions', 'Neural Network Inaccurate Predictions']) 

      ####################################### 
      #For Decision Forest Predictions 
      headerline = next(reader) 
      emptyl=[] 
      for row in reader: 
       emptyl.append(row) 

      #Calculate RMSE 
      DecFSqResidSum = 0 
      for row in emptyl: 
       for cell in row: 
        if cell == row[-3]: 
         DecFSqResidSum = float(cell) + DecFSqResidSum 
      DecFSqResidAvg = DecFSqResidSum/len(emptyl) 
      DecForest_RMSE = np.sqrt(DecFSqResidAvg) 

      #Constructing No. of Correct/Incorrect Predictions 
      DecisionForest_Accurate = 0 
      DecisionForest_Inaccurate = 0 
      Old_Accurate = 0 
      Old_Inaccurate = 0 
      for row in emptyl: 
       for cell in row: 
        if cell == row[-2] and 'Accurate' in cell: 
         Old_Accurate += 1 
        else: 
         Old_Inaccurate += 1 
        if cell == row[-1] and 'Accurate' in cell: 
         DecisionForest_Accurate += 1 
        else: 
         DecisionForest_Inaccurate += 1 


      ###################################### 
      #For Boosted Decision Tree 
      headerline2 = next(reader2) 
      emptyl2=[]          #make new csv file(list) from csv reader 
      for row in reader2: 
       emptyl2.append(row) 

      #Calculate RMSE 
      OldSqResidSum = 0 
      BoostDTSqResidSum = 0 
      for row in emptyl2:        #make Sum of Squared Residuals 
       for cell in row: 
        if cell == row[-4]: 
         OldSqResidSum = float(cell) + OldSqResidSum 
        if cell == row[-3]: 
         BoostDTSqResidSum = float(cell) + BoostDTSqResidSum 
      OldSqResidAvg = OldSqResidSum/len(emptyl2) #divide by N to get average 
      BoostDTResidAvg = BoostDTSqResidSum/len(emptyl2) 
      oldRMSE = np.sqrt(OldSqResidAvg)    #calculate RMSE of ESTARRTIME & Boosted Decision Tree 
      BoostedDecTree_RMSE = np.sqrt(BoostDTResidAvg) 

      #Constructing Correct/Incorrect Predictions 
      BoostedDT_Accurate = 0 
      BoostedDT_Inaccurate = 0 
      for row in emptyl2: 
        if cell == row[-1] and 'Accurate' in cell: 
         BoostedDT_Accurate += 1 
        else: 
         BoostedDT_Inaccurate += 1 



      ###################################### 
      #For Artificial Neural Network (ANN) Predictions 
      headerline3 = next(reader3) 
      emptyl3=[] 
      for row in reader3: 
       emptyl3.append(row) 

      #Calculate RMSE 
      ANNSqResidSum = 0 
      for row in emptyl3: 
       for cell in row: 
        if cell == row[-3]: 
         ANNSqResidSum = float(cell) + ANNSqResidSum 
      ANNSqResidAvg = ANNSqResidSum/len(emptyl3) 
      ANN_RMSE = np.sqrt(ANNSqResidAvg) 

      #Constructing Correct/Incorrect Predictions 
      ANN_Accurate = 0 
      ANN_Inaccurate = 0 
      for row in emptyl3: 
       for cell in row: 
        if cell == row[-1] and 'Accurate' in cell: 
         ANN_Accurate += 1 
        else: 
         ANN_Inaccurate += 1 



      #Compile the Error Measures 
      finalcsv = [] 
      finalcsv.append(oldRMSE) 
      finalcsv.append(DecForest_RMSE) 
      finalcsv.append(BoostedDecTree_RMSE) 
      finalcsv.append(ANN_RMSE) 
      finalcsv.append(Old_Accurate) 
      finalcsv.append(Old_Inaccurate) 
      finalcsv.append(DecisionForest_Accurate) 
      finalcsv.append(DecisionForest_Inaccurate) 
      finalcsv.append(BoostedDT_Accurate) 
      finalcsv.append(BoostedDT_Inaccurate) 
      finalcsv.append(ANN_Accurate) 
      finalcsv.append(ANN_Inaccurate) 



      #Write the Final Comparison file 
      writer.writeheader() 
      writer.writerows({'oldRMSE': row[0], 'Decision Forest Regression RMSE': row[1], 'Boosted Decision Tree Regression RMSE': row[2], 'Neural Network Regression RMSE': row[3], 'Old Accurate Predictions': row[4], 'Old Inaccurate Predictions': row[5], 'Decision Forest Accurate Predictions': row[6], 'Decision Forest Inaccurate Predictions': row[7], 'Boosted Decision Tree Accurate Predictions': row[8], 'Boosted Decision Tree Inaccurate Predictions': row[9], 'Neural Network Accurate Predictions': row[10], 'Neural Network Inaccurate Predictions': row[11]} for row in np.nditer(finalcsv)) 


main() 

===========解决方案如下:

你应该给一个no_of_files PARAMS通过调用高清初始化(个体经营,no_of_files)创建一个 实例Calculate_RMSE_Assess_Models时。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)