Я пытаюсь предсказать y
значения на основе X
значений. У меня есть файл Excel, в котором содержится сколько братьев и сестер на одного человека. Файл также содержит результат выживания, равный y
(1 = выжил, 0 = умер).
Фрагмент кода ниже показывает, как я это делаю
dataSet = pd.read_excel("TitanicData.xlsx", sheet_name="TitanicData")
dataSet.head()
dataSet.columns
SibSp = dataSet.iloc[:, 6]
Parch = dataSet.iloc[:, 7]
Stack = np.column_stack((SibSp, Parch, SibSp + Parch))
Family = pd.DataFrame(Stack, columns=['SibSp', 'Parch', 'Family'])
X = Family.iloc[:, 2]
y = dataSet.iloc[:, 1]
Это теперь дает мне правильные значения, которые я ожидаю, y
- это DataFrame с единицами и 0, показывающими, умер человек или нет, X
содержит сумму столбцов SibSp
и Parch
.
Затем я разделяю данные на обучающие и тестируемые кадры данных, что делается так (обновите, чтобы показать, откуда происходит X_train, X_test)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=101)
Однако, когда я пытаюсь использовать sklearn.linear_model.LinearRegression
, я начинаю получать ошибки
classifier = LinearRegression()
classifier.fit(X_train, y_train)
classifier.predict(X_test)
ValueError: Ожидаемый 2D-массив, вместо него получен 1D-массив: array = [1 2 0 1 0 0 0 0 4 ...] Измените ваши данные либо с помощью array.reshape (-1, 1), если ваши данные имеют один feature или array.reshape (1, -1), если он содержит один образец.
Я пытался взглянуть на похожие вопросы по SO , но строка, выкидывающая это исключение,
classifier.fit(X_train, y_train)
Как я могу вписать свои тренировочные значения в мой классификатор?
Обновление:
print(X_train.shape, y_train.values.reshape(-1,1).shape)
дает мне (534,) (534, 1)
Обновление для отображения полной трассировки отладки
File "<ipython-input-56-2da0ffaf5447>", line 1, in <module>
train()
File "C:/Users/user/Desktop/dantitanic/AnotherTest.py", line 41, in train
classifier.fit(X_train, y_train)
File "C:\Users\user\Anaconda3\lib\site-packages\sklearn\linear_model\base.py", line 458, in fit
y_numeric=True, multi_output=True)
File "C:\Users\user\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 756, in check_X_y
estimator=estimator)
File "C:\Users\user\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 552, in check_array
"if it contains a single sample.".format(array))