[python] 1d 배열이 예상되었을 때 열 벡터 y가 전달되었습니다.

나는 맞게 필요 RandomForestRegressor에서 sklearn.ensemble.

forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)

이 코드는 데이터를 전처리 할 때까지 항상 작동했습니다 ( train_y). 오류 메시지는 다음과 같습니다.

DataConversionWarning : 1d 배열이 예상되었을 때 열 벡터 y가 전달되었습니다. 예를 들어 ravel ()을 사용하여 y의 모양을 (n_samples,)로 변경하십시오.

모델 = forest.fit (train_fold, train_y)

이전 train_y에는 시리즈 였지만 이제는 numpy 배열입니다 (열 벡터입니다). 적용 train_y.ravel()하면 행 벡터가되고 오류 메시지가 나타나지 않습니다. 예측 단계를 통해 매우 오랜 시간이 걸립니다 (실제로는 완료되지 않습니다 …).

문서
에서이 문제를 해결하는 방법에 대한 아이디어 로 정의되어야 함을 RandomForestRegressor알았습니다 .train_yy : array-like, shape = [n_samples] or [n_samples, n_outputs]



답변

이 줄을 변경하십시오.

model = forest.fit(train_fold, train_y)

에:

model = forest.fit(train_fold, train_y.values.ravel())

편집하다:

.values값을 배열로 제공합니다. (모양 : (n, 1)

.ravel 해당 배열 모양을 (n,)로 변환합니다.


답변

KNN 분류기 를 훈련 시키려고 할 때도 이런 상황이 발생했습니다 . 하지만 내가 변경 한 후 경고가 사라졌다 것으로 보인다 :
knn.fit(X_train,y_train)

knn.fit(X_train, np.ravel(y_train,order='C'))

이 줄 앞에 import numpy as np.


답변

나는 같은 문제가 있었다. 문제는 레이블이 열 형식이지만 행에서 예상되는 것입니다. 사용하다np.ravel()

knn.score(training_set, np.ravel(training_labels))

이것이 해결되기를 바랍니다.


답변

아래 코드를 사용하십시오.

model = forest.fit(train_fold, train_y.ravel())

아래와 같이 오류로 인해 여전히 때리는 경우가 있습니까?

Unknown label type: %r" % y

이 코드를 사용하십시오.

y = train_y.ravel()
train_y = np.array(y).astype(int)
model = forest.fit(train_fold, train_y)


답변

이를 수행하는 또 다른 방법은 ravel

model = forest.fit(train_fold, train_y.values.reshape(-1,))


답변

neuraxle 쉽게이 문제를 해결 할 수 있습니다 :

p = Pipeline([
   # expected outputs shape: (n, 1)
   OutputTransformerWrapper(NumpyRavel()),
   # expected outputs shape: (n, )
   RandomForestRegressor(**RF_tuned_parameters)
])

p, outputs = p.fit_transform(data_inputs, expected_outputs)

Neuraxle은 딥 러닝 프로젝트에서 하이퍼 파라미터 튜닝 및 AutoML을위한 sklearn과 유사한 프레임 워크입니다!


답변

format_train_y=[]
for n in train_y:
    format_train_y.append(n[0])