“循环遍历2个属性的所有组合”
你好再次,
我再次向社区寻求帮助,因为我的智慧已经到了尽头。下面是代码应该做什么的简短描述:
读取输入->预处理+数据准备->循环2个属性的组合->为所有组合构建和评估决策树->将属性和特征名称写入日志,然后写入csv
我再次向社区寻求帮助,因为我的智慧已经到了尽头。下面是代码应该做什么的简短描述:
读取输入->预处理+数据准备->循环2个属性的组合->为所有组合构建和评估决策树->将属性和特征名称写入日志,然后写入csv
但不幸的是,它在一段时间后停止了,导致整个程序崩溃。我不知道我是否在工作流程中犯了错误,或者它使用了太多的内存。也许你们中有人能给我点建议。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<过程version = " 5.0 " >
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文
< /操作符>
< /操作符>
< /操作符>
< /操作符>
< /操作符>
< /操作符>
< /操作符>
<列出关键= " function_descriptions " >
< / >列表
< /操作符>
< /操作符>
> < /过程
<列出关键= " application_parameters " / >
< /操作符>
< /操作符>
> < /过程
< /操作符>
<列出关键= "日志" >
< / >列表
< /操作符>
> < /过程
< /操作符>
<参数键=“csv_file”值= " % {path} \ %{集}_ %{}子集_fs_2_atts.csv " / >
< /操作符>
> < /过程
< /操作符>
> < /过程
标记:
0
答案
欢呼,
马库斯
这是不可能的,否则我们很久以前就会这么做了我认为你需要更多的内存或者测试树本身是否有问题。
顺便说一下:您正在生成一个tree_depth宏,但不要将其用于树的构造…
问候,
塞巴斯蒂安。
你说得对。树深是不需要的,因为它总是2个属性。我认为在每次迭代中编写/存储日志是一个坏主意,对吗?当它删除所有模型和视图时,释放内存会有帮助吗?
如何在循环中更新日志,并在迭代完成后才写入日志? 总的来说,这个消息听起来不太好。此消息不是从一开始就出现,而是在一段时间后出现,很可能是在Process计时器完全冻结时。
欢呼,
马库斯
的确,这个消息听起来并不好。但据我所知,你的属性是数字的,不是吗?这很重要,因为树可以对多个拆分使用数值属性。因此,在最坏的情况下,深度可能等于示例的数量,这肯定会导致内存不足的异常…
释放内存操作符不会释放在java抛出内存不足异常之前不会被释放的任何内容。
问候,
塞巴斯蒂安。
是的,我的属性是数字。为了避免树在一个拆分中只放置一个示例,我打算使用每个拆分特性的最小示例,并将最大树深设置得更低。
我试图通过将日志写入内存而不是硬盘驱动器来修改工作流程,但它并没有太大变化。这是我目前正在使用的版本。
运行一段时间后,日志显示每次迭代: 我还尝试用较低数量的属性运行它(如100随机由“生成数据”),它似乎在那里工作。如果有经验的人可以帮助我,我只是不知道错误在哪里。
最好的问候,
马库斯
我认为你的代码卡住了猫,因为它一直在内存中存储额外的日志副本。下面是选择所有属性对并记录其分类性能的代码,希望您已经了解了。
因此,使用交叉验证(X-Val),我会将性能评估与验证的平均输出连接起来,然后将X-Validation的输出与日志操作符连接起来,对吧?
但是,如何将日志写入文件(作为数据或更好的示例文件),而不需要每一步都这样做呢?
我同意,每次迭代都写一份日志文件副本会扼杀进程。但我仍然需要这个搜索结果保存在某个地方。
欢呼,
马库斯