ValueError: bad input shape (560, 5) sklearn

Posted

技术标签:

【中文标题】ValueError: bad input shape (560, 5) sklearn【英文标题】: 【发布时间】:2021-04-14 06:08:34 【问题描述】:

我开始编写学习机模型。我有一个 Y_train 数据集,其中包含有 5 个类的标签。 X_train 数据集包含样本。我尝试在逻辑回归的帮助下制作我的模型。

X_train ((560, 20531)) 和 Y_train ((560, 5)) 具有相同的维度。

我看过一些与同一问题相关的出版物,但我无法解决该问题。 我不知道如何纠正这个错误,请你帮帮我吗?

X = pd.read_csv('/Users/lottie/desktop/data.csv', header=None, skiprows=[0])
Y = pd.read_csv('/Users/lottie/desktop/labels.csv', header=None)

Y_encoded = list()
for i in Y.loc[0:,1] :
    if i == 'BRCA' : Y_encoded.append(0)
    if i == 'KIRC' : Y_encoded.append(1)
    if i == 'COAD' : Y_encoded.append(2)
    if i == 'LUAD' : Y_encoded.append(3)
    if i == 'PRAD' : Y_encoded.append(4)
Y_bis = to_categorical(Y_encoded)


#separation of the data
X_train, X_test, Y_train, Y_test = train_test_split(X, Y_bis, test_size=0.30, random_state=42)

regression_log = linear_model.LogisticRegression(multi_class='multinomial', solver='newton-cg')

X_train=X_train.iloc[:,1:]

#train model
train_train = regression_log.fit(X_train, Y_train)

【问题讨论】:

你的X_train到底是什么?乍一看,您正在用特征数量反转样本数量。试试X.shapeY.shape,告诉我控制台提供了什么。 X_train contains for each line (=samples) 包含每个数据的值。 Y_train:包含每个样本的关联类。 X.shape : (801, 20532) 和 Y.shape (801, 2) 平心而论,X和Y应该有相同的行数,这是一致的。 X 看起来很奇怪。你怎么有20532个特征? 【参考方案1】:

您收到该错误是因为您的标签是分类的。您需要使用标签编码器将其编码为 0,1,2.. ,查看help page from scikit-learn。下面将是使用类似于您的示例数据集的实现:

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn import preprocessing
le = preprocessing.LabelEncoder()

Y = pd.DataFrame('label':np.random.choice(['BRCA','KIRC','COAD','LUAD','PRAD'],560))
X = pd.DataFrame(np.random.normal(0,1,(560,5)))

Y_encoded = le.fit_transform(Y['label'])

X_train, X_test, Y_train, Y_test = train_test_split(X, Y_encoded, test_size=0.30, random_state=42)

regression_log = linear_model.LogisticRegression(multi_class='multinomial', solver='newton-cg')

X_train=X_train.iloc[:,1:]

train_train = regression_log.fit(X_train, Y_train)

【讨论】:

以上是关于ValueError: bad input shape (560, 5) sklearn的主要内容,如果未能解决你的问题,请参考以下文章

ValueError: bad input shape (560, 5) sklearn

ValueError: Error when checking input: expected input_1 to have 2 dimensions, but got array with sha

ValueError:无法将字符串转换为浮点数:'Bad'

错误ValueError: malformed SHA512 hash (checksum must be exactly 86 chars)解决办法

ValueError:检查输入时出错:预期dense_1_input的形状为(180,),但数组的形状为(1,)

ValueError: 预期的 dense_1_input 具有形状 (None, 4) 但得到 (78,2)