这是我的任务:
我有一组分层类(例如“对象/建筑/建筑/住宅楼/房屋/农舍”) - 我写了两种分类方法:
if numcategories == 4:
tempscore +=1
elif numcategories ==5:
tempscore +=1.3
elif numcategories ==6:
tempscore +=1.5
elif numcategories >6:
tempscore +=2
同样重要的是要注意我有大约290k训练样本和~150k(当前/大多数)布尔特征(用1.0或0.0表示) - 尽管它非常稀疏,所以我使用scipy的稀疏矩阵。此外,还有大约6500个独立的类(尽管方法2中的每个节点都少了很少)
使用方法1,使用scikit的sgdclassifier(loss=hinge)
,我得到大约75-76%的准确度,并且使用linearsvc,我得到大约76-77%(尽管它慢了8-9倍)。
然而,对于第二种方法(我认为可以/应该最终表现得更好)这些分类器都没有产生真正的概率,虽然我试图扩大他们的.decision_functions()
产生的置信度分数,但它并不能很好地工作(精确度) 10-25%)。因此,我切换到logisticregression()
,这让我的准确率达到了62-63%。而且,基于NB的分类器似乎表现得差得多。
最后,我有两个问题:
logisticregression()
)在python中实现(可以是scikit或mlpy / nltk / orange / etc),它可以(i)处理稀疏矩阵,(ii)产生(接近)概率,以及(iii) )使用多类分类?您可以尝试一些想法: