'Weight'(float), 'Gender'(0 또는 1 (int)), 'Height'(float), 'Metabolism'(0,1,2,3 (int)) 열이 6 개있는 데이터 세트가 있습니다. , 'Psychology'(0,1,2,3,4,5,6 (int)) 예측해야하는 열은 'Age'(int)입니다. sklearn의 VotingClassifier로해야합니다. 원-핫 인코딩을 적용한 후이 방법으로 데이터를 분할했습니다.
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)
그리고 knn도. 자,이 부분은 완벽하게 작동합니다
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에서 float로 변환하려고 시도했지만 아무것도 변경하지 않았습니다. 모든 것을 int로 변경했지만 동일한 오류가 발생합니다. 그 라인에 오류가 표시되는 이유는 무엇입니까? 정말 혼란 스러워요.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-37-86a04c2ceff1> in <module>
----> 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 <lambda>(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'
사용 매개 변수에 시도 '부드러운'= 투표 에 대한 VotingClassifier . 내가 가진 생각 투표 = '하드' 가 기대 라벨의 정수 모든 모델에서,하지만 일부 얻는다 회귀 변수에서 부동 소수점 값을 . '소프트'를 사용하면 모델 결과를 확률로 취하고 확률은 물론 실수입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다