Ich bin mir nicht sicher, was genau ich falsch mache, da ich fast absolut sicher bin, dass ich auf Variablen und alle richtig verwiesen habe.Klassen & Funktionen -
Ich bin ziemlich neu in der Verwendung von Funktionen, und habe gerade angefangen zu lernen, Python-Klassen vor einem Tag zu verwenden.
Also, wenn ich den Code ausführen, bekomme ich diese Fehlermeldung:
line 37, in pathlist
while self.no_of_files > 0: #self.number_of_files
AttributeError: 'int' object has no attribute 'no_of_files'
Ich vermute, dass es etwas mit meinem aufeinanderfolgenden Stufen Code zu tun, oder ist das, weil ich umgewandelt habe die numfiles Eingabe in ein int() in Zeile 20 des Codes.
Ich habe meinen Code unten beigefügt. Bitte helfen Sie mir Vielen Dank im Voraus :)
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()
'Traceback (jüngste Aufforderung zuletzt): Datei "", Zeile 22, in Klasse Calculate_RMSE_Assess_Models: Datei "", Zeile 43, in Calculate_RMSE_Assess_Models list_filepath = pathlist (no_of_files) Datei "" , Zeile 37, in der Pfadliste während self.no_of_files> 0: AttributeError: 'int' Objekt hat kein Attribut 'no_of_files'' –
Christoph
Entschuldigung, dass ich das vollständige Traceback nicht in den OG Post aufgenommen habe, dachte es sei egal so viel wie ich musste das Dateiverzeichnis manuell entfernen, da es einige vertrauliche Sachen enthielt. – Christoph
Meine Antwort erklärt, warum Sie diesen spezifischen Fehler erhalten. Wenn Sie eine Rückverfolgung betrachten, versuchen Sie, in Ihrem Kopf durchzugehen. – Galen