首页 > 解决方案 > “ValueError: y 应该是一维数组,取而代之的是一个形状为 (3, 4) 的数组。” 使用 sklearn 中的 fit() 时

问题描述

我输入:

import numpy as np
from sklearn.linear_model import LogisticRegression
label_list = np.array([1,2,3])
label_list = label_list.reshape(-1,1)
feature_matrix = np.array([[0,0,1,1],[0,1,0,1],[1,0,0,1]])
model = LogisticRegression()
model.fit(label_list,feature_matrix)

然后我的控制台输出:

ValueError: y should be a 1d array, got an array of shape (3, 4) instead.

我该如何解决?我是初学者。请清楚地告诉我。

标签: pythonscikit-learnlogistic-regression

解决方案


根据示例代码,我知道这label_list是“目标向量”(y)并且feature_matrixX矩阵。

所以,正确的用法应该是:

 model.fit(feature_matrix, label_list)

此外,您不能重塑label_list

label_list = label_list.reshape(-1,1)

因为model.fit()需要一个带有 shape 的向量,(n_samples,)而您正在给出一个带有 shape 的向量(n_samples, 1)

总之,您的代码应如下所示:

import numpy as np
from sklearn.linear_model import LogisticRegression
label_list = np.array([1,2,3])
feature_matrix = np.array([[0,0,1,1],[0,1,0,1],[1,0,0,1]])
model = LogisticRegression()
model.fit(feature_matrix, label_list)

推荐阅读