Невозможно привести данные массива из dtype('float64') в dtype('int32') в соответствии с "безопасным"Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно привести данные массива из dtype('float64') в dtype('int32') в соответствии с "безопасным"

Сообщение Anonymous »

У меня есть набор данных с 6 столбцами «Вес» (с плавающей запятой), «Пол» (0 или 1 (целое)), «Рост» (с плавающей запятой), «Метаболизм» (0,1,2,3 ( int)) «Психология» (0,1,2,3,4,5,6 (int)) и столбец, который мы должны предсказать, — «Возраст» (int). Мне нужно сделать это с помощью VotingClassifier sklearn. Я разделил данные таким образом после того, как применил горячее кодирование.

X_train, X_test, y_train, y_test = train_test_split(X_hot, y, test_size=0.25, random_state=1)


Я использую эти 4 алгоритма для классификатора.

gbm = GradientBoostingRegressor(loss='huber',n_estimators=5000,max_features="sqrt",subsample=0.9)
gbm.fit(X = X_train,y = np.log1p(y_train))

ada = AdaBoostClassifier(n_estimators=2000)
ada.fit(X = X_train,y = y_train)

log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)


и кнн тоже. Теперь эта часть работает отлично

from sklearn.ensemble import VotingClassifier
estimators=[('knn', knn_best), ('ada', ada), ('log_reg', log_reg), ('gbm', gbm)]
new_ensemble = VotingClassifier(estimators, voting='hard')
new_ensemble.fit(X_train, y_train)


и в этой части ниже показана ошибка

y_pred = new_ensemble.predict(X_test)


Я пытался преобразовать все в плавающее из X_train, X_test, y_train, y_test, но это ничего не изменило. Я изменил все на int, но возникает та же ошибка. Почему в этой строке отображается ошибка? Я действительно в замешательстве.

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
in
----> 1 y_pred = new_ensemble.predict(X_test)

~\AppData\Roaming\Python\Python37\site-packages\sklearn\ensemble\voting_classifier.py in predict(self, X)
237 lambda x: np.argmax(
238 np.bincount(x, weights=self._weights_not_none)),
--> 239 axis=1, arr=predictions)
240
241 maj = self.le_.inverse_transform(maj)

~\Anaconda3\lib\site-packages\numpy\lib\shape_base.py in apply_along_axis(func1d, axis, arr, *args, **kwargs)
378 except StopIteration:
379 raise ValueError('Cannot apply_along_axis when any iteration dimensions are 0')
--> 380 res = asanyarray(func1d(inarr_view[ind0], *args, **kwargs))
381
382 # build a buffer for storing evaluations of func1d.

~\AppData\Roaming\Python\Python37\site-packages\sklearn\ensemble\voting_classifier.py in (x)
236 maj = np.apply_along_axis(
237 lambda x: np.argmax(
--> 238 np.bincount(x, weights=self._weights_not_none)),
239 axis=1, arr=predictions)
240

TypeError: Cannot cast array data from dtype('float64') to dtype('int32') according to the rule 'safe'


Подробнее здесь: https://stackoverflow.com/questions/594 ... ing-to-saf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»