如何针对我训练过的模型对新示例进行分类,而无需再次重新运行训练模型?
训练好的模型需要一些时间来处理(1小时),我想对新观察进行分类,而不必每次都等待训练数据再次使用创建模型。
我以前从未将这两个进程分开,我总是将它们放在同一个进程流窗口中,因为我不知道是否独立执行这些进程。
答案 0 :(得分:1)
可以将训练好的模型存储在存储库中(使用“存储”操作符)或作为文件存储(操作符“写入模型”)。通常,您将使用“Store”运算符并使用“Retrieve”运算符从存储库中读取模型,例如在同一过程或任何其他过程中。
可能是RapidMiner会抱怨它没有得到一个Model对象,而是一个IOObject,但是该过程无论如何都会运行,并且在IOObejct的元数据传播之后,该消息将会消失。
以下是一个例子:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.013">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="5.3.013" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="retrieve" compatibility="5.3.013" expanded="true" height="60" name="Retrieve Golf" width="90" x="45" y="75">
<parameter key="repository_entry" value="//Samples/data/Golf"/>
</operator>
<operator activated="true" class="decision_tree" compatibility="5.3.013" expanded="true" height="76" name="Decision Tree" width="90" x="179" y="75"/>
<operator activated="true" class="store" compatibility="5.3.013" expanded="true" height="60" name="Store" width="90" x="313" y="75">
<parameter key="repository_entry" value="my_model"/>
</operator>
<operator activated="true" class="retrieve" compatibility="5.3.013" expanded="true" height="60" name="Retrieve" width="90" x="45" y="210">
<parameter key="repository_entry" value="my_model"/>
</operator>
<operator activated="true" class="retrieve" compatibility="5.3.013" expanded="true" height="60" name="Retrieve Golf-Testset" width="90" x="45" y="300">
<parameter key="repository_entry" value="//Samples/data/Golf-Testset"/>
</operator>
<operator activated="true" class="apply_model" compatibility="5.3.013" expanded="true" height="76" name="Apply Model" width="90" x="179" y="210">
<list key="application_parameters"/>
</operator>
<connect from_op="Retrieve Golf" from_port="output" to_op="Decision Tree" to_port="training set"/>
<connect from_op="Decision Tree" from_port="model" to_op="Store" to_port="input"/>
<connect from_op="Retrieve" from_port="output" to_op="Apply Model" to_port="model"/>
<connect from_op="Retrieve Golf-Testset" from_port="output" to_op="Apply Model" to_port="unlabelled data"/>
<connect from_op="Apply Model" from_port="labelled data" to_port="result 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
<portSpacing port="sink_result 2" spacing="0"/>
</process>
</operator>
</process>