我正在尝试根据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)
答案 0 :(得分:0)
您需要在调整X_train和X_test的形状之前使其重塑:
X_train = X_train.reshape(1, -1)
X_test = X_test.reshape(1, -1)