Ответ 1
Просто проверьте форму переменной Y
, это должен быть одномерный объект, и вы, вероятно, передаете что-то с более (возможно, тривиальными) измерениями. Перетащите его в форму массива list/1d.
У меня есть фреймворк pandas и передаю df[list_of_columns]
как X и df[[single_column]]
как Y
в регрессор случайного леса.
Что означает следующее предупреждение и что нужно сделать для его устранения?
DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel(). probas = cfr.fit(trainset_X, trainset_Y).predict(testset_X)
Просто проверьте форму переменной Y
, это должен быть одномерный объект, и вы, вероятно, передаете что-то с более (возможно, тривиальными) измерениями. Перетащите его в форму массива list/1d.
Вы можете использовать df.single_column.values
или df['single_column'].values
, чтобы получить базовый массив numpy вашей серии (который в этом случае также должен иметь правильную 1D-форму, как упомянуто lejlot).
На самом деле предупреждение сообщает вам, в чем проблема:
Вы передаете массив 2d, который оказался в форме (X, 1)
, но метод ожидает 1d-массив и должен быть в форме (X, )
.
Кроме того, предупреждение сообщает вам, что нужно сделать, чтобы преобразовать в нужную форму: y.values.ravel()
.
Использовать Y = df[[single_column]].values.ravel()
решает DataConversionWarning
для меня.