webentwicklung-frage-antwort-db.com.de

Konvertieren Sie Numpy-Array-Typ und -Werte von Float64 in Float32

Ich versuche, das Schwellenwert-Array (Pickle-Datei der Isolationswaldstruktur von Scikit Learn) vom Typ Float64 in Float32 zu konvertieren 

for i in range(len(tree.tree_.threshold)):
    tree.tree_.threshold[i] = tree.tree_.threshold[i].astype(np.float32)

.__ Dann druckt es

for value in tree.tree_.threshold[:5]:
    print(type(value))
    print(value)

die Ausgabe, die ich bekomme, ist:

<class 'numpy.float64'>
526226.0
<class 'numpy.float64'>
91.9514312744
<class 'numpy.float64'>
3.60330319405
<class 'numpy.float64'>
-2.0
<class 'numpy.float64'>
-2.0

Ich bekomme keine korrekte Konvertierung in Float32. Ich möchte Werte und ihren Typ in Float32 konvertieren. Hat jemand eine Problemumgehung?

9
Akshay Tilekar

Eigentlich habe ich mich bemüht, aber nicht als Objekte 'sklearn.tree._tree.tree' sind nicht beschreibbar.

Es verursacht ein Präzisionsproblem beim Generieren einer PMML-Datei, also i Es gab dort einen Fehler und sie gaben eine aktualisierte Lösung von es nicht intern in den Float64 umwandeln.

Für weitere Informationen können Sie diesem Link folgen: Präzisionsproblem

1
Akshay Tilekar

Das Problem ist, dass Sie keine Typkonvertierung des Numpy-Arrays durchführen. Sie berechnen eine float32-Variable und fügen sie als Eintrag in ein float64-numpy-Array ein. numpy konvertiert es dann wieder ordnungsgemäß in float64

Versuchen Sie etwas wie dieses:

a = np.zeros(4,dtype="float64") 
print a.dtype
print type(a[0])
a = np.float32(a)
print a.dtype
print type(a[0])

Die Ausgabe (getestet mit Python 2.7)

float64
<type 'numpy.float64'>
float32
<type 'numpy.float32'>

a ist in Ihrem Fall das Array tree.tree_.threshold

9
Glostas

Sie können dies versuchen:

tree.tree_.threshold[i]=tree.tree_.threshold[i].astype('float32',casting='same_kind’)
0
Woody