就像某些程序需要准备测试数据一样,宠物商店也需要商品销售记录测试数据的生成程序。在开发前,首先要明确生成的销售记录要满足一定的业务要求,即各种商品组合下需要满足的支持度,这样在利用Apriori算法程序进行数据分析之后才能验证其准确性。那么如何才能做到这一点呢?
下面是笔者的思考过程:
1)为了使每次的分析过程准确,首先需要清除数据库中所有已存在的商品订单。
2)确定生成的订单样本数和支持度并生成满足最小支持度数量要求的样本订单。
3)随机生成满足订单总数的所有样本订单,并对所有订单(包括第二步生成的)都生成一些随机商品。
这里假设生成的商品订单应满足以下数据要求:
1)样本总数为100条订单
2)商品组合的支持度满足如表6-6所示的要求。
表6-6 商品支持度要求表
下面开始完成代码的编写,首先是界面部分,我们仍然使用Main.jsp来显示订单数据的生成界面,增加的代码如代码清单6-6所示。且需要放在新增的DataMiningOrderRelations-Div之前。
【代码清单6-6】
上述代码中,initDataStr是商品组合及支持度的初始化数据,amount是订单样本总数。在initDataStr中不同的商品组合之间用“,”分开,同一组合的每种商品使用“:”分开,且最后一个“:”后是支持度数据,相关数据可在运行时再进行调整。同样的,后台对应的Action类是org.mybatis.jpetstore.web.actions.DataMiningActionBean,方法名为generatingOrde-rs(提示:如果没有发现相关的商品初始化数据,请通过jpetstoreBI.sql进行导入),Dat-aMiningActionBean类的处理代码如代码清单6-7所示。
【代码清单6-7】
在代码清单6-7中,generatingOrders为生成订单的入口函数,它只需要把用户信息acc、订单商品组合及支持度条件initData和订单样本总数信息amount传给服务处理类DataMining- Service的方法GeneratingOrders即可。DataMiningService类新增的业务逻辑处理代码如代码清单6-8所示。
【代码清单6-8】
上述代码中,方法GeneratingOrders为生成样本订单的主函数,它根据商品组合及支持度条件initData来调用putData方法生成满足条件的样本订单数据,最后通过GenerateAllRan-domOrders方法生成随机订单并对所有样本订单设置随机商品。
同样的,这里也给出程序中需要进行配置的数据库映射代码(见表6-7)。
表6-7 数据库映射配置代码表(www.xing528.com)
(续)
通过上述代码配置,我们已经可以进行订单数据的生成了,单击GeneratingOrders按钮后,页面的显示效果如图6-12所示。
图6-12 增加订单数据生成功能后的网站效果
数据生成后,单击Find Interested Products按钮就可以生成出对应的频繁项集了,这里使用的默认最小支持度参数为0.2,单击Find Interested Products按钮后的效果如图6-13所示。
图6-13 订单数据生成完毕后的网站效果
从Result栏中,可以看出生成的频繁项集和之前设置的订单初始支持度数据是完全吻合的,15%的频繁项集没有被显示出来,20%,25%,30%的频繁项集都被显示出来了,其中只有EST-18EST-30EST-32是唯一的支持度大于20%的频繁三项集它也符合之前的预期。
最后,为了完成商品推荐功能,还要对订单查看页面ViewOrder.jsp进行修改,这里添加如代码清单6-9所示的新增代码到table标签的尾部。
【代码清单6-9】
增加如代码清单6-10所示的后台处理代码到OrderActionBean.java。
【代码清单6-10】
其中在viewOrder和newOrder方法中增加如下代码。
DataMiningService.java中增加getInterestedItems方法的代码如代码清单6-11所示。
【代码清单6-11】
现在重新启动Tomcat服务器,客户通过宠物商店网站任意购买商品后系统就会自动向他们推荐其他相关的商品,效果如图6-14所示。
图6-14 商品推荐网站效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。