使用Python构建决策树并嵌入到Rapid Miner中
嗨,伙计们,
我正在做一个项目,我需要使用Python创建决策树,然后使用Execute Python操作符将其嵌入到快速矿工中。
以下是我的过程截图:
交叉验证中的子过程
这是我的决策树代码:
将numpy导入为np
进口熊猫作为pd
从sklearn。交叉验证导入train_test_split
从sklearn。树导入decision - treeclassifier
从sklearn。度量导入accuracy_score
从sklearn导入树
# rm_main是一个强制函数,
#参数的数量必须是输入端口的数量(可以为none)
def rm_main(数据):
#导入数据
file = ' 04_class_4 .1_german-credit- decoding .xlsx'
xl = pd.ExcelFile(文件)
打印(xl.sheet_names)
#加载一个表格到一个数据框架
Gr_raw = xl。解析(“RapidMiner数据”)
#为特性变量X和响应变量y创建数组
y = gr_raw['信用评级=良好'].values
X = gr_raw。drop('信用评级=良好',轴=1).values
#将数据分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=50)
#使用基尼指数构建决策树分类器
clf_gini = DecisionTreeClassifier(criterion='gini', random_state=50, max_depth=10, min_samples_leaf=5)
clf_gini。fit (X_train y_train)
返回clf_gini
当执行时,它给我一个错误,我不确定这段代码的哪一部分,我应该忽略成功的执行。
如果有任何建议或帮助,我将不胜感激!
谢谢你!
问候,
Azmir F
0
最佳答案
-
10383721 成员职位:3.贡献我
感谢大家提供的解决方案。我已经想出了自己的解决办法。
我不知道python需要数值数据来应用模型。所以我修改了我的流程,并使用了两次Execute Python操作符,一次在训练中,一次在测试中。我在第二个“执行Python”操作符之后使用了“数值到二项式”操作符。
注意,我已将其重命名为Build Model和Apply Model。
这是我更新的过程:
交叉验证子过程
我的构建模型的Python脚本如下:
从sklearn。树导入decision - treeclassifier
def rm_main(数据):
#构建决策树
X = data[['年龄','月存续期','分期付款率占可支配收入的百分比','积分金额','目前居住时间','现有积分数量','受抚养人数量']]]
y = data[['信用评级']]]
clf =决策treeclassifier (min_samples_split = 20, max_depth = 10, random_state = 99)
clf。fit (X, y)
返回clf我的应用模型的Python脚本如下:
从sklearn。树导入decision - treeclassifier
Def rm_main(模型,数据):
X = data[['年龄','月存续期','分期付款率占可支配收入的百分比','积分金额','目前居住时间','现有积分数量','受抚养人数量']]]
data['prediction'] = model.predict(X)
#设置预测属性的角色为预测
data.rm_metadata[‘预测’]=(没有,“预测”)
返回数据让我知道,如果你有其他相关的解决方案或更好的脚本,以产生一个更稳定的模型。
谢谢你!
问候,
Azmir F
2
答案
嗨Azmir
1.我认为在“交叉验证”操作符中只在Python中做模型是不可能的,因为“应用模型”操作符(在测试部分)期望“RM模型输入”并接收“Python对象”,然后流程失败。
也许有人能解决这个问题。(如果不是RDV ^ 2。)然而,我在这个过程中更正了一些点(几周前我使用了相同的数据集....):
增加一个“标称到数值”的运算符(python需要数值来执行模型)
-用整个数据集构建模型(你在交叉验证中执行了分割验证,对我来说这无关紧要)
-禁止在“Execute python”中导入数据。(python函数的参数“data”实际上是python操作符中输入的数据集)。
这里是这个过程:
2.我认为解决方案是使用“Execute Python”操作符执行所有子流程(构建/应用/交叉验证/性能)
(仅使用RM算子进行数据预处理)。
在下面的过程中,除了在1。,我已经创建了一个应用/交叉验证/性能“Execute Python”操作符,在exit中:
- y_prediction(在训练数据集中应用决策树模型)被添加到数据集中(最后一列)
-相关精度(~70%)
-特征重要性
这里是这个过程:
我希望这对你们有帮助,
问候,
莱昂内尔
下面是我使用Python进行XValidation的构建块。我有一个也与Compare Models操作符一起工作的程序,但这非常复杂。
我觉得流程是正确的,论坛里也有类似的R流程。
顺便说一句,我能问一下为什么需要使用Python决策树吗?通过多次使用Execute Python操作符(每CV折叠2次),你会产生巨大的开销,也会破坏RapidMiner的并行化特性。我会说,更聪明的做法是使用决策树操作符或在Execute Python操作符中执行CV。
我们的作业是介绍在Rapid Miner中执行Python的功能。
谢谢你的信息!
@JEdward谢谢分享,你的示例代码将是我的救生员!!