首页 > 编程语言 >CSC330程序设计语言项目

CSC330程序设计语言项目

时间:2024-04-03 19:12:02浏览次数:21  
标签:语言 阈值 项目 打印 最小 支持 频率 程序设计 CSC330

CSC330程序设计语言项目
注1本项目单独完成
注2禁止与他人一起工作。
注2禁止与他人共享查询或文件。

特别注意:剽窃单一或多个来源归属不充分的情况应导致不及格大部分或全部抄袭的作品应获得F级的成绩
课程
期末将对提交的稿件进行剽窃审查。你要对自己的投稿负责,但如果有人抄袭,你也可能要负责您的意见书。
1目标完成此项目后,您将拥有以下经验:
功能编程使用先验算法在大数据集中进行篮子分析
2先验算法先验算法用于识别篮子分析中常见的项目组。例如如果你买牛奶,你还可能买什么?
此算法的输入文件将是CSV文件。每个CSV文件都是一组事务,每行一个。A.交易是一起出售的一组商品(每个商品用分隔符分隔)。交易是保证没有重复项目。1.我们的目标是识别超过特定最低阈值的成对商品。最低支持阈值是一个项目为了成为其一部分而应该出现的事务的最小比例输出(我们将这些流行项目称为)。
先验算法相对简单。假设i是数据集中不同项目的数量,n是流行项目的数量。使用字典作为主要数据结构,内存需求对于这个算法是O(max(n2.
,i)),而与输入的大小无关(其可以比可用存储器)。为了实现这一点,该算法对输入数据进行两次传递。第一次通过。在所有交易的第一次通过中,计算一个流行项目的字典。这个字典的关键字是项名称,值是频率(其中的事务数项目出现)。代 写CSC330程序设计语言项目读取所有事务后,计算最小支持(计算的整数通过将最小支持阈值乘以事务的数量、截断该数量,即地板)。返回一个仅包含流行项目的词典。第一次传递的结果是只包含流行项目的词典。第二次通过。再次读取交易。这一次保留一个流行的成对物品的柜台。关键将是一对项目(项目1,项目2)。频率是对称的,freq(item1,item2)=freq(tem2,第1项)。因此,词典每对只应保存一本(例如,按如下顺序订购给定item1,item2,字典的关键字总是(min(item1,item2),max(item1、item2))。返回一个仅包含常用项对的词典。第二次传递的结果是只包含流行项目对的词典。报告结果。使用这两本词典,打印一张包含结果的表格。有关详细信息,请参见下文。请注意,一些CSV文件使用“,”和一些“;”作为分离器。3你的任务,如果你择接受它实现3个功能,实现A先验算法的3个步骤
3.1准备工作:如何运行程序
您的程序使用以下参数运行。有关如何编译和运行程序。您将在Makefile中找到4个测试用例。<filename><delimiter><MinimumSuportThreshold><linesToPrint>文件名。CSV分隔的文件。每行一条记录。您可以假设中没有重复项记录分隔符。一个单字符字符串,表示记录中项目之间的分隔符。使用引号围绕它以避免外壳来解释角色。最小支持阈值。一对必须成为的一部分的最小支持阈值输出(在0和1之间)行打印。最多打印此数量的项目。如果结果包含比此更频繁的项目数字,只打印此数量的对。2.例如,命令:./apriori online.csv','01 10使用带有分隔符(逗号)和最小支持阈值0.01的文件online.csv,并请求最多打印前10项。3.2实施细节
从Gitlab下载tar文件。它包含多个文件。您只能修改并提交apriori.ml。请注意,此文件定义的模块必须与所提供的签名相匹配。您的工作是实现3个功能:3.3第一道使do_first_pass((阈值:float),(行:in_channel),
(delim:char)):first_pass_result=此函数有三个参数:
1.阈值:最小阈值(介于0和1之间),
2.行:从哪里读取行的输入流,
3.delim:每行中项目的分隔符(一个字符)。使用函数输入行读取流。请注意,此函数会生成一个异常(即您必须处理)。do first pass应该返回一个具有3个值的记录(有关记录的定义,请参见apriori.ml):1.流中事务的数量,
2.最小支持(即频繁项目应出现的最小次数),以及
3.具有相应频率的频繁项目的字典。要计算最小支持,请将浮点数截断为整数。字典应该仅包含至少具有此支持的项。
3.3.1第二遍
设do_second_pass((support:int),(popItems:items_dict),(行:in_channel),(delim:char)):pairs_dict=此函数采用4个参数:
3.1.支持度:最小支持度(整数),
2.popItems:常用项的字典,
3.行:具有事务的输入流,
4.delim:分隔符(一个字符)它应该返回一个字典,其中包含等于或高于最小支持阈值的流行对及其对应的频率。3.4打印表设print_table((nTransactions:int),(popItems:items_dict),(popPairs:pairs_dict),(to打印:int)):int=此函数用于打印一张包含流行配对和一些额外信息的表格。它需要4个参数:1.传输是文件中的记录数(第一次通过的结果)。
2.popItems是热门项目(第一次通过的结果),3.freqPairs是流行对的列表(第二次通过的结果)。4.to打印:最多打印给定数量的对。这些报告的列为:对该对的支持:拥有该对的交易的比例。项目名称。该项目的频率。出现此项目的交易记录数。本项目的支持。包括此项目的交易记录的比例。配对中的另一个项目。
这对的频率。出现此对的事务数。信心:一对的支持除以其他项目的支持。此数字表示第一项目出现的第二项目的交易的比例。当它出现时,意味着每当第二个项目出现时,第一个项目也会出现。提升。一对的支撑除以两项支撑的乘积。使用以下参数运行:Filename[./data/online.csv]Separator[,]最小相对支持阈值[0.01],最多打印10个元组。SuppPair项目-频率-支持-频率-配置-提升0.010887再生茶盘绿色386 0.014902再生茶盘粉色282 0.898 60.2650.010501摄政茶盘玫瑰457 0.017643摄政茶板粉红色272 0.866 49.0970.012431摄政茶具玫瑰457 0.017643摄政茶具绿色322 0.834 47.2810.010887木星圣诞斯堪的纳维亚515 0.019883木树圣诞斯堪堪的纳维亚282 0.832 41.8380.013512套/6个红点纸盘527 0.020346套/6个红点纸杯350 0.818 40.1930.024863绿色摄政茶杯和茶托1057 0.040808粉色摄政茶杯茶托644 0.804 19.7020.010154罂粟剧场厨房440 0.016987罂粟剧场客厅263 0.797 46.9160.010115罂粟游戏室卧室426 0.016447罂粟游戏室客厅262 0.794 48.2740.013512小推车混合设计橙色碗528 0.020385小棉花糖粉色碗350 0.781 38.3260.012354浴室金属标志709 0.027372卫生间金属标志320 0.780 28.514打印项目数:10
交易数量:25902
热门商品数量:592
热门对数:746结果应按照以下顺序排列(想想SQL中的顺序):
1.置信度下降,
2.升降机下降,
3.项目频率下降,
4.项目名称,升序,
5.项目名称,以升序显示。
使用这些绑定来格式化输出(它们在apriori.ml中定义):let lineTitleFormatString=format_of_string“SuppPair-%s-频率-支持-%s-频率对-配置-提升\n”let lineDataFormatString=format_of_string“%9.6f%s%6d%8.6f%s%6d%9.3f%9.3f\n”这些工作方式与C中的printf相同。请注意,这两个项(%s)的列不具有宽度规格。这是因为它们的宽度将被动态计算。每个的宽度列是要打印的任何相应项目的最大宽度(但不能小于
10个字符)

标签:语言,阈值,项目,打印,最小,支持,频率,程序设计,CSC330
From: https://www.cnblogs.com/meryo/p/18113368

相关文章

  • [转帖]浅堆深堆与内存泄露以及使用OQL语言查询对象信息
    https://www.cnblogs.com/lvxueyang/p/14833614.html 1.浅堆(ShallowHeap)浅堆是指一个对象所消耗的内存。在32位系统中,一个对象引用会占据4个字节,一个int类型会占据4个字节,long型变量会占据8个字节,每个对象头需要占用8个字节。根据堆快照格式不同,对象的大小可能会同8字......
  • JAVA语言学习-Day2
    参考教学视频:秦疆Java流程控制Scanner工具包(java5新特性)Scanners=newScanner(System.in);//创建对象,接收接盘数据if(s.hasNext()){  Stringa=s.next();}if(s.hasNextLine()){  Stringa=s.nextLine();}s.close();if选择结构if(boolean){  }elseif(bool......
  • Go语言基础语法
    1.概述简介:Go(Goland),一种静态强类型、编译型语言。功能:内存安全,GC(垃圾回收),结构形态及CSP-style并发计算特点:Google开发,可靠天生支持并发(最显著特点)语法简单,容易上手内置runtime,支持垃圾回收可直接编译程机器码,不依赖其他库丰富的标准库跨平台编译应用领域:服务器......
  • 0基础 三个月掌握C语言(16)
    ⽂件操作为什么使⽤⽂件?如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件什么是⽂件?磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈......
  • 2024-04-03:用go语言,在一个小城市里,有 m 个房子排成一排, 你需要给每个房子涂上 n 种颜
    2024-04-03:用go语言,在一个小城市里,有m个房子排成一排,你需要给每个房子涂上n种颜色之一(颜色编号为1到n),有的房子去年夏天已经涂过颜色了,所以这些房子不可以被重新涂色,我们将连续相同颜色尽可能多的房子称为一个街区。比方说houses=[1,2,2,3,3,2,1,1],它包含5个街......
  • c语言---- 结构体
    1.怎么定义一个结构体:1.struct这个变量名就是跟电脑说明,我是一个结构体。2.在struct后面的名字是要大写开头的。3.在大括号结束了,一定要加分号;​​2.结构体数组就是跟之前的数组一样的,就是名字前面的变量改成了结构的,还有里面的数,跟二维数组差不多:​​3.结......
  • C语言------------指针
    指针的类型:指针:在学习指针之前,要有一个认知,那就是指针==地址;指针的基本使用:​​这里要注意三点:1.*标识符—————只产生在指针变量定义或声明的时候;2.指针的类型要和被赋值的类型一致;3.*p=*(p)这2个的意思是一样的;在scanf中,不能使用指针进行;上面的是最基......
  • CISC3025自然语言处理项目
    自然语言处理项目澳门大学CISC3025-自然语言处理项目3,2023/2024(截止日期:4月18日)人名(“命名实体”)识别这是一个最多有两个学生的小组项目。你需要在这里加入一个小组。在该项目中,你将建立一个最大熵模型(MEM)来识别新闻专线中的人名text(Label=PERSON或Label=O)。我们提供了所有用于培......
  • 01 数据库和SQL语言概述
    概述数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库;就是存储数据的仓库是一个以某种组织方式存储在磁盘上的数据的集合数据库的分类网络数据库网络数据库是指把数据库技术引入到计算机网络系统中,借助于网络技术将存储于数据库中的大量信息及时发......
  • R语言 基于人口的医师配置公平性洛伦兹曲线的代码和示例
    文章目录前言一、洛伦兹曲线介绍二、基于人口的医师配置洛伦兹曲线    1.创建模拟数据    2.绘制洛伦兹曲线总结前言洛伦兹曲线(LorenzCurve)是一种用于描述资源分配公平性的图形表示方法,可用于评价卫生技术人员的分布公平性。洛伦兹曲线可以......