我是一名数据科学菜鸟,正在研究Kaggle Titanic dataset。我在其上运行Logistic回归来预测测试数据集中的乘客是否幸存或死亡。
我清理训练和测试数据,并在训练数据上运行Logistic回归。一切都好。
train = pd.read_csv('train.csv')
X_train = train.drop('Survived',axis=1)
y_train = train['Survived']
from sklearn.linear_model import LogisticRegression
logmodel = LogisticRegression()
logmodel.fit(X_train,y_train)
然后我在测试数据上运行预测模型:
test = pd.read_csv('test.csv')
predictions = logmodel.predict(test)
然后我尝试打印混淆矩阵:
from sklearn.metrics import classification_report, confusion_matrix
print(confusion_matrix(test,predictions))
我收到错误消息:
ValueError:分类指标无法处理混合 连续多输出和二进制目标
这是什么意思,我该如何解决?
我看到的一些潜在问题是:
我哪里错了?谢谢你的帮助!
答案 0 :(得分:2)
正如m-dz评论过confusion_matrix
expects 2 arrays,在您的代码中,您传递了整个test
数据框。
此外,另一个common mistake不尊重参数的 order ,这很重要。
总而言之,你应该要求
confusion_matrix(test['Survived'], predictions)
答案 1 :(得分:-3)
大概你的test
由布尔(生或死)组成,而predictions
由浮点数组成(预测存活概率)。您应该选择一些阈值,然后根据预测概率是否大于阈值生成布尔值。