python - ValueError: bad input shape (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)
解决方案
您会收到该错误,因为您的标签是分类的。您需要使用标签编码器将其编码为 0,1,2..,查看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)
推荐阅读
- r - 边际效应 mlogit 的计算,错误“参数 mus 具有相同的长度”
- angular - 资产/bower_component 超出预算警告
- python - AttributeError:类型对象“配置”没有属性“调整大小”
- reactjs - 为什么在我导入 SVG 文件以用作 React 组件时 IDE 显示错误?
- php - 来自 sql 数据库的 json_encode 结果
- google-bigquery - Google BigQuery 超出限制
- javascript - 如何在本地存储中搜索特定单词并获取整个键和值?
- mysql - 选择一个特定值,如果不存在,则选择最小值
- amazon-web-services - AWS Data Pipeline 创建错误代码:Throttling-- Rate Exceeded
- vba - 在 VBA 中从 Bloomberg 获取数据