Python 3 Anzahl der Nachkommastellen erhöhen?
Also ich habe eine kleine KI, die bekommt Werte und soll am Ende einen Wert vorhersagen. Das funktioniert auch super, aber der vorhergesagte Wert, wird immer automatisch auf 6 Stellen gerundet. Leider weiß ich nicht, wie ich bei model.predict die Anzahl der Nachkommastellen erhöhe.
Mein Quellcode für die Ausgabe ist:
print(model.predict([7]))
LG
2 Antworten
Über eine Kombination aus round und String Formatter.
Beispiel:
number = 1
print("{:.6f}".format(round(number, 6))) # 1.000000
number = 1.123456789
print("{:.6f}".format(round(number, 6))) # 1.123457
Hierbei werden stets sechs Nachkommastellen ausgegeben.
Du hast ein Array in die round-Funktion hineingegeben und das wird nicht unterstützt. Versuche es mal mit numpy.round. Für die Formatierung kannst du erst das Format (global) via set_printoptions festlegen:
numpy.set_printoptions(formatter={'float': lambda x: "{0:0.6f}".format(x)})
print(yourResult)
Da ich derzeit keine Testumgebung zur Verfügung habe, ist das Snippet ungetestet.
round(zahl, nachkommastellen)
So müsstest du einen wert auf eine bestimmte Anzahl Nachkommastellen runden können.
print(round(model.predict([7]), nachkommastellen))
Wäre mein Vorschlag. Musst natürlich "nachkommastellen" durch einen int Wert ersetzen.
Probier es mal aus, habs zwar noch nie gemacgt aber vielleicht hängt es dir ja die zusätzlichen nullen dran weil du ja erhöhst.
Edit: Wie du mehr Werte aus dem Befehl bekommst weiß ich allerdings nicht.
Vielen Dank, für deine Antwort, jedoch bekomme ich eine Fehlermeldung.
---> 13 print(round(model.predict([7]), 10))
TypeError: type numpy.ndarray doesn't define __round__ method
Also gibt der Befehl ein Numpy Array zurück? Mit einem Array geht round natürlich nicht. Deine Frage ließ annehmen, dass der Rückgabewert ein Float ist.
Danke für deine Antwort.
Dabei bekomme ich diese Fehlermeldung.
TypeError: type numpy.ndarray doesn't define __round__ method
Muss ich dafür noch etwas importieren? Meines Wissens nach nämlich nicht, oder liege ich da falsch?