【问题标题】:"ValueError: y should be a 1d array, got an array of shape (3, 4) instead." While using fit() from sklearn“ValueError: y 应该是一维数组,取而代之的是一个形状为 (3, 4) 的数组。”使用 sklearn 中的 fit() 时
【发布时间】:2021-10-06 01:48:59
【问题描述】:

我输入:

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.

我该如何解决?我是初学者。请说清楚。

【问题讨论】:

    标签: python scikit-learn logistic-regression


    【解决方案1】:

    根据示例代码,我了解到label_list 是“目标向量”(y),feature_matrixX 矩阵。

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

     model.fit(feature_matrix, label_list)
    

    另外,你不能重塑label_list

    label_list = label_list.reshape(-1,1)
    

    因为model.fit() 需要一个形状为(n_samples,) 的向量,而您给出的是一个形状为(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)
    

    【讨论】:

    • 你真好!
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 2022-01-17
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多