当前位置: 首页 > news >正文

数学建模常用代码

SVM分类器

1.命令函数部分:

clear;%清屏
clc;
X =load('data.txt');
n = length(X);%总样本数量
y = X(:,4);%类别标志
X = X(:,1:3);
TOL = 0.0001;%精度要求
C = 1;%参数,对损失函数的权重
b = 0;%初始设置截距b
Wold = 0;%未更新a时的W(a)
Wnew = 0;%更新a后的W(a)
for i = 1 : 50%设置类别标志为1或者-1y(i) = -1;
end
a = zeros(n,1);%参数a
for i = 1 : n%随机初始化a,a属于[0,C]a(i) = 0.2;
end%为简化计算,减少重复计算进行的计算
K = ones(n,n);
for i = 1 :n%求出K矩阵,便于之后的计算for j = 1 : nK(i,j) = k(X(i,:),X(j,:));end
end
sum = zeros(n,1);%中间变量,便于之后的计算,sum(k)=sigma a(i)*y(i)*K(k,i);
for k = 1 : nfor i = 1 : nsum(k) = sum(k) + a(i) * y(i) * K(i,k);end
endwhile 1%迭代过程%启发式选点
n1 = 1;%初始化,n1,n2代表选择的2个点
n2 = 2;
%n1按照第一个违反KKT条件的点选择
while n1 <= nif y(n1) * (sum(n1) + b) == 1 && a(n1) >= C && a(n1) <=  0break;endif y(n1) * (sum(n1) + b) > 1 && a(n1) ~=  0break;endif y(n1) * (sum(n1) + b) < 1 && a(n1) ~=Cbreak;endn1 = n1 + 1;              
end
%n2按照最大化|E1-E2|的原则选取
E1 = 0;
E2 = 0;
maxDiff = 0;%假设的最大误差
E1 = sum(n1) + b - y(n1);%n1的误差
for i = 1 : ntempSum = sum(i) + b - y(i);if abs(E1 - tempSum)> maxDiffmaxDiff = abs(E1 - tempSum);n2 = i;E2 = tempSum;end
end%以下进行更新
a1old = a(n1);
a2old = a(n2);
KK = K(n1,n1) + K(n2,n2) - 2*K(n1,n2);
a2new = a2old + y(n2) *(E1 - E2) / KK;%计算新的a2
%a2必须满足约束条件
S = y(n1) * y(n2);
if S == -1U = max(0,a2old - a1old);V = min(C,C - a1old + a2old);
elseU = max(0,a1old + a2old - C);V = min(C,a1old + a2old);
end
if a2new > Va2new = V;
end
if a2new < Ua2new = U;
end
a1new = a1old + S * (a2old - a2new);%计算新的a1
a(n1) = a1new;%更新a
a(n2) = a2new;%更新部分值
sum = zeros(n,1);
for k = 1 : nfor i = 1 : nsum(k) = sum(k) + a(i) * y(i) * K(i,k);end
end
Wold = Wnew;
Wnew = 0;%更新a后的W(a)
tempSum = 0;%临时变量
for i = 1 : nfor j = 1 : ntempSum= tempSum + y(i )*y(j)*a(i)*a(j)*K(i,j);endWnew= Wnew+ a(i);
end
Wnew= Wnew - 0.5 * tempSum;
%以下更新b:通过找到某一个支持向量来计算
support = 1;%支持向量坐标初始化
while abs(a(support))< 1e-4 && support <= nsupport = support + 1;
end
b = 1 / y(support) - sum(support);
%判断停止条件
if abs(Wnew/ Wold - 1 ) <= TOLbreak;
end
end
%输出结果:包括原分类,辨别函数计算结果,svm分类结果
for i = 1 : nfprintf('第%d点:原标号 ',i);if i <= 50fprintf('-1');elsefprintf(' 1');endfprintf('    判别函数值%f      分类结果',sum(i) + b);if abs(sum(i) + b - 1) < 0.5fprintf('1\n');else if abs(sum(i) + b + 1) < 0.5fprintf('-1\n');elsefprintf('归类错误\n');endend
end

2.名为f的功能函数部分:
 

function y = k(x1,x2)y = exp(-0.5*norm(x1 - x2).^2);
end

K-means算法代码

function [Idx, Center] = K_means(X, xstart)
% K-means聚类
% Idx是数据点属于哪个类的标记,Center是每个类的中心位置
% X是全部二维数据点,xstart是类的初始中心位置len = length(X);        %X中的数据点个数
Idx = zeros(len, 1);    %每个数据点的Id,即属于哪个类C1 = xstart(1,:);       %第1类的中心位置
C2 = xstart(2,:);       %第2类的中心位置
C3 = xstart(3,:);       %第3类的中心位置for i_for = 1:100%为避免循环运行时间过长,通常设置一个循环次数%或相邻两次聚类中心位置调整幅度小于某阈值则停止%更新数据点属于哪个类for i = 1:lenx_temp = X(i,:);    %提取出单个数据点d1 = norm(x_temp - C1);    %与第1个类的距离d2 = norm(x_temp - C2);    %与第2个类的距离d3 = norm(x_temp - C3);    %与第3个类的距离d = [d1;d2;d3];[~, id] = min(d);   %离哪个类最近则属于那个类Idx(i) = id;end%更新类的中心位置L1 = X(Idx == 1,:);     %属于第1类的数据点L2 = X(Idx == 2,:);     %属于第2类的数据点L3 = X(Idx == 3,:);     %属于第3类的数据点C1 = mean(L1);      %更新第1类的中心位置C2 = mean(L2);      %更新第2类的中心位置C3 = mean(L3);      %更新第3类的中心位置
endCenter = [C1; C2; C3];  %类的中心位置%演示数据
%% 1 random sample
%随机生成三组数据
a = rand(30,2) * 2;
b = rand(30,2) * 5;
c = rand(30,2) * 10;
figure(1);
subplot(2,2,1); 
plot(a(:,1), a(:,2), 'r.'); hold on
plot(b(:,1), b(:,2), 'g*');
plot(c(:,1), c(:,2), 'bx'); hold off
grid on;
title('raw data');%% 2 K-means cluster
X = [a; b; c];  %需要聚类的数据点
xstart = [2 2; 5 5; 8 8];  %初始聚类中心
subplot(2,2,2);
plot(X(:,1), X(:,2), 'kx'); hold on
plot(xstart(:,1), xstart(:,2), 'r*'); hold off
grid on;
title('raw data center');[Idx, Center] = K_means(X, xstart);
subplot(2,2,4);
plot(X(Idx==1,1), X(Idx==1,2), 'kx'); hold on
plot(X(Idx==2,1), X(Idx==2,2), 'gx');
plot(X(Idx==3,1), X(Idx==3,2), 'bx');
plot(Center(:,1), Center(:,2), 'r*'); hold off
grid on;
title('K-means cluster result');disp('xstart = ');
disp(xstart);
disp('Center = ');
disp(Center);

相关文章:

数学建模常用代码

SVM分类器 1.命令函数部分&#xff1a; clear;%清屏 clc; X load(data.txt); n length(X);%总样本数量 y X(:,4);%类别标志 X X(:,1:3); TOL 0.0001;%精度要求 C 1;%参数&#xff0c;对损失函数的权重 b 0;%初始设置截距b Wold 0;%未更新a时的W(a) Wnew 0;%更新a后的…...

学点儿Java_Day7_在实体类当中IDEA无法进行单元测试(@Test没有启动按钮)

在敲代码体会继承和访问修饰符的时候忽然遇到了单元测试不管用的情况&#xff0c;表现为没有启动按钮   经过一番折腾&#xff0c;发现我的测试是在具有构造函数的实体类Person当中进行的&#xff0c;当我把所有的构造函数删除后&#xff0c;启动按钮又出来了&#xff0c;加…...

C语言:二叉树基础

一、树 1.1 树的概念 1.树是有n个节点组成的具有层次关系的集合&#xff0c;是一种非线性的结构。 2.树的第一个节点称为根&#xff0c;根没有前驱节点。 3.除了根节点&#xff0c;其余每个节点都只有一个前驱节点&#xff0c;有0个或多个后继节点。 4.节点的度&#x…...

LeetCode热题Hot100-两数之和

充分意识到Coding能力的重要性&#xff0c;重启算法刷题之旅。 没想到这么简单的题目都写的磕磕绊绊。 一刷只写自己的解&#xff0c;二刷再看有没有其他更巧妙的方法~ 题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目…...

鸿蒙实战开发-如何通过拖动滑块调节应用内字体大小

介绍 本篇Codelab将介绍如何使用基础组件Slider&#xff0c;通过拖动滑块调节应用内字体大小。要求完成以下功能&#xff1a; 实现两个页面的UX&#xff1a;主页面和字体大小调节页面。拖动滑块改变字体大小系数&#xff0c;列表页和调节页面字体大小同步变化。往右拖动滑块字…...

matlab实现神经网络检测手写数字

一、要求 1.计算sigmoid函数的梯度&#xff1b; 2&#xff0e;随机初始化网络权重&#xff1b; 3.编写网络的代价函数。 二、算法介绍 神经网络结构&#xff1a; 不正则化的神经网络的代价函数&#xff1a; 正则化&#xff1a; S型函数求导&#xff1a; 反向传播算法&…...

增强现实与虚拟现实中的大模型应用:沉浸式体验的创新

增强现实与虚拟现实中的大模型应用&#xff1a;沉浸式体验的创新 1. 背景介绍 随着技术的进步&#xff0c;增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;正在成为越来越受欢迎的沉浸式体验方式。大模型&#xff0c;如神经网络和深度学习模型&…...

【数据分析案列】--- 北京某平台二手房可视化数据分析

一、引言 本案列基于北京某平台的二手房数据&#xff0c;通过数据可视化的方式对二手房市场进行分析。通过对获取的数据进行清冼&#xff08;至关重要&#xff09;&#xff0c;对房屋价格、面积、有无电梯等因素的可视化展示&#xff0c;我们可以深入了解北京二手房市场的特点…...

【Golang星辰图】创造美丽图表,洞察数据:解析Go语言中的数据可视化和数据分析库

解锁数据的力量&#xff1a;深入研究Go语言中的数据可视化和数据分析库 前言 本文将介绍Go语言中几个优秀的数据可视化和数据分析库&#xff0c;以帮助开发者更好地处理和分析数据。这些库提供了丰富的功能和工具&#xff0c;可用于创建漂亮的可视化图表、进行数值计算和数据…...

阿里云原生:如何熟悉一个系统

原文地址:https://mp.weixin.qq.com/s/J8eK-qRMkmHEQZ_dVts9aQ?poc_tokenHMA-_mWjfcDmGVW6hXX1xEDDvuJPE3pL9-8uSlyY 导读&#xff1a;本文总结了熟悉系统主要分三部分&#xff1a;业务学习、技术学习、实战。每部分会梳理一些在学习过程中需要解答的问题&#xff0c;这些问题…...

Scala第十一章节(正则表达式和异常处理)

4. 正则表达式 4.1 概述 所谓的正则表达式指的是正确的,符合特定规则的式子, 它是一门独立的语言, 并且能被兼容到绝大多数的编程语言中。在scala中, 可以很方便地使用正则表达式来匹配数据。具体如下: Scala中提供了Regex类来定义正则表达式.要构造一个Regex对象&#xff0…...

Flutter运行MacOs网络请求报错Unhandled Exception: DioException [connection error]:...

报错信息 [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioException [connection error]: The connection errored: Connection failed This indicates an error which most likely cannot be solved by the library. Error: SocketException: …...

基于SpringBoot+MyBatis框架的智慧生活商城系统的设计与实现(源码+LW+部署+讲解)

目录 前言 需求分析 可行性分析 技术实现 后端框架&#xff1a;Spring Boot 持久层框架&#xff1a;MyBatis 前端框架&#xff1a;Vue.js 数据库&#xff1a;MySQL 功能介绍 前台功能拓展 商品详情单管理 个人中心 秒杀活动 推荐系统 评论与评分系统 后台功能拓…...

Godot 学习笔记(5):彻底的项目工程化,解决GodotProjectDir is null

文章目录 前言GodotProjectDir is null解决方法解决警告问题根本解决代码问题测试引用其实其它库的输出路径无所谓。 总结 前言 Godot 项目工程化上有一朵乌云&#xff0c;我看Godot的Visual Studio 项目的时候&#xff0c;发现如果是手动新建项目导入Godot包&#xff0c;会导…...

Openharmony

OpenHarmony 是一个开源的、多设备分布式操作系统&#xff0c;由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营。它旨在提供跨多种设备的统一开发体验&#xff0c;支持一次开发&#xff0c;多端部署。OpenHarmony 的系统架构遵循分层设计原则&…...

24计算机考研调剂 | 华南师范大学

华南师范大学接收调剂研究生 考研调剂招生信息 学校:华南师范大学 专业:- 年级:2024 招生人数:- 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP查看) 补充内容 课题组主要研究生物拉曼光谱技术、基于荧光的微生物快检技术、显微成像设备与相…...

【Node.js】全局变量和全局 API

node 环境中没有 dom 和 bom &#xff0c;此外 es 基本上都是可以正常使用的。 如果一定要使用 dom 和bom&#xff0c;可以借助第三方库 jsdom 帮助我们实现操作。npm i jsdom 实例&#xff1a; const fs require(node:fs) const {JSDOM} require(jsdom)const dom new JS…...

Install Docker

Docker Desktop 直接安装 Docker Desktop Docker Desktop includes the Docker daemon (dockerd), the Docker client (docker), Docker Compose, Docker Content Trust, Kubernetes, and Credential Helper. Linux下安装Docker CE 参考官方文档 参见阿里云的文档 # step 1…...

Orbit 使用指南 10|在机器人上安装传感器 | Isaac Sim | Omniverse

如是我闻&#xff1a; 资产类&#xff08;asset classes&#xff09;允许我们创建和模拟机器人&#xff0c;而传感器 (sensors) 则帮助我们获取关于环境的信息&#xff0c;获取不同的本体感知和外界感知信息。例如&#xff0c;摄像头传感器可用于获取环境的视觉信息&#xff0c…...

GPT系列模型的特点

GPT系列模型&#xff08;包括GPT-1、GPT-2和GPT-3&#xff09;都基于自回归机制的Transformer架构。在设计上&#xff0c;这些模型的核心思想是利用Transformer架构来捕捉整个序列的上下文信息&#xff0c;通过其独特的自回归机制逐步地整合整个序列的完整语义。GPT系列模型的设…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

Yolo11改进策略:Block改进|FCM,特征互补映射模块|AAAI 2025|即插即用

1 论文信息 FBRT-YOLO&#xff08;Faster and Better for Real-Time Aerial Image Detection&#xff09;是由北京理工大学团队提出的专用于航拍图像实时目标检测的创新框架&#xff0c;发表于AAAI 2025。论文针对航拍场景中小目标检测的核心难题展开研究&#xff0c;重点解决…...

河北对口计算机高考MySQL笔记(完结版)(2026高考)持续更新~~~~

MySQL 基础概念 数据&#xff08;Data&#xff09;&#xff1a;文本&#xff0c;数字&#xff0c;图片&#xff0c;视频&#xff0c;音频等多种表现形式&#xff0c;能够被计算机存储和处理。 **数据库&#xff08;Data Base—简称DB&#xff09;&#xff1a;**存储数据的仓库…...