微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError: 错误的输入形状 (560, 5) sklearn

如何解决ValueError: 错误的输入形状 (560, 5) sklearn

我开始编写学习机器模型。我有一个包含标签的 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 并告诉我控制台提供了什么。

,

您收到该错误是因为您的标签是分类标签。您需要使用标签编码器将其编码为 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,(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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。