原因
这是因为sklearn函数的输入参数的数据类型不匹配导致的,有可能是输入的y_true为[0,1,1,0,1]的int型数据,而y_predict是[0.8,0.9,0.1,0.5]这样的概率数据。因此需要把概率数据转换为整型数据即可。可能使用了**model.predict_proba()**函数进行了预测
方法一:
在预测时使用:
y_predict = model.predict_classes(x_test) # 输出 [0,1,1,1]格式的数据 y_scores = model.predict_proba(x_test)# 输出[ 负的概率], 正的概率] 格式的数据 根据预测任务的不同而不同
model是训练的模型。
这种方法就是将预测值与预测概率分开。
注意! 这种方法对有些编码方式可能不适用,请尽量使用方法二!
方法二(推荐):
使用model.predict_proba()预测之后将结果转化为int类型的数据
y_scores = model.predict_proba(x_test)# 输出[ 负的概率], 正的概率] 格式的数据 y_pred = y_socres[:,1] # 取第二列 正的概率,根据每个人的数据不同而不同! y_pred = np.around(y_pred,0).astype(int) # .around()这个时四舍五入的函数 第二个参数0表示保留0位小数,也就只保留整数!! .astype(int) 将浮点数转化为int型
总结:
使用上面两种方法预测的结果,就可以直接中sklearn的包进行求精确度等各种数据了



