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.shape
和Y.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: malformed SHA512 hash (checksum must be exactly 86 chars)解决办法