2016-07-13 4 views
0

Я пытаюсь реализовать randomforest в Python. При запуске кода я получил эту ошибку. Несмотря на то, что я уже конвертированы из float32 в float64 с помощью:Преобразование из массива numpy float32 в массив numpy float64

x_arr = np.array(train_df, dtype='float64') 

Traceback(most recent call last): 
    File "C:\Python27\randomforest.py", line 67, in <module>  
    forest=forest.fit(x_array[0::,1::],x_array[0::,0]) 
    File "C:\Python27\lib\site-packages\sklearn\ensemble\forest.py", line 212, in fit 
    X = check_array(X, dtype=DTYPE, accept_sparse="csc") 
    File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 398, in check_array 
    _assert_all_finite(array) 
    File "C:\Python27\lib\site-packages\sklearn\utils\validation.py", line 54, in _assert_all_finite 
    " or a value too large for %r." % X.dtype) 
ValueError: Input contains NaN, infinity or a value too large for dtype('float32'). 

Пожалуйста, может кто-нибудь помочь?

+0

Что происходит, когда вы пытаетесь 'DTYPE = np.float64' вместо этого? – Aguy

ответ

1

Проблема не в том, что вы не можете установить тип float64. В сообщении об ошибке указано:

Ввод содержит NaN, бесконечность или значение, слишком большое для dtype ('float32').

Так попробуйте проверить для этих условий первого:

assert not np.any(np.isnan(x_arr)) 
assert np.all(np.isfinite(x_arr)) 
assert np.all(x_arr <= finfo('float32').max) 
assert np.all(x_arr >= finfo('float32').min) 
0

я попал сюда из-за вопроса в названии которых я до сих пор чувствую, остается без ответа. Для преобразования float32 в float64 в numpy.ndarray объекта:

array32 = np.ndarray(shape=(2,2), dtype=np.float32, order='F') 
print("Type of an object of 'array32': " + str(type(array32[0][0]))) 

# Convert to float64 
array64 = array32.astype(np.float64) 
print("Type of an object of 'array64': " + str(type(array64[0][0]))) 

# Convert back to float32 
array32again = array64.astype(np.float32) 
print("Type of an object of 'array32again': " + str(type(array32again[0][0]))) 

Даст вам:

Type of an object of 'array32': <class 'numpy.float32'> 
Type of an object of 'array64': <class 'numpy.float64'> 
Type of an object of 'array32again': <class 'numpy.float32'> 

 Смежные вопросы

  • Нет связанных вопросов^_^