Python 用于返回下一个拆分树的功能的决策树实现
假设我的数据由水果组成,用它们的颜色和颜色来描述 形状和更多功能。我想返回最多X个水果,这些水果具有用户所述的功能,我想用最少数量的问题来完成 我总是问用户的第一个问题是水果的颜色和形状。 根据用户的回答,我想询问更多的功能,如纹理大小、剥离类型等。。我希望K是最小的num,它将返回最准确的X结果,因此我想知道我应该向用户询问的下一个特性是什么。 My DB由分类为特征(任意值)的结果组成 这是一个机器学习问题吗? 我应该使用什么算法,应该使用哪个实现。 我试着在scikit learn、nltk、weka中寻找合适的算法来回答这个问题。要么这些算法不适合回答这个问题,要么我需要更具体的指导使用它们Python 用于返回下一个拆分树的功能的决策树实现,python,filter,machine-learning,scikit-learn,decision-tree,Python,Filter,Machine Learning,Scikit Learn,Decision Tree,假设我的数据由水果组成,用它们的颜色和颜色来描述 形状和更多功能。我想返回最多X个水果,这些水果具有用户所述的功能,我想用最少数量的问题来完成 我总是问用户的第一个问题是水果的颜色和形状。 根据用户的回答,我想询问更多的功能,如纹理大小、剥离类型等。。我希望K是最小的num,它将返回最准确的X结果,因此我想知道我应该向用户询问的下一个特性是什么。 My DB由分类为特征(任意值)的结果组成 这是一个机器学习问题吗? 我应该使用什么算法,应该使用哪个实现。 我试着在scikit learn、nlt
谢谢大家! 是的,这在某种程度上是一个机器学习问题。我建议采用有许多不同算法的方法。这些简单的算法将帮助您最小化深度,因为它将下一个问题(拆分树的下一个功能)建立在最大深度的基础上。是的 决策树将点投影到每个特征上,并找到最佳分割。这种划分可以通过不同的指标来确定,例如:基尼指数或熵(信息增益)Sci kit learn中有这一点 假设您有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
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
___________________
| |
| |
red orange
apple orange
在现实生活中,这些分割将基于数值,即num>.52
至于使用什么算法,这取决于。你必须为你自己的数据做研究,因为这更像是一种基于数据集/偏好的事情
您可以在上面的示例中使用sci kit learn,如下所示:
feature class | feature class
orange orange | oblong orange
red apple | round apple
orange orange | round orange
red apple | oblong apple
red apple | round apple
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工具包以获得更深入的概述。非常感谢您的回答。是否有一个指南解释了如何在sklearn.tree中使数据集(如上面描述的水果数据库)适合于构建决策树。什么是示例,什么是特性,我应该如何定义它。我似乎找不到这方面的教程。我在sklearn.tree.DecisionTreeClassifier文档中查看了,您也可以在中查看。谢谢您的回答。为了获得下一个最佳分割,我应该使用哪种sklean方法?