Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于返回下一个拆分树的功能的决策树实现_Python_Filter_Machine Learning_Scikit Learn_Decision Tree - Fatal编程技术网

Python 用于返回下一个拆分树的功能的决策树实现

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

假设我的数据由水果组成,用它们的颜色和颜色来描述 形状和更多功能。我想返回最多X个水果,这些水果具有用户所述的功能,我想用最少数量的问题来完成

我总是问用户的第一个问题是水果的颜色和形状。 根据用户的回答,我想询问更多的功能,如纹理大小、剥离类型等。。我希望K是最小的num,它将返回最准确的X结果,因此我想知道我应该向用户询问的下一个特性是什么。 My DB由分类为特征(任意值)的结果组成

这是一个机器学习问题吗? 我应该使用什么算法,应该使用哪个实现。 我试着在scikit learn、nltk、weka中寻找合适的算法来回答这个问题。要么这些算法不适合回答这个问题,要么我需要更具体的指导使用它们


谢谢大家!

是的,这在某种程度上是一个机器学习问题。我建议采用有许多不同算法的方法。这些简单的算法将帮助您最小化深度,因为它将下一个问题(拆分树的下一个功能)建立在最大深度的基础上。

是的

决策树将点投影到每个特征上,并找到最佳分割。这种划分可以通过不同的指标来确定,例如:基尼指数或熵(信息增益)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方法?