【发布时间】:2018-04-22 16:51:05
【问题描述】:
我正在尝试对具有多个级别的对象进行分类。我可以用一个例子来解释它的最好方法:
我可以这样做:
from sklearn import tree
features = ['Hip Hop','Boston'],['Metal', 'Cleveland'],['Gospel','Ohio'],['Grindcore','Agusta']]
labels = [1,0,0,0]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)
但我想这样做:
from sklearn import tree
features = ['Hip Hop','Boston',['Run DMC','Kanye West']],['Metal', 'Cleveland',['Guns n roses','Poison']],['Gospel','Ohio',['Christmania','I Dream of Jesus']],['Grindcore','Agusta', ['Pig Destroyer', 'Carcas', 'Cannibal Corpse']]
labels = [1,0,0,0]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)
clf.predict_proba(<blah blah>)
我试图根据一个人的位置、最喜欢的流派和他们喜欢的其他乐队来分配一个人喜欢乐队的概率。
【问题讨论】:
-
这些是连续的还是分类的特征?在我看来,对于您想要的
features([1,2,[1,2,3]]) 中的第一个元素,您可以对[1,2,3]部分进行一次热编码,基本上编码该行具有[1,2,3]的属性,无论该特定级别的组合对应于... -
似乎每个观察都有一些单例属性(如
1或2本身,但也有交互,如[6, 7, 3]...它会真的 i> 如果您可以定义(通过一个最小的示例)您希望完成的任务以及features中的每个数字对应的内容,这将很有帮助... -
顺便说一句,如果明确编程,您知道决策树将考虑变量/级别之间的交互,对吧?
-
@blacksite 我将问题更新为更具体一点。这是我第一次解决机器学习问题,如果你还不知道的话:)
-
应使用Multi-labelBinarizer将单个特征单元格中的值列表转换为单热编码列。
标签: python machine-learning scikit-learn supervised-learning