如何解决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.shape
和 Y.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 举报,一经查实,本站将立刻删除。