假设我的数据由水果组成,用颜色和颜色来描述 形状和更多功能。我想返回具有用户声明的功能的X果实的最大数量,并且我想在最少数量的问题中进行。
我总是问用户的第一个问题是水果的颜色和形状。 根据用户的回答,我想问K更多的功能,如纹理大小剥离类型等。我希望K是最小的数字,将返回最准确的X结果,因此我想知道下一个功能是什么我应该问用户。 我的DB由分类为特征(任意值)的水果组成。
这是机器学习问题吗? 我应该使用什么算法以及我应该使用哪种实现。 我试图用scikit-learn,nltk,weka来寻找合适的算法来回答这个问题。这些算法都不适合回答这个问题,或者我需要更具体的指导使用它们。
谢谢!
答案 0 :(得分:1)
是的。
决策树将点投射到每个要素并找到最佳拆分。这种拆分可以通过不同的指标来确定,例如:基尼指数或熵(信息收益)科学家学习在sklearn.tree中有这个
假设您有5个数据点:
color shape fruit
orange oblong orange
red round apple
orange round orange
red oblong apple
red round apple
所以训练你会做这样的事情:
feature class | feature class
orange orange | oblong orange
red apple | round apple
orange orange | round orange
red apple | oblong apple
red apple | round apple
正如你所看到的,最好的分割是颜色,因为对于这个数据集,如果color = red,那么fruit = apple,如果color = orange,那么fruit = orange。
对这些数据点进行培训,您将拥有决策树:
color
___________________
| |
| |
red orange
apple orange
在现实生活中,这些分裂将基于数值,即num > .52
。
至于使用什么算法,这取决于。您必须对自己的数据进行研究,因为它更像是每个数据集/首选项。
您可以在上面的示例中使用sci-kit learn,如下所示:
from sklearn.trees import DecisionTreeClassifier
#make your sample matrix
samples = [[1,1], [0,0], [1,0], [0,1], [0,0]]
#make your target vector ( in this case fruit)
fruitname = [1, 0, 1, 0, 0]
#create and fit the model
dtree = DecisionTreeClassifier()
dtree = dtree.fit(samples, fruitname)
#test an unknown red fruit that is oblong
dtree.predict([0,1])
请注意,color = 1表示水果为橙色,shape = 1表示水果为椭圆形。
浏览一下sci-kit user guide,了解更深入的概述。
答案 1 :(得分:0)
是的,这是机器学习问题(在某种程度上)。我会建议decision tree方法有许多不同的算法。 ID3和C4.5是一种简单的算法,可以帮助您最小化深度,因为它基于最大information gain的下一个问题(分割树的下一个功能)。