I am trying to convert threshold array(pickle file of isolation forest from scikit learn) of type from Float64 to Float32
for i in range(len(tree.tree_.threshold)): tree.tree_.threshold[i] = tree.tree_.threshold[i].astype(np.float32)
Then Printing it
for value in tree.tree_.threshold[:5]: print(type(value)) print(value)
the output i am getting is :
<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
I am not getting a proper conversion to Float32. I want to convert values and their type to Float32, Did anybody have any workaround this ?
We have a method called astype(data_type) to change the data type of a numpy array. If we have a numpy array of type float64, then we can change it to int32 by giving the data type to the astype() method of numpy array. We can check the type of numpy array using the dtype class.
float64 is much slower than Python's float, and numpy. float32 is even slower (even though I'm on a 32-bit machine).
To convert numpy float to int array in Python, use the np. astype() function. The np. astype() function takes an array of float values and converts it into an integer array.
The problem is that you do not do any type conversion of the numpy array. You calculate a float32 variable and put it as an entry into a float64 numpy array. numpy then converts it properly back to float64
Try someting like this:
a = np.zeros(4,dtype="float64") print a.dtype print type(a[0]) a = np.float32(a) print a.dtype print type(a[0])
The output (tested with python 2.7)
float64 <type 'numpy.float64'> float32 <type 'numpy.float32'>
a is in your case the array tree.tree_.threshold
You can try this:
tree.tree_.threshold[i]=tree.tree_.threshold[i].astype('float32',casting='same_kind’)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With