Scikit learn 多标签分类返回的平均精度几乎为0

Scikit learn 多标签分类返回的平均精度几乎为0,scikit-learn,classification,Scikit Learn,Classification,我有一个看起来像这样的数据帧(但实际上>10000行): => 我想训练一个模型,根据患者的年龄、性别、疾病类型以及疼痛减轻程度,预测哪种药物对哪位患者最有效(更负面的“疼痛改变”栏更好) 在这个简单的例子中,“药物1”仅在患者年龄较大且为女性时才适用于疾病A 我编写了以下代码,但平均精度返回为0.03: import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from

我有一个看起来像这样的数据帧(但实际上>10000行):

=>

我想训练一个模型,根据患者的年龄、性别、疾病类型以及疼痛减轻程度,预测哪种药物对哪位患者最有效(更负面的“疼痛改变”栏更好)

在这个简单的例子中,“药物1”仅在患者年龄较大且为女性时才适用于疾病A

我编写了以下代码,但平均精度返回为0.03:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
   

# shuffle
df = df.sample(frac=1.0).reset_index(drop=True)

X = df[['age', 'sex', 'disease_type', 'change_in_pain']]
y = df['drug']

# convert categorical variable into dummy/indicator variables.
X_OHE = pd.get_dummies(X)
y_OHE = pd.get_dummies(y)

X_train, X_test, y_train, y_test = train_test_split(X_OHE, y_OHE, test_size=0.20)

scaler = StandardScaler()
scaler.fit(X_train)

X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

knn = KNeighborsClassifier(5)
knn.fit(X_train, y_train)
score = knn.score(X_test, y_test)
print('mean accuracy: {:2.2f}'.format(score))
我做错了什么

p.S.I测试了其他分类器,但大多数(如SVC)的故障原因如下:

ValueError: y should be a 1d array, got an array of shape (4000, 34) instead.
(总共有34种药物)

一致

[CLASSIFIER].fit(X_train, y_train)

指向代表性数据样本的链接可能会有所帮助,因为错误来自于
y\u OHE=pd.get\u dummies(y)
?我更新了错误的来源,但knn无论如何都没有错误-只是平均acc为0.03删除带有
pd.get\u dummies()的两行代码,KNeighborsClassifier或SVC不需要它们。如果我删除了这两行,则得到:
无法从缩放器的
fit
以及knn将字符串转换为float
。。。
ValueError: y should be a 1d array, got an array of shape (4000, 34) instead.
[CLASSIFIER].fit(X_train, y_train)