在Python中使用sklearn.linear_model.LinearRegression时发生ValueError

时间:2019-01-08 10:45:24

标签: python pandas numpy scikit-learn linear-regression

我正在尝试根据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是一个1和0的数据帧,描述了该人是否死亡,X持有SibSp和{{ 1}}列。

然后我将数据分为训练和测试数据帧,方法是这样做的(更新以显示X_train,X_test的来源)

Parch

但是,当我尝试使用X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=101) 时,我开始收到错误消息

sklearn.linear_model.LinearRegression
  

ValueError:预期的2D数组,而改为1D数组:array = [1 2 0 1 0 0 0 0 4 ...]如果数据只有一个,则使用array.reshape(-1,1)重塑数据feature或array.reshape(1,-1)(如果它包含单个样本)。

我尝试看过similar questions on SO,但抛出此异常的行是

classifier = LinearRegression()

classifier.fit(X_train, y_train)
classifier.predict(X_test)

如何将我的训练值适合我的分类器?

更新

classifier.fit(X_train, y_train)

给我print(X_train.shape, y_train.values.reshape(-1,1).shape)

更新以显示完整的调试跟踪

(534,) (534, 1)

1 个答案:

答案 0 :(得分:0)

您需要在调整X_train和X_test的形状之前使其重塑:

X_train = X_train.reshape(1, -1)
X_test = X_test.reshape(1, -1)