鸡兔同笼: 今有雉兔同笼 上有三十五头 下有九十四足 问雉兔各几何?有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
def chicken_rabbit(num_heads, num_feet):
rabbit = (num_feet - 2 * num_heads) / 2
chicken = num_heads - rabbit
if rabbit >= 0 and chicken >= 0 and rabbit == int(rabbit) and chicken == int(chicken):
return int(chicken), int(rabbit)
else:
return "无解"
heads = 35
feet = 94
result = chicken_rabbit(heads, feet)
print(result)
不知道你这个问题是否已经解决, 如果还没有解决的话:**
对于多分类问题:
1)每一类别的roc曲线:
构建将类别进行二值化(类似onehot)的真实Y值矩阵,即标签矩阵;
根据模型预测得到的预测Y值各类别概率的矩阵;------根据概率矩阵,生成预测Y值对应的二值化矩阵(即将概率最大的类别位置置为1,其他类别对应位置置为0),即预测矩阵
根据各类别的标签矩阵及预测矩阵,可以计算出各个阈值下的假正例率(FPR)和真正例率(TPR),从而绘制出一条ROC曲线,即该类别对应的ROC曲线。
2)总体模型的roc曲线:
方法一:上述N条ROC曲线取平均,即可得到最终的ROC曲线----记为ROC[‘macro’]。
方法二:首先,对于一个测试样本:1)标签只由0和1组成,1的位置表明了它的类别(可对应二分类问题中的‘’正’’),0就表示其他类别(‘’负‘’);2)要是分类器对该测试样本分类正确,则该样本标签中1对应的位置在概率矩阵P中的值是大于0对应的位置的概率值的。基于这两点,将标签矩阵和预测矩阵分别按行平铺展开,转置后形成两列,这就得到了一个二分类的结果。根据这两列直接得到最终的ROC曲线----记为ROC[‘micro’]
各【词向量+模型】分类效果如下:
由上面六张roc图可以看出:对于小样本数据:
1)tfidf-朴素贝叶斯,无论是单标签分类还是整体模型,效果都是最好的,其次是tfidf-svm模型,其次是LSTM,最后是CNN
2)由于用目前仅由的样本数据训练的word2vec,效果并没有显现出来,与一般tokenize后embedding的效果相差不大