决策树实现用于返回下一个用于分裂树的特征

假设我的数据包括水果,这些水果通过颜色、形状以及更多特征来描述。我希望返回最多X个具有用户指定特征的水果,并且希望在最少的问题数量下完成这一点。

我总是首先询问用户水果的颜色和形状是什么。根据用户的回答,我希望再询问K个特征,如质地、大小、果皮类型等。我希望K是最小的数字,以便返回最准确的X个结果,因此我想知道我应该询问用户的下一个特征是什么。我的数据库包含按特征(任意值)分类的水果。

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

谢谢你!


回答:

是的,这是的。

决策树将点投影到每个特征上,并找到最佳分裂。这种分裂可以通过不同的度量来确定,例如:基尼指数或熵(信息增益)。Sci-kit learn 在 sklearn.tree 中有这个功能

假设你有5个数据点:

 color   shape   fruit orange  oblong  orange red     round   apple orange  round   orange red     oblong  apple red     round   apple

所以要训练,你会做类似这样的事情:

feature   class  |  feature  classorange    orange |  oblong   orangered       apple  |  round    appleorange    orange |  round    orangered       apple  |  oblong   applered       apple  |  round    apple

如你所见,最佳分裂是颜色,因为对于这个数据集,如果颜色=红色,那么水果=苹果,如果颜色=橙色,那么水果=橙子。

在这些数据点上训练,你将得到决策树:

        color___________________|                 ||                 |red               orangeapple             orange

在现实生活中,这些分裂将基于数值,即 num > .52

至于使用什么算法来做这个,这取决于情况。你需要为自己的数据进行研究,因为这更多的是每个数据集/偏好的事情。

你可以像这样在上面的例子中使用sci-kit learn:

from sklearn.trees import DecisionTreeClassifier#制作你的样本矩阵 samples = [[1,1], [0,0], [1,0], [0,1], [0,0]]#制作你的目标向量(在这种情况下是水果)fruitname = [1, 0, 1, 0, 0]#创建并拟合模型dtree =  DecisionTreeClassifier()dtree =  dtree.fit(samples, fruitname)#测试一个未知的红色、长形的水果dtree.predict([0,1])

请注意,color=1表示水果是橙色,shape=1表示水果是长形的。

请查看sci-kit的用户指南以获得更深入的概述。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注