“关联规则”

bkrugerbkruger 成员职位:17Maven
2019年5月编辑 帮助
你好,

我在训练数据上用FP-Growth和Association rules算子建立了一个模型。谁能告诉我一个例子,如何将结果应用到一个新的(测试)数据集?

谢谢
汉堡王

答案

  • bkrugerbkruger 成员职位:17Maven
    我搜索了一下,发现这真的很容易和简单。另一方面,解释结果需要更多的思考。
  • 黑线鳕黑线鳕 成员职位:849Maven
    你好,

    我正在CUDA中开发一个关联规则生成器,并使用RM来比较结果;为了将RM关联规则转换为示例集,我使用Groovy脚本,如下所示…
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 5.1.006 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文





    < /操作符>

    <过程扩展= " true " >


    < /操作符>


    < /操作符>







    > < /过程
    < /操作符>



    < /操作符>


    < /操作符>

    <参数key="script" value="import com.rapidminer.tools.Ontology; AssociationRules rules = input[0]; &# 10; //构造属性集 attribute [] attributes= new attribute [11]; attributes[0] = AttributeFactory.createAttribute("前提", Ontology.STRING); attributes[1] = AttributeFactory.createAttribute("前提";Ontology.INTEGER); & # 10;属性[2]= AttributeFactory.createAttribute(“Conclusion" Ontology.STRING); & # 13; & # 10;属性[3]= AttributeFactory.createAttribute(“结论Items" Ontology.INTEGER); & # 13; & # 10;属性[4]= AttributeFactory.createAttribute(“Confidence" Ontology.REAL); & # 13; & # 10;属性[5]= AttributeFactory.createAttribute(“Conviction" Ontology.REAL); & # 13; & # 10;属性[6]= AttributeFactory.createAttribute(“Gain",attributes[7] = AttributeFactory.createAttribute("Laplace", Ontology.REAL); attributes[9] = AttributeFactory.createAttribute("Ps", Ontology.REAL); attributes[10] = AttributeFactory.createAttribute("Total Support",DataRowFactory ROW_FACTORY = new DataRowFactory(0); String[] strings= new String[11]; for (AssociationRule rule: rules){ //构造示例数据 字符串[0]= rule.toPremiseString (); & # 13; & # 10;字符串[1]= rule.premise.size () .toString (); & # 13; & # 10;字符串[2]= rule.toConclusionString (); & # 13; & # 10;字符串[3]= rule.conclusion.size () .toString (); & # 13; & # 10;字符串[4]= rule.getConfidence () .toString (); & # 13; & # 10;字符串[5]= rule.getConviction () .toString (); & # 13; & # 10; strings[6]=rule.getGain().toString(); strings[7]=rule.getLaplace().toString(); strings[8]=rule.getLift().toString(); strings[9]=rule.getPs().toString(); strings[10]=rule.getTotalSupport().toString(); // make and add row DataRow row = ROW_FACTORY.create(strings, attributes); table.addDataRow(row); } ExampleSet exampleSet = table.createExampleSet(); return exampleSet; "/>
    < /操作符>








    > < /过程
    < /操作符>
    > < /过程
    我也渴望听到任何有RM以外的软件包的人的消息,比如Clementine,因为我有一个频繁的项目集基准测试过程和数据,我想在其他平台上计时。

  • bkrugerbkruger 成员职位:17Maven
    你好,

    谢谢你的回复!我以前从未使用过Groovy脚本,但是我已经将您向我展示的部分添加到我的流程中。我得到了所有的结果,因为我认为它是有意的-与虹膜的例子相比,但它仍然不想写到DB或CSV?

    有什么建议吗?

    谢谢
    汉堡王
  • 黑线鳕黑线鳕 成员职位:849Maven
    你好,

    您需要显式地交付结果,像这样…

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <过程version = " 5.1.006 " >
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文





    < /操作符>




    < /操作符>


    < /操作符>







    > < /过程
    < /操作符>



    < /操作符>


    < /操作符>

    <参数key="script" value="import com.rapidminer.tools.Ontology; exampleSetOutput = operator.getOutputPorts(). getportbyindex (); AssociationRules规则= input[0]; &# 13;//构造属性集 attribute [] attributes= new attribute [11]; attributes[0] = AttributeFactory.createAttribute(";attributes[1] = AttributeFactory.createAttribute("前提项", Ontology.INTEGER); attributes[2] = AttributeFactory.createAttribute("结论项", Ontology.STRING); attributes[3] = AttributeFactory.createAttribute("结论项", Ontology.INTEGER); attributes[4] = AttributeFactory.createAttribute("Confidence",attributes[5] = AttributeFactory.createAttribute(" belief ", Ontology.REAL); attributes[6] = AttributeFactory.createAttribute("Gain", Ontology.REAL); attributes[8] = AttributeFactory.createAttribute("Lift", Ontology.REAL); attributes[9] = AttributeFactory.createAttribute("Lift", Ontology.REAL); attributes[10] = AttributeFactory.createAttribute("Total Support", Ontology.REAL); &# 10; table = new MemoryExampleTable(attributes); ROW_FACTORY = new DataRowFactory(0); String[] strings= new String[11]; for (AssociationRule rule: rules){ //构造示例数据 字符串[0]= rule.toPremiseString (); & # 13; & # 10;字符串[1]= rule.premise.size () .toString (); & # 13; & # 10;字符串[2]= rule.toConclusionString (); & # 13; & # 10;字符串[3]= rule.conclusion.size () .toString (); & # 13; & # 10;字符串[4]= rule.getConfidence () .toString (); & # 13; & # 10;字符串[5]= rule.getConviction () .toString (); & # 13; & # 10; strings[6]=rule.getGain().toString(); strings[7]=rule.getLaplace().toString(); strings[8]=rule.getLift().toString(); strings[9]=rule.getPs().toString(); strings[10]=rule.getTotalSupport().toString(); // make and add row DataRow row = ROW_FACTORY.create(strings, attributes); table.addDataRow(row); } exampleSet = table.createExampleSet(); exampleSetOutput.deliver(exampleSet); "/>
    < /操作符>


    < /操作符>









    > < /过程
    < /操作符>
    > < /过程
    在执行之前,CSV编写器无法知道它实际上会得到示例,因此它会发布一个错误。忽略它,因为过程运行得很好。

  • 土地土地 RapidMiner认证分析师,RapidMiner认证专家,成员职位:2531年独角兽
    你好,
    为了应用关联规则,您可以使用关联规则应用程序。它将为结论的每个建议项创建一个列。列中的值将取决于置信度。如果超过规则建议Item,则必须聚合置信度,参数控制如何完成。

    @Haddock
    您是否想过构建一个包含所有这些代码片段的扩展作为常规操作符?

    问候,
    塞巴斯蒂安。
  • bkrugerbkruger 成员职位:17Maven
    谢谢,阿道克,我修好了。我还稍微修改了Groovy脚本,现在它也可以写入DB了。问题是“信念”,因为它是float类型,当它得到“无穷大”时,SQL返回一个非float数据类型的错误。

    Sebastian,也感谢你,我已经成功地应用了关联规则,但我最大的问题仍然是如何运行FP-Growth和关联规则PER客户,而不是整个客户群。目前我的SQL使用其中customer = 'xyz'然后我重复这个其中customer = 'abc'但这是一种既漫长又愚蠢的做法。我想运行一个进程,并获得关联规则PER客户。什么好主意吗?我详细解释了这个问题在我的其他帖子在这个论坛的关联规则。

    干杯
    汉堡王
  • 土地土地 RapidMiner认证分析师,RapidMiner认证专家,成员职位:2531年独角兽
    好吧,那么我们应该把讨论转到……

    问候,
    塞巴斯蒂安。
登录注册置评。