Невозможно вложить массив 1D с помощью fit_transform из библиотеки sklearn (сплит-тест) - PullRequest
2 голосов
/ 01 марта 2020

Я пытаюсь вписать 1D массив с формой (14599,) с простым импутером со стратегией most_frequent, но он сказал, что ожидается 2D массив, я уже пытался изменить его (-1,1) и (1, -1), но его ошибка ValueError: не удалось передать входной массив из фигуры (14599,1) в фигуру (14599), как я могу вписать это, так как изменение формы не решит проблему? я не понимаю, почему он выдает ошибку. Я уже пытался задать его в DS stackexchange , и кто-то ответил, может быть, это серия pandas, но я сделал массив x, y в numpy, а затем передал его в параметр для X, y / train, тест, так что я не уверен,

##libraries
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from sklearn.impute import SimpleImputer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder

##codes
plt.close('all')
avo_sales = pd.read_csv('avocados.csv')
avo_sales.rename(columns = {'4046':'small PLU sold',
                            '4225':'large PLU sold',
                            '4770':'xlarge PLU sold'},
                 inplace= True)

avo_sales.columns = avo_sales.columns.str.replace(' ','')

plt.scatter(avo_sales.Date,avo_sales.TotalBags)

x = np.array(avo_sales.drop(['TotalBags','Unnamed:0','year','region','Date'],1))
y = np.array(avo_sales.TotalBags)

X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

impC = SimpleImputer(strategy='most_frequent')
X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1)) <-- error here

imp = SimpleImputer(strategy='median')
X_train[:,1:8] = imp.fit_transform(X_train[:,1:8])

le = LabelEncoder()
X_train[:,8] = le.fit_transform(X_train[:,8])

1 Ответ

2 голосов
/ 01 марта 2020

Измените строку:

X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1))

на

X_train[:,8] = impC.fit_transform(X_train[:,8].reshape(-1,1)).ravel()

, и ваша ошибка исчезнет.

Это присваивает вмененные значения обратно, что вызывает проблемы в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...