Python 如何更改逻辑回归拟合函数的输入形状?

Python 如何更改逻辑回归拟合函数的输入形状?,python,scikit-learn,logistic-regression,Python,Scikit Learn,Logistic Regression,我正在尝试对我的数据集应用LogisticRegression 我将数据分为训练、测试和验证。数据通过一个热编码进行规范化。我越来越 ValueError: bad input shape (527, 2) 这是我的密码: import numpy as np import pandas as pd from sklearn.linear_model import LogisticRegression #read the data train_data = pd.read_csv('ip2t

我正在尝试对我的数据集应用LogisticRegression

我将数据分为训练、测试和验证。数据通过一个热编码进行规范化。我越来越

ValueError: bad input shape (527, 2)
这是我的密码:

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

#read the data
train_data = pd.read_csv('ip2ttt_train.data',header=None)
test_data = pd.read_csv('ip2ttt_test.data', header=None)
valid_data = pd.read_csv('ip2ttt_valid.data', header=None)

#for valid dataset
valid_label = valid_data[9]
valid_features = valid_data.drop(columns =9) 

#for test dataset
test_label = test_data[9] 
test_features = test_data.drop(columns =9)

#for train dataset
train_label = train_data[9] 
train_features = train_data.drop(columns =9)

X_valid = pd.get_dummies(valid_features)
y_valid = pd.get_dummies(valid_label)

X_test = pd.get_dummies(test_features)
y_test = pd.get_dummies(test_label)

X_train = pd.get_dummies(train_features)
y_train = pd.get_dummies(train_label)

clf = LogisticRegression(random_state=0, multi_class='multinomial', solver='newton-cg', penalty='l2') #penalty = L1 or L2 and solver = newton-cg or lbfgs

clf.fit(X_train, y_train)
以下是X和y的形状:

X_train.shape
(527, 27)
y_train.shape
(527, 2)
我的尝试:

我发现我需要更改
y\u train
的形状。我尝试将
y\u train
转换为
np.array
flatte()
但没有成功。我想我需要
(527,1)
形状。我还尝试了重塑([527,1]),但它给了我一个错误。我知道

y:形状的数组状(n_个样本,)

相对于X的目标向量

但我不知道如何正确地实施它

更新:
列车标签的样本数据

0      positive
1      positive
2      positive
3      positive
4      positive
         ...   
522    negative
523    negative
524    negative
525    negative
526    negative
Name: 9, Length: 527, dtype: object
系列功能的样本数据

    0   1   2   3   4   5   6   7   8
0   x   x   x   x   o   o   x   o   o
1   x   x   x   x   o   o   o   x   o
2   x   x   x   x   o   o   b   o   b
3   x   x   x   x   o   b   o   o   b
4   x   x   x   x   b   o   o   b   o
... ... ... ... ... ... ... ... ... ...
522 x   o   x   o   o   x   x   x   o
523 o   x   x   x   o   o   x   o   x
524 o   x   x   x   o   o   o   x   x
525 o   x   o   x   x   o   x   o   x
526 o   x   o   x   o   x   x   o   x
我试图将它们输入
fit()
,而不使用一个热编码 并得到错误:
ValueError:无法将字符串转换为浮点:“x”

数据通过一个热编码进行规范化

scikit learn的
逻辑回归应该是而不是;正如引用的文件所述:

y:形状的数组状(n_个样本,)

相对于X的目标向量


所有标签(训练、验证、测试)都需要
(n_samples,)
的形状。您应该删除
pd.get_dummies()
所有用于定义
y_train
y_valid
y_test
pd.get_dummies()
命令,并分别使用
train_标签
valid_标签
,和
test\u label

请注意,错误之后出现的任何代码都与问题无关(因为从未执行过),因此应在此处的问题中省略,因为它只会产生不必要的噪音(被编辑掉)。