在我正在进行的应用程序中,我需要定期检查成千上万个对象的资格,以获得某种服务.决策图本身采用以下形式,只是更大:
在每个端节点(圆圈)中,我需要运行一个动作(更改对象的字段,日志信息等).我尝试使用Drool Expert框架,但在这种情况下,我需要为图中的每个路径编写一条长规则,从而导致结束节点.Drools Flow似乎也没有为这样的用例构建 - 我拿一个对象,然后,根据一路上的决定,我最终进入一个终端节点; 然后又为另一个对象.或者是吗?你能给我一些这些解决方案的例子/链接吗?
更新:
Drools Flow调用可能如下所示:
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Map<String, Object> params = new HashMap<String, Object>();
for(int i = 0; i < 10000; i++) {
Application app = somehowGetAppById(i);
// insert app into working memory
FactHandle appHandle = ksession.insert(app);
// app variable for action nodes
params.put("app", app);
// start a new process instance
ProcessInstance instance = ksession.startProcess("com.sample.ruleflow", params);
while(true) {
if(instance.getState() == instance.STATE_COMPLETED) {
break; …Run Code Online (Sandbox Code Playgroud) 测量杂质有三种方法:



每种方法有哪些差异和适当的用例?
我正在研究数据的二进制分类,我想知道使用支持向量机优于决策树和自适应Boosting算法的优缺点.
我在google上搜索过这个问题,我找不到能够以简单而详细的方式解释这个算法的东西.
例如,我知道id3算法根本不使用修剪,因此如果你有连续特征,预测成功率将非常低.
所以C4.5为了支持它使用修剪的连续特性,但这是唯一的原因吗?
此外,我在WEKA应用程序中无法理解,置信因子究竟如何影响预测的效率.置信因子越小,算法修剪越多,但修剪与预测精度之间的相关性是多少?修剪越多,预测越好或越差?
谢谢
我正在使用pydot在python中绘制图形.我想代表一个决策树,比如说(a1,a2,a3是属性,两个类是0和1:
a1>3
/ \
a2>10 a3>-7
/ \ / \
1 0 1 0
Run Code Online (Sandbox Code Playgroud)
但是,使用pydot,只创建了两个叶子,树看起来像这样(png附加):
a1>3
/ \
a2>10 a3>-7
| X |
1 0
Run Code Online (Sandbox Code Playgroud)
现在,在这个简单的情况下,逻辑很好,但在较大的树中,属于不同分支的凌乱的内部节点是统一的.
我正在使用的简单代码是:
import pydot
graph = pydot.Dot(graph_type='graph')
edge = pydot.Edge("a_1>3", "a_2>10")
graph.add_edge(edge)
edge = pydot.Edge("a_1>3", "a_3>-7")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "0")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "0")
graph.add_edge(edge)
graph.write_png('simpleTree.png')
Run Code Online (Sandbox Code Playgroud)
我还尝试创建不同的节点对象而不是创建边缘,而不是将其添加到图形中,但似乎pydot会检查节点池中是否有相同名称的节点而不是创建新节点.
有任何想法吗?谢谢!

我是人工智能领域的新手,正在阅读决策树.我指的是AIMA书,它几乎是推荐的AI书的标准介绍.在关于决策树的章节中,他们在书中讨论了这样一种情况,即在第一个属性分裂后没有遗留任何属性,但正面和负面的例子仍然没有分开,这意味着这些例子具有完全相同的描述.他们建议的这种情况的解决方案是" 返回剩余例子的多个分类 ".我想知道那个部分用粗体表示什么?返回一组示例的"多重分类"是什么意思?
尝试使用sklearn和panads创建具有交叉验证的决策树.
我的问题是在下面的代码中,交叉验证分割数据,然后我将其用于训练和测试.我将尝试通过在不同的最大深度设置下重新创建n次来找到树的最佳深度.在使用交叉验证时,我应该使用k folds CV,如果是这样,我将如何在我的代码中使用它?
import numpy as np
import pandas as pd
from sklearn import tree
from sklearn import cross_validation
features = ["fLength", "fWidth", "fSize", "fConc", "fConc1", "fAsym", "fM3Long", "fM3Trans", "fAlpha", "fDist", "class"]
df = pd.read_csv('magic04.data',header=None,names=features)
df['class'] = df['class'].map({'g':0,'h':1})
x = df[features[:-1]]
y = df['class']
x_train,x_test,y_train,y_test = cross_validation.train_test_split(x,y,test_size=0.4,random_state=0)
depth = []
for i in range(3,20):
clf = tree.DecisionTreeClassifier(max_depth=i)
clf = clf.fit(x_train,y_train)
depth.append((i,clf.score(x_test,y_test)))
print depth
Run Code Online (Sandbox Code Playgroud)
这里是我正在使用的数据的链接,以防任何人. https://archive.ics.uci.edu/ml/datasets/MAGIC+Gamma+Telescope
我通过scikit-learn图书馆学习机器学习.我使用以下代码将决策树分类器和随机森林分类器应用于我的数据:
def decision_tree(train_X, train_Y, test_X, test_Y):
clf = tree.DecisionTreeClassifier()
clf.fit(train_X, train_Y)
return clf.score(test_X, test_Y)
def random_forest(train_X, train_Y, test_X, test_Y):
clf = RandomForestClassifier(n_estimators=1)
clf = clf.fit(X, Y)
return clf.score(test_X, test_Y)
Run Code Online (Sandbox Code Playgroud)
为什么随机森林分类器的结果更好(100次运行,随机抽样2/3的数据用于训练,1/3用于测试)?
100%|???????????????????????????????????????| 100/100 [00:01<00:00, 73.59it/s]
Algorithm: Decision Tree
Min : 0.3883495145631068
Max : 0.6476190476190476
Mean : 0.4861783113770316
Median : 0.48868030937802126
Stdev : 0.047158171852401135
Variance: 0.0022238931724605985
100%|???????????????????????????????????????| 100/100 [00:01<00:00, 85.38it/s]
Algorithm: Random Forest
Min : 0.6846846846846847
Max : 0.8653846153846154
Mean : 0.7894823428836184
Median : 0.7906101571063208
Stdev : 0.03231671150915106
Variance: 0.0010443698427656967 …Run Code Online (Sandbox Code Playgroud) python machine-learning decision-tree random-forest scikit-learn
我想要在 scikit-learn 中的决策树(DecisionTreeClassifier)中从根节点到给定节点(我提供)的决策路径(即规则集)。clf.decision_path指定样本经过的节点,这可能有助于获取样本遵循的规则集,但是如何将规则集设置到树中的特定节点?
有没有办法使用决策树或随机森林模型进行迁移学习?具体来说,我想知道是否有一种好的、简单的方法可以在 Python 中使用Scikit-learn训练的模型来实现这一点。
我能想到的就是在原始数据集上训练随机森林,当新数据到达时,训练新树并将它们添加到模型中。不过,我想知道这是否是一个好的方法,是否还有其他更好的方法。
decision-tree ×10
python ×4
scikit-learn ×3
adaboost ×1
data-mining ×1
drools ×1
drools-flow ×1
java ×1
pruning ×1
pydot ×1
svm ×1
weka ×1