将rapidminer实现为java应用程序
使用RapidMiner5.2设计了一个决策树模型 我想用java实现并查看结果 我使用从rapidminer生成的xml,并以process.run()的形式在java中运行进程 但是我想使用java查看我的决策树,请尝试以下示例:将rapidminer实现为java应用程序,java,rapidminer,user-interface,Java,Rapidminer,User Interface,使用RapidMiner5.2设计了一个决策树模型 我想用java实现并查看结果 我使用从rapidminer生成的xml,并以process.run()的形式在java中运行进程 但是我想使用java查看我的决策树,请尝试以下示例: package rm.rapidi.com; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOExc
package rm.rapidi.com;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import com.rapidminer.Process;
import com.rapidminer.RapidMiner;
import com.rapidminer.RapidMiner.ExecutionMode;
import com.rapidminer.RepositoryProcessLocation;
import com.rapidminer.gui.renderer.Renderer;
import com.rapidminer.gui.renderer.RendererService;
import com.rapidminer.operator.IOContainer;
import com.rapidminer.operator.IOObject;
import com.rapidminer.operator.OperatorException;
import com.rapidminer.report.Renderable;
import com.rapidminer.report.Reportable;
import com.rapidminer.repository.Entry;
import com.rapidminer.repository.ProcessEntry;
import com.rapidminer.repository.RepositoryException;
import com.rapidminer.repository.RepositoryLocation;
import com.rapidminer.tools.XMLException;
public class PlotterTest {
public static void main(String[] args) {
RapidMiner.setExecutionMode(ExecutionMode.EMBEDDED_WITHOUT_UI);
RapidMiner.init();
JFrame frame = new JFrame("Decision Tree Renderer Test");
frame.setLocation(0, 0);
JLabel label = new JLabel();
frame.add(new JScrollPane(label));
try {
RepositoryLocation location;
RapidMiner.setExecutionMode(ExecutionMode.COMMAND_LINE);
RapidMiner.init();
location = new RepositoryLocation("//RapidMinerRepository/PlotterTest");
Entry entry = location.locateEntry();
if (entry instanceof ProcessEntry) {
Process process = new RepositoryProcessLocation(location).load(null);
IOContainer ioResult = process.run();
IOObject result = ioResult.getElementAt(0); // or whatever index you need
String name = RendererService.getName(result.getClass());
List<Renderer> renderers = RendererService.getRenderers(name);
for (Renderer renderer : renderers) { // you don't really need to
// iterate over this, it's
// probably only one anyway
// ;)
IOContainer dummy = new IOContainer();
// edit size of image here
int imgWidth = 1600;
int imgHeight = 950;
Reportable reportable = renderer.createReportable(result, dummy, imgWidth, imgHeight);
if (reportable instanceof Renderable) {
Renderable renderable = (Renderable) reportable;
renderable.prepareRendering();
int preferredWidth = renderable.getRenderWidth(800);
int preferredHeight = renderable.getRenderHeight(800);
final BufferedImage img = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = (Graphics2D) img.getGraphics();
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, imgWidth, imgHeight);
// scale to whatever you need
graphics.scale(2, 2);
renderable.render(graphics, preferredWidth, preferredHeight);
label.setIcon(new ImageIcon(img));
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XMLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperatorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
包rm.rapidi.com;
导入java.awt.Color;
导入java.awt.Graphics2D;
导入java.awt.image.buffereImage;
导入java.io.IOException;
导入java.util.List;
导入javax.swing.ImageIcon;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JScrollPane;
导入com.rapidminer.Process;
导入com.rapidminer.rapidminer;
导入com.rapidminer.rapidminer.ExecutionMode;
导入com.rapidminer.RepositoryProcessLocation;
导入com.rapidminer.gui.renderer.renderer;
导入com.rapidminer.gui.renderer.renderer服务;
导入com.rapidminer.operator.IOContainer;
导入com.rapidminer.operator.IOObject;
导入com.rapidminer.operator.operator异常;
导入com.rapidminer.report.Renderable;
导入com.rapidminer.report.Reportable;
导入com.rapidminer.repository.Entry;
导入com.rapidminer.repository.ProcessEntry;
导入com.rapidminer.repository.RepositoryException;
导入com.rapidminer.repository.RepositoryLocation;
导入com.rapidminer.tools.XMLException;
公共类绘图仪测试{
公共静态void main(字符串[]args){
RapidMiner.setExecutionMode(ExecutionMode.EMBEDDED_,无_UI);
RapidMiner.init();
JFrame=新JFrame(“决策树渲染器测试”);
帧设置位置(0,0);
JLabel标签=新的JLabel();
frame.add(新的JScrollPane(标签));
试一试{
安置地点;
RapidAdminer.setExecutionMode(ExecutionMode.COMMAND_行);
RapidMiner.init();
位置=新的存储位置(“//RapidMinerRepository/PlotterTest”);
Entry=location.locateEntry();
if(ProcessEntry的条目实例){
Process Process=new RepositoryProcessLocation(位置).load(空);
IOContainer ioResult=process.run();
IOObject result=ioResult.getElementAt(0);//或您需要的任何索引
字符串名称=renderService.getName(result.getClass());
List renderers=renderservice.getRenderers(名称);
对于(渲染器:渲染器){//您实际上不需要
//重复这个,它是
//可能只有一个
// ;)
IOContainer dummy=新的IOContainer();
//在此编辑图像的大小
int imgWidth=1600;
int imgHeight=950;
Reportable Reportable=renderer.createReportable(result、dummy、imgWidth、imgHeight);
if(可渲染的可报告实例){
Renderable Renderable=(Renderable)reportable;
prepareRendering();
int preferredWidth=renderable.getRenderWidth(800);
int preferredHeight=renderable.getRenderHeight(800);
final BuffereImage img=新的BuffereImage(imgWidth、imgHeight、BuffereImage.TYPE_INT_RGB);
Graphics2D graphics=(Graphics2D)img.getGraphics();
图形.设置颜色(颜色.白色);
graphics.fillRect(0,0,imgWidth,imgHeight);
//根据您的需要进行扩展
图形.比例(2,2);
renderable.render(图形、首选宽度、首选高度);
标签.设置图标(新图像图标(img));
}
}
}
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(XMLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕捉(操作异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(存储异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
frame.setVisible(true);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
使用以下XML(或类似文件):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<process version="5.3.005">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="5.3.005" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="retrieve" compatibility="5.3.005" expanded="true" height="60" name="Retrieve" width="90" x="45" y="75">
<parameter key="repository_entry" value="//Samples/data/Sonar"/>
</operator>
<operator activated="true" class="decision_tree" compatibility="5.3.005" expanded="true" height="76" name="Decision Tree" width="90" x="179" y="75"/>
<connect from_op="Retrieve" from_port="output" to_op="Decision Tree" to_port="training set"/>
<connect from_op="Decision Tree" from_port="model" 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>