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