- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究一个基本的决策树分类器,我需要我的模型在每个节点上提问。基本上我的疾病预测器应该根据用户告诉的症状来猜测疾病。所以我想在每个阶段询问用户是否有特定症状(在节点处 split )并用它来预测输出。
详细来说,这是我当前的代码片段:
import pandas as pd
import numpy as np
from sklearn import tree
..
..
#import data from db and store in variables
..
clf = tree.DecisionTreeClassifier(criterion='entropy', splitter='best')
clf = clf.fit(relations,diseaseCodes)
print(clf.predict([relations[10]]))
在这里,我必须一次性提供所有值的完整列表。我想在每一步都问我的用户问题,比如你现在有什么症状,并根据它对疾病进行分类。
注意:我知道我的决策树过拟合了。
最佳答案
为此,您可以手动遍历拟合树,访问公共(public) api 不可用的属性。
首先,让我们使用“iris”数据集得到一棵拟合树:
import numpy as np # linear algebra
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
data = load_iris()
clf = DecisionTreeClassifier(max_depth=3).fit(data['data'],data['target'])
让我们想象一下这棵树,主要是为了调试我们的最终程序:
plt.figure(figsize=(10,8))
plot_tree(clf,feature_names=data['feature_names'],class_names=data['target_names'],filled=True);
现在是主要部分。从这个link , 我们知道-
The binary tree "tree_" is represented as a number of parallel arrays. The i-th element of each array holds information about the node
i
.
我们需要的数组是feature
、value
、threshold
和两个children_*
。因此,从根节点 (i=0
) 开始,我们首先收集我们访问的每个节点的特征和阈值,向用户询问该特定特征的值,并通过比较给定值向左或向右遍历与阈值。当我们到达一片叶子时,我们会在该叶子中找到最频繁的类,然后结束我们的循环。
tree = clf.tree_
node = 0 #Index of root node
while True:
feat,thres = tree.feature[node],tree.threshold[node]
print(feat,thres)
v = float(input(f"The value of {data['feature_names'][feat]}: "))
if v<=thres:
node = tree.children_left[node]
else:
node = tree.children_right[node]
if tree.children_left[node] == tree.children_right[node]: #Check for leaf
label = np.argmax(tree.value[node])
print("We've reached a leaf")
print(f"Predicted Label is: {data['target_names'][label]}")
break
上述树的此类运行示例是:
3 0.800000011920929
The value of petal width (cm): 1
3 1.75
The value of petal width (cm): 1.5
2 4.950000047683716
The value of petal length (cm): 5.96
We've reached a leaf
Predicted Label is: virginica
关于python - 如何让我的决策树模型在每个节点都提问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59758402/
是否有显示测试用例数量以提供决策/条件覆盖率的工具? 例如: if(x>0) if(x0) 3 个案例足以覆盖决策/条件。 if(x>0) if(x0) 4 个案例足以覆盖决策/条件。 这是真的吗?
我正在尝试找到一种优雅的方式来实现易于维护的决策算法,因为决策的条件可能经常变化。 我将尝试更具体地举一个例子: 假设我正在尝试管理一家餐厅厨房的 cooking 厨师团队。 每个厨师都知道如何 co
我需要一个 Android Activity ,它应该显示一个字段,如带有图像的标题和其下方的几个动态生成的项目(我认为是 1 到 100)。如果我不想让 headsection 滚动,我会使用 Li
我正在编写函数以从值列表中提供最大值(value)。我的问题是如果所有值都相同怎么办?例如, 30,29,34,45 简单。最大值为 45。现在, 20,20,20,20 这里的最大值是20吗?或者没
我需要知道哪个检索事件日志的速度更快,但我在比较中找不到:假设需要查找的所有列都有btree索引,需要查找的json对象中的所有键都有GIN索引。 case 1: ActivityID (in
我需要在我的 iPhone 应用程序中显示一个表格: neither the number of cells nor the contents are known at compile time, b
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
这是针对在 MinGW/Windows 上使用 SDL 的小型游戏项目。 我正在研究一个物理引擎,我的想法是拥有一个Physics::Object,所有物理对象都应该派生自它,并且它会在全局 Phys
我有一个小的 LINQ 查询来填充下拉控件(WinForms Telerik 应用程序),其中的数据行显示两个值(ITNBR 和描述): var query = from i in db.ItemMa
我正在尝试使用 antlr 3 为我的语法生成词法分析器和解析器。有人可以解释这个错误是什么意思吗? error(211): T.g:14:6: [fatal] rule stmt has non-L
partykit包很好地表示了决策树。我遇到的唯一问题是标签很长然后它们重叠。是否可以移动这些标签以防止它(见下图中的蓝色箭头)? library("rpart") library("partykit
所以我环顾四周,似乎找不到合适的解决方案来解决我的问题。 问题 在我的布局中,我希望能够根据数据库中的内容选择在运行时是否存在导航项: 当前布局(导航栏) @Html.Acti
我目前正在创建一个机器学习 jupyter 笔记本作为一个小项目,并希望显示我的决策树。但是,我能找到的所有选项都是导出图形然后加载图片,这相当复杂。 所以想问问有没有办法不用导出加载图形,直接显示我
grammar AdifyMapReducePredicate; PREDICATE : PREDICATE_BRANCH | EXPRESSION ; PREDICA
我是一名优秀的程序员,十分优秀!