【MATLAB数据处理实用案例详解(18)】——利用自组织特征映射网络实现亚洲足球水平聚类

news2024/11/23 7:37:27

目录

    • 一、问题描述
    • 二、自组织特征映射网络实现亚洲足球水平聚类原理
    • 三、算法步骤
      • 3.1 定义样本
      • 3.2 创建网络
      • 3.3 网络训练
      • 3.4 测试
      • 3.5 显示聚类结果
    • 四、运行结果
    • 五、完整代码

一、问题描述

中国男子足球队的比赛成绩一直牵动着广大球迷的心。很多人认定中国队已处于亚洲三流甚至末流水平;在亚洲地区的比赛中,中国队曾经有过不错的表现,但近年来接连遭遇惨败。
在这样的背景下,有必要科学地统计亚洲各队的比赛数据,有说服力地给出各个国家男子足球的水平和实力。
使用无监督学习的聚类方式。聚类不需要预先知道部分球队的水平和实力,只需要给定分类的类别数量,算法就会将所有样本按照相似性的原则划分成类
要获得较准确的聚类结果,关键在于选择恰当的样本特征。它回答了究竟选取什么样的指标才能正确反映球队的实力和水平的问题。要比较各国足球的发展水平,自然不能选择该国国内联赛的成绩,而应该将国际正式比赛中各球队的表现纳入考虑范围。
(1)对于世界杯,如果打入决赛圈,则取其最终排名(1~32);没有进入决赛圈的,如果打入预选赛十强则编码为33,如果预选赛小组未出线则编码为43。
(2)对于亚洲杯,如果取得四强,则取其最终排名(1-4);如果进入八强,则编码为5,如果进入16强则编码为9,如果预选赛未出线,则编码为17。
各球队成绩一览表如下:
在这里插入图片描述

二、自组织特征映射网络实现亚洲足球水平聚类原理

算法流程图如下:
在这里插入图片描述

三、算法步骤

3.1 定义样本

聚类共涉及16个国家,每个国家的球队成绩用一个四维向量表示:

%% 定义输入样本
N = 16;
strr = {'中国','日本','韩国','伊朗','沙特','伊拉克','卡塔尔','阿联酋','乌兹别克','泰国',...
    '越南','阿曼','巴林','朝鲜','印尼','澳大利亚'};
data = [43,43,9,9;        % 中国
    28,9,4,1;               % 日本
    17,15,3,3;              % 韩国
    25,33,5,5;              % 伊朗
    28,33,2,9;              % 沙特
    43,43,1,5;              % 伊拉克
    43,33,9,5;              % 卡塔尔
    43,33,9,9;              % 阿联酋 
    33,33,5,4;              % 乌兹别克 
    43,43,9,17;             % 泰国 
    43,43,5,17;             % 越南
    43,43,9,17;             % 阿曼
    33,33,9,9;              % 巴林
    33,32,17,9;             % 朝鲜
    43,43,9,17;             % 印尼
    16,21,5,2]';            % 澳大利亚

3.2 创建网络

使用MATLAB神经网络工具箱中的selforgmap函数进行创建:

% 2*2 自组织映射网络
net = selforgmap([2,2]);

3.3 网络训练

使用train函数对输入样本进行训练:

data = mapminmax(data);
net = init(net);
net = train(net, data([1,2,3,4],:));

3.4 测试

自组织网络的测试与有监督学习中的测试不同,在这里,训练数据与测试数据是一样的。将用于训练的矩阵输入到网络中,可以得出每一个样本的分类标签:

%% 测试
y = net(data([1,2,3,4],:));

% 将向量表示的类别转为标量
result = vec2ind(y);

3.5 显示聚类结果

聚类完成时,分为一类的样本被赋予相同的分类标签,但不同类别使用什么数字作为分类标签则是随机的。为了得到正确的显示结果,统计每一个聚类类别的特征向量数值之和,由于数值越低表示水平越高,因此根据统计结果就可以判断同类别孰优孰劣了:

%% 输出结果
% 将分类标签按实力排序
score = zeros(1,M);
for i=1:M
    t = data(:, result==i);
    score(i) = mean(t(:));
end
[~,ind] = sort(score);

result_ = zeros(1,N);
for i=1:M
    result_(result == ind(i)) = i; 
end

fprintf('  足球队            实力水平\n');
for i = 1:N
    fprintf('   %-8s      第 %d 流\n', strr{i}, result_(i)) ;
end

四、运行结果

程序运行结果如下:
神经网络训练过程:
在这里插入图片描述
分类类别:
在这里插入图片描述

五、完整代码

完整代码如下:

% football.m
% 亚洲足球水平聚类
%% 清空工作空间
clear,clc
close all;

rng(now)
M=4;
%% 定义输入样本
N = 16;
strr = {'中国','日本','韩国','伊朗','沙特','伊拉克','卡塔尔','阿联酋','乌兹别克','泰国',...
    '越南','阿曼','巴林','朝鲜','印尼','澳大利亚'};
data = [43,43,9,9;        % 中国
    28,9,4,1;               % 日本
    17,15,3,3;              % 韩国
    25,33,5,5;              % 伊朗
    28,33,2,9;              % 沙特
    43,43,1,5;              % 伊拉克
    43,33,9,5;              % 卡塔尔
    43,33,9,9;              % 阿联酋 
    33,33,5,4;              % 乌兹别克 
    43,43,9,17;             % 泰国 
    43,43,5,17;             % 越南
    43,43,9,17;             % 阿曼
    33,33,9,9;              % 巴林
    33,32,17,9;             % 朝鲜
    43,43,9,17;             % 印尼
    16,21,5,2]';            % 澳大利亚

%% 创建网络
% 2*2 自组织映射网络
net = selforgmap([2,2]);

%% 网络训练
data = mapminmax(data);
tic
net = init(net);
net = train(net, data([1,2,3,4],:));
toc

%% 测试
y = net(data([1,2,3,4],:));

% 将向量表示的类别转为标量
result = vec2ind(y);

%% 输出结果
% 将分类标签按实力排序
score = zeros(1,M);
for i=1:M
    t = data(:, result==i);
    score(i) = mean(t(:));
end
[~,ind] = sort(score);

result_ = zeros(1,N);
for i=1:M
    result_(result == ind(i)) = i; 
end

fprintf('  足球队            实力水平\n');
for i = 1:N
    fprintf('   %-8s      第 %d 流\n', strr{i}, result_(i)) ;
end

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

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

相关文章

SpringBoot 多数据源及事务解决方案

1. 背景 一个主库和N个应用库的数据源,并且会同时操作主库和应用库的数据,需要解决以下两个问题: 如何动态管理多个数据源以及切换? 如何保证多数据源场景下的数据一致性(事务)? 本文主要探讨这两个问题的解决方案…

【C++】——C++基础知识点(C++和C语言的区别)

文章目录 1. 前言2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C的输入输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类 5. 函数重载5.1 函数重载概念5.2 C支持函数重载的原理——名字修饰 6. 引用6.1 引用概念6.2 引用特性6.3 常引用6.4 引用的使用场景6.5 引用和指针的…

OtterCTF

五年前的老题了,但还是值得一做,内存取证yyds! What the password? 取电脑的密码 先看缓存在内存中的注册表的偏移量 volatility_2.6_win64_standalone -f 1.vmem --profileWin7SP1x64 hivelist关注到SAM(账户密码表)和system volatility_2.6_win6…

MRI k空间概念整理

以下内容为MRI期末复习笔记,仅供复习参考使用。 K空间概念 K空间为包含MR数据的阵列,也可定义为原始数据阵列相位编码轴和频率编码轴的交叉点 MR扫描得到的数据为谱空间数据,谱空间数据与空间数据位置无直接对应关系 k空间每一数据点或数据…

数组、链表专题

数组、链表专题 前缀和数组LeetCode 303. 区域和检索 - 数组不可变解题思路代码实现 LeetCode 304. 二维区域和检索 - 矩阵不可变解题思路代码实现 总结 不要纠结,干就完事了,熟练度很重要!!!多练习,多总结…

4726.ACWing.第80场周赛寻找数字

ACWing.第80场周赛寻找数字 题目算法思想代码 题目 算法思想 时间复杂度 相当于01背包的搜索时间复杂度&#xff0c;每个位上要么是 4 要么是 7 &#xff0c;而且题意位数不超过10位&#xff0c;所以dfs可以直接过搜索算法 代码 #include<bits/stdc.h> using namespac…

【LeetCode】235. 二叉搜索树的最近公共祖先

1. 问题 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可…

项目骨架搭建

CSS样式补充 精灵图 CSS精灵图&#xff08;CSS Sprites&#xff09;是一种网页优化技术&#xff0c;通过将多个小图像合并成一个大图像&#xff0c;然后通过CSS的背景定位&#xff08;background-position&#xff09;属性来显示对应的图像部分。这种技术可以减少HTTP请求次数…

【Win11 | SSH】详细教你如何在Windows 11 下完成OpenSSH的安装(保姆级攻略)

文章目录 一、问题描述二、问题尝试解决2.1 ssh的问题2.2 如何手动安装2.3 install 脚本找不到2.4 power shell 开始报错2.5 继续安装ssh 三、输入 ssh 再报错 一、问题描述 最近在测试github的连接时&#xff0c;在终端或命令行窗口中&#xff0c;输入以下命令测试你的 SSH 连…

【五一创作】医院手术室麻醉管理系统概述和功能 SQLServer 2008 R2

医院手术室麻醉管理系统概述 1.系统功能概述 手术麻醉管理系统采用下拉式汉化菜单&#xff0c;界面友好&#xff0c;实用性强&#xff0c;设有与住院、病区、药房等系统的软件接口。 系统主要功能有&#xff1a; 手术管理&#xff1a;提供手术病人检索、手术申请、手术安排…

VSCode配置Arduino

综上所周知&#xff0c;Arduino IDE太不智能了&#xff0c;没有代码提示&#xff0c;不能代码跳转&#xff0c;于是乎找一下vscode有啥插件用 在网上找了些教程&#xff0c;也碰到了奇奇怪怪地坑&#xff0c;于是记录一下能成功配置步骤 准备 1.已安装好Arduino IDE 2.已安装好…

Clion开发STM32之串口封装(HAL库)

前提 在开发STM32过程中&#xff0c;芯片提供的串口引脚一般是不会发生变化的&#xff0c;所以为了方便移植&#xff0c;借助HAL提供的注册回调函数自定义&#xff0c;这边重新进行简要的封装此工程开发是以Clion为开发的IDE,用keil只需将对应的文件进行移植即可.文章末尾附带…

Photoshop如何使用选区之实例演示?

文章目录 0.引言1.利用快速选择工具抠图2.制作网店产品优惠券3.利用选区改变眼睛颜色4.抠取复杂的花束5.制作丁达尔光照效果6.利用选区调整图像局部颜色 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对PS进行了学习&#xff0c;本文通过《Photoshop2021入门教程》及…

STM32F103 系统架构

1、Cortex M3 内核 & 芯片 ARM公司提供内核&#xff08;如Cortex M3&#xff0c;简称CM3&#xff0c;下同&#xff09;授权&#xff0c;完整的MCU还需要很多其他 组件。芯片公司&#xff08;ST、NXP、TI、GD、华大等&#xff09;在得到CM3内核授权后&#xff0c;就可以把C…

Linux网络基础二

一.应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层。 二.再谈 "协议" 协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化…

VBA替换中文文献引用出现的et al.和and

问题描述&#xff1a;Endnote是常用的文献管理工具&#xff0c;并提供国标模板Chinese Std GBT7714 (numeric).ens&#xff0c;但Endnote在中英文混排上略欠考虑。Chinese Std GBT7714使用序号的形式&#xff08;******1&#xff09;对文献进行引用&#xff0c;但有时我们需要以…

python毕业设计之django+vue医院医疗救助系统

&#xff08;1&#xff09; 信息发布 当有基金的申请审批通过时&#xff0c;慈善机构信息维护部门应与慈善机构进行对接&#xff0c;保证信息的真实性&#xff0c;信息发布之后患者可以进行相应的基金申请。 &#xff08;2&#xff09; 基金管理 此项功能是保证基金信息的动态刷…

HR员工管理的三重境界:管事、管人、管心

在一个公司里&#xff0c;员工来来往往是常态&#xff0c;虽说我们不能替他们决定&#xff0c;但是一定是与公司的管理者有一定的关系。马云曾经说过&#xff1a;“一个员工离职&#xff0c;不外乎两种原因&#xff0c;一是钱没给到位&#xff1b;二是心里委屈了”。一句话就是…

笔记:计算机网络体系结构(OSI七层模型、TCP/IP五层协议)

计算机网络体系结构 计算机网络是一个复杂的、具有综合性技术的系统&#xff0c;它由计算机系统、通信处理机、通信线路和通信设备、操作系统以及网络协议等组成。为了更好地描述计算机网络结构&#xff0c;使计算机网络系统有条不紊地处理工作&#xff0c;需要定义一种较好的…

2023.04.30 学习周报

文章目录 摘要文献阅读1.题目2.摘要3.介绍4.本文贡献5.数据处理6.模型6.1 look - up操作6.2 LSTM6.3 周期模拟及额外因素 7.实验7.1 数据集7.2 基线7.3 实验表现 8.结论 ISOMAP1.基本思想2.欧氏距离3.折线近似曲线4.计算折线长度5.Floyd-Warshall算法6.ISOMAP算法7.总结 数学建…