Matlab上机三(Apriori算法)

news2024/11/28 15:39:44

1、题目要求

(1) 读取给定的交易数据库test3.txt,将整个交易数据库表示为一个矩阵,每个元组表示成一个行向量,向量长度为4。其中,一个项目出现在这个元组中,则相应位置设为1,否则为0。如第1个交易{1,2}表示为
向量[ 1 1 0 0]。
(2)根据给定的最小支持度阈值(本题为3),确定频繁1项集。
(3)计算其余长度的频繁项集,直到Lk为空。
(4)尝试用Apriori算法实现

text3.txt数据

 1 2
 2 3 4
 1 2 3 4
 1 2 4
 1 2 3 4

2、解题代码和步骤

clear
clc
%fopen以读的方式打开一个文件
ffid=fopen('text3.txt','r')
i=0;
MAXn=4;
data=[];
%读取给定的交易数据库text3.txt将整个交易数据库表示为一个矩阵,将元祖表示成一个行向量
%向量的长度为项目的个数,其中一个项目初夏你在这个元组中,响应位置设为1,否则为0

%检查流文件ffid是否已经达到末尾
while feof(ffid)==0
    i=i+1;
    %读取文件流ffid中一行数据,并将其存储到变量tline{i,1}中
    tline{i,1}=fgetl(ffid);
    %显示值
    disp(tline{i,1})
    %创建一个长度为MAXn的全0向量
    newdata=zeros(1,MAXn);
    %str2num将字符串转换为数值
    line=str2num(tline{i,1});
    disp(line)
    
    newdata(line)=1;
    disp(newdata)
    %将newdata向量添加到data向量末尾
    data=[data;newdata];
end
disp('data')
disp(data)

%最小支持度为3
%用datasum统计每个项目的支持度,将datasum中支持度小于3的位置等于0
%标记datasum中为0的序列号,将data矩阵中相应的序列号的位置等于0
%频繁1项级为datasum中大于0的项

%data向量中所有元素的和
datasum=sum(data);
disp('datasum')
disp(datasum)
%小于3的元素设置为0
datasum(datasum<3)=0;
%datasum元素等于0的索引
[,col]=find(datasum==0);
%第col列的元素设置为0
data(:,col)=0;
%找到第一行大于0的元素
disp(datasum(1,:)>0)
L1=find(datasum(1,:)>0);
disp('L1');
disp(L1);

C2=[];
%从1开始到L1最后一列的前一列
for j=1:size(L1,2)-1
    %从j+1开始到L1矩阵最后一列
    for j1=j+1:size(L1,2)
        C2=[C2;L1(j),L1(j1)];
    end
end
disp('C2')
disp(C2)
count=0;
L2=[];

%从1开始到C2的最后一列
for j=1:size(C2,1)
    count=0;
    for i=1:size(data,1)%size(data,1)=5
        if data(i,C2(j,1))==1 && data(i,C2(j,2))==1
            count=count+1;
        end
    end
    if count>=3
        L2=[L2;C2(j,1),C2(j,2)];
    end
end
disp('L2');
disp(L2);

C3=[];
%size(L2,1)=5
for j=1:size(L2,1)-1
    for j1=j+1:size(L2,1)
        index1=L2(j,1);%index1=1
        index2=L2(j1,1);%index2=1
        if index1==index2
            %将矩阵L2的第j和j1行的第二列添加的C3末尾
            C3=[C3;index1,L2(j,2),L2(j1,2)];
        end
    end
end
disp('C3')
disp(C3)
mC3=[];
%遍历C3的每一行
for j=1:size(C3,1)
    %将每行第一列元素赋值
    index=C3(j,1);
    index1=C3(j,2);
    index2=C3(j,3);
    for j1=1:size(L2,1)
        index3=L2(j1,1);
        index4=L2(j1,2);
        if index1==index3&&index2==index4
            mC3=[mC3;index,index3,index4];
        end
    end
end
disp('mC3')
disp(mC3)
L3=[];
for j=1:size(mC3,1)%size(mC3,1)=2
    count=0;
    for j1=1:size(data,1)%size(data,1)=5
        if data(j1,mC3(j,1))==1&&data(j1,mC3(j,2))==1&&data(j1,mC3(j,3))==1%data(1~5,1~2)==1&&data(1~5,2,3)==1
                count=count+1;
        end
    end
    if(count>=3)
        L3=[L3;mC3(j,1),mC3(j,2),mC3(j,3)];
    end
end
disp('L3');
disp(L3);

3、代码和图解释

L1:
在这里插入图片描述
L2:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、输出的结果


ffid =

    83

 1 2
     1     2

     1     1     0     0

 2 3 4
     2     3     4

     0     1     1     1

 1 2 3 4
     1     2     3     4

     1     1     1     1

 1 2 4
     1     2     4

     1     1     0     1

 1 2 3 4
     1     2     3     4

     1     1     1     1

data
     1     1     0     0
     0     1     1     1
     1     1     1     1
     1     1     0     1
     1     1     1     1

datasum
     4     5     3     4

     1     1     1     1

L1
     1     2     3     4

C2
     1     2
     1     3
     1     4
     2     3
     2     4
     3     4

L2
     1     2
     1     4
     2     3
     2     4
     3     4

C3
     1     2     4
     2     3     4

mC3
     1     2     4
     2     3     4

L3
     1     2     4
     2     3     4

>> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

比亚迪被曝 24 小时收到 12 万份简历?

众所周知&#xff0c;今年找工作的难度都相当大&#xff0c;不论是应届毕业生还是经验丰富的职场人士&#xff0c;都面临相同的困境。然而&#xff0c;没想到情况居然如此糟糕&#xff0c;着实让人震惊。 最近&#xff0c;比亚迪公司被曝收到了12万份简历&#xff0c;简历投递…

深度学习框架TensorFlow.NET环境搭建1(C#)

测试环境 visual studio 2017 window10 64位 测试步骤如下&#xff1a; 1 新建.net framework控制台项目&#xff0c;工程名称为TensorFlowNetDemo&#xff0c;.net framework的版本选4.7.2&#xff0c;如下图&#xff1a; 2 分别安装TensorFlow.NET包(先装)和SciSharp.…

分治法——找众数

分治法——找众数 要求&#xff1a; 寻找整数数组的众数&#xff0c;如果存在多个众数&#xff0c;则返回权值最小的那个 第一步&#xff1a; 要利用分治法找众数&#xff0c;首先就先要使数组有序。这里&#xff0c;我们用C语言库中的qsort进行快排&#xff1a; qsort(nums…

Verilog HDL语言基础知识

目录 Verilog HDL语言基础知识 6.1.2 Verilog HDL模块的结构 6.1.3 逻辑功能定义 6.2.1 常量 6.3 运算符及表达式 6.4.2 条件语句 Verilog HDL语言基础知识 先来看两个Verilog HDL程序。 例6.1 一个8位全加器的 Verilog HDL源代码 module adder8(cout,sum,ina,…

如何用 GPT-4 全模式(All Tools)帮你高效学习和工作?

「十项全能」的 ChatGPT &#xff0c;用起来感受如何&#xff1f; 之前&#xff0c;作为 ChatGPT Plus 用户&#xff0c;如果你集齐下面这五个模式&#xff0c;就会成为别人羡慕的对象。 但现在&#xff0c;人们更加期盼的&#xff0c;是下面这个提示的出现&#xff1a; 这个提…

Python---字符串中的count()方法

count()方法 主要功能&#xff1a;求子串在字符串中出现的次数 count 英 /kaʊnt/ v. &#xff08;按顺序&#xff09;数数&#xff1b;计数&#xff0c;点数目&#xff1b;把……算入&#xff0c;包括&#xff1b;重要&#xff1b;被允许&#xff0c;被接受&#xff1b;…

项目实战:新增@RequestMapping和@GetMapping和@PostMapping三个注解

1、RequestMapping package com.csdn.mymvc.annotation; import java.lang.annotation.*; Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Inherited public interface RequestMapping {String value(); }2、PostMapping package com.csdn.mymvc.annotation; im…

Java自学第5课:Java web开发环境概述,更换Eclipse版本

1 Java web开发环境 前面我们讲了java基本开发环境&#xff0c;但最终还是要转到web来的&#xff0c;先看下怎么搭建开发环境。 这个图就是大概讲了下开发和应用环境&#xff0c;其实很简单&#xff0c;对于一台裸机&#xff0c;win7 系统的&#xff0c;首先第1步&#xff0c;…

Makefile初识

目录 0.前期准备0.1、程序编译链接&#xff1a; 1.Makefile基础1.1、认识Makefile1.2、Makefile定义模式&#xff1a;(1) 定义模式&#xff1a;(2) 执行Makefile&#xff1a; 1.3、Makefile的变量(1) 变量定义&#xff1a;(2) **变量的赋值符**:(3) 自动化变量 1.4 伪目标1.5 文…

【C++】特殊类设计+类型转换+IO流

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

【QT5之QFtp模块】编译及使用

下载 传送门&#xff1a;https://github.com/qt/qtftp 或者 git clone https://github.com/qt/qtftp.git 下载ZIP&#xff0c;解压待用。 编辑 使用QtCreator打开qtftp.pro; 修改如下&#xff1a; qtftp.pro中&#xff0c;将第21行注释; src/qftp.pro中&#xff0c;将第4行…

JavaEE-博客系统3(功能设计)

本部分内容为&#xff1a;实现登录功能&#xff1b;强制要求用户登录&#xff1b;实现显示用户信息&#xff1b;退出登录&#xff1b;发布博客 该部分的后端代码如下&#xff1a; Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws Ser…

微服务之初始微服务

文章目录 一、服务架构演变1.单体架构2.分布式架构 二、认识微服务三、总结四、微服务技术对比五、SpringCloud注意 一、服务架构演变 1.单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a; 架构简单部署成本…

【强化学习】17 ——DDPG(Deep Deterministic Policy Gradient)

文章目录 前言DDPG特点 随机策略与确定性策略DDPG&#xff1a;深度确定性策略梯度伪代码代码实践 前言 之前的章节介绍了基于策略梯度的算法 REINFORCE、Actor-Critic 以及两个改进算法——TRPO 和 PPO。这类算法有一个共同的特点&#xff1a;它们都是在线策略算法&#xff0c…

C++ map 的使用

下面的是关于 map 的介绍。来自 map - C Reference (cplusplus.com) 的翻译&#xff0c;您可以看也可以不看哈&#xff01; map 是关联容器&#xff0c;它按照特定的次序(按照 key 来比较)存储由键值 key 和值 value组合而成的元素。在 map 中&#xff0c;键值 key 通常用于排序…

使用腾讯云轻量服务器安装AList

新人有免费两个月试用轻量服务器&#xff0c;使用云服务器商自带的webshell登录&#xff1b; 我这儿用docker安装Alist&#xff0c;因为服务器没自带docker&#xff0c;所以具体安装docker centos7.0最快速安装docker的方法 通过 Docker 部署 Alist 命令&#xff1a; docke…

多元共进|2023 Google 开发者大会现场全回顾

多元共进&#xff5c;2023 Google 开发者大会现场全回顾 作为 Google I/O Connect 环球之旅的收官之站 五湖四海的开发者在此相聚 共度无数个精彩瞬间 两天时光&#xff0c;现场有哪些闪耀时刻&#xff1f; 快来一起盘点&#xff01; 持续关注大会官网 回看更多大会精彩…

JavaScript_Date对象_实例方法_set类

设置一年后的今天&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document</…

win10 + cmake3.17 + vs2017编译osgearth2.7.0遇到的坑

坑1&#xff1a;debug模式下生成osgEarthAnnotation时 错误&#xff1a;xmemory0(881): error C2440: “初始化”: 无法从“std::pair<const _Kty,_Ty>”转换为 to _Objty 出错位置&#xff1a;src/osgEarthFeatures/FeatureSourceIndexNode.cpp 解决办法&#xff1a; …

S4.2.4.7 Start of Data Stream Ordered Set (SDS)

一 本章节主讲知识点 1.1 xxx 1.2 sss 1.3 ddd 二 本章节原文翻译 2.1 SDS 数据流开始有序集 SDS 代表传输的数据类型从有序集转为数据流。它会在 Configuration.Idle&#xff0c;Recovery.Idle 和 Tx 的 L0s.FTS 状态发送。Loopback 模式下&#xff0c;主机允许发送 SDS。…