机器学习 —— 向量机(matlab)

目录

一、SVM基本介绍

1.1 SVM算法定义

1.2 SVM和逻辑回归的区别

二、实验数学原理

三、实验算法和实验步骤

四、实例分析


一、SVM基本介绍

1.1 SVM算法定义

  SVM全称是supported vector machine(支持向量机),即寻找到一个超平面使样本分成两类,并且间隔最大。

  SVM能够执行线性和非线性分类,回归,甚至是异常值监测任务。特别适用于中小型复杂数据集的分类。

1.2 SVM和逻辑回归的区别

在这里插入图片描述

  1. 逻辑回归和SVM都是寻找一条分类直线,目标是把这两个类别分开
  2. 逻辑回归的最终判断标准是:准确率,而SVM最终的判断结果是:准确率+最大间隔
  3. 逻辑回归的分类直线可能有多条,而SVM的分类直线只有一条。

单纯考虑准确率和考虑最大间隔哪个泛化性能更好一点:
在这里插入图片描述

  1. 准确率只考虑了在训练集上的预测能力
  2. 准确率+最大间隔即考虑了预测能力,又考虑了模型对未知样本的泛化能力。

二、实验数学原理

线性支持向量机

三、实验算法和实验步骤

二分类逻辑回归算法

输入

输出过程:

1.读取数据集

2.数据归一化

3.构造问题的约束二次规划

4.构建拉格朗日函数

5.将问题对偶化

6.利用SMO算法进行求解,得到分类预测模型

7.根据预测模型对预测集样本的类别进行预测

输出:数据集的预测结果

四、实例分析

数据来源:传送门1  传送门2

线性向量机

clear;close all;clc;
%% 第一步:读取数据
load SVMdata1.mat;
%% 第二步:分离训练集和测试集
% [train_X,train_y,test_X,test_y] = split_train_test(X,y,2,0.8);
% randperm随机打算数据集X的顺序
index = randperm(size(X,1)); %获取打算顺序后的数据集的索引
n = length(index); %得到index的个数
% 分离训练集
T = round(n*0.8);
train_X = X(index(1:T),:); %分离出数据集X中的训练集
train_y = y(index(1:T),:); %分离出数据集y中的训练集
% 分离测试集或预测集
test_X = X(index(T+1:end),:); %分离出数据集X中的测试集
test_y = y(index(T+1:end),:); %分离出数据集y中的测试集

%% 第三步:标准支持向量机拟合训练
svmline = svmtrain(train_X,train_y,'Showplot',true);

%% 第四步:SVM预测
predictline = svmclassify(svmline,test_X,'Showplot',true);
fprintf('预测分类结果为:\n')
disp(predictline')
%继续绘制测试集数据
hold on; %继续在这张图上绘制
plot(test_X(:,1),test_X(:,2),'gs','Markersize',12) %圈出预测数据
xlabel('x') %添加行标签
ylabel('y') %添加列标签
title('标准支持向量机') %添加标题
hold off %接下来绘制重启一张图
%% 第五步:预测的准确率
accu = 1-sum(abs(predictline-test_y))/length(test_y);
fprintf('预测结果准确率为:%d',accu)

高斯向量机

clear;close all;clc;
%% 第一步:读取数据
load SVMdata2.mat;
%% 第二步:分离训练集和测试集
% [train_X,train_y,test_X,test_y] = split_train_test(X,y,2,0.8);
% randperm随机打算数据集X的顺序
index = randperm(size(X,1)); %获取打算顺序后的数据集的索引
n = length(index); %得到index的个数
% 分离训练集
T = round(n*0.8);
train_X = X(index(1:T),:); %分离出数据集X中的训练集
train_y = y(index(1:T),:); %分离出数据集y中的训练集
% 分离测试集或预测集
test_X = X(index(T+1:end),:); %分离出数据集X中的测试集
test_y = y(index(T+1:end),:); %分离出数据集y中的测试集

%% 第三步:高斯拟合训练集
svmgs = svmtrain(train_X,train_y,'Showplot',true,'kernel_function','rbf','rbf_sigma',1);

%% 第四步:SVM预测
predict = svmclassify(svmgs,test_X,'Showplot',true);
fprintf('预测分类结果为:\n')
disp(predict')
%继续绘制测试集数据
hold on; %继续在这张图上绘制
plot(test_X(:,1),test_X(:,2),'gs','Markersize',12) %圈出预测数据
xlabel('x') %添加行标签
ylabel('y') %添加列标签
title('高斯核支持向量机') %添加标题
hold off %接下来绘制重启一张图
%% 第五步:预测的准确率
% accu = sum(strcmp(predict,test_y))/length(test_y)*100
accu = 1-sum(abs(predict-test_y))/length(test_y);
fprintf('预测结果准确率为:%d',accu)
### 回答1: 机器学习是一门涉及数据处理和模式识别的学科,它通过构建和训练模型来进行预测和分类。而MATLAB作为一种功能强大的计算编程语言,具备丰富的数据处理和分析工具,因此成为了机器学习中常用的工具之一。 MATLAB提供了多种机器学习的实践应用源码,供初学者进行入门学习和实践。学习者可以通过这些源码了解机器学习的基本原理和流程,以及如何将其应用于实际问题中。 MATLAB机器学习实战源码通常涵盖以下内容: 1. 数据预处理:通过MATLAB的数据处理函数,对原始数据进行清洗、归一化等预处理操作,以减少噪声的影响,并保证数据的可靠性和一致性。 2. 特征选择:根据问题的需求和特征的相关性,选择最具代表性的特征集,以提高分类和预测的准确度。 3. 模型训练:使用MATLAB机器学习工具箱,选择相应的模型算法进行训练。常见的算法包括线性回归、逻辑回归、支持向量机、决策树等。 4. 模型评估:使用交叉验证、混淆矩阵等评估指标,对训练出的模型进行评估,判断其预测和分类的准确度。 5. 结果可视化:利用MATLAB的绘图函数,对机器学习模型的结果进行可视化展示,以便更直观地理解和分析。 通过实践应用源码,学习者可以在实际操作中深入理解机器学习的原理和算法,并掌握如何使用MATLAB进行数据处理、模型训练和结果评估。这也为进一步深入研究和应用机器学习奠定了基础。 ### 回答2: 机器学习人工智能领域的重要分支,通过训练模型和算法来使器能够自动学习和提高性能。机器学习的应用非常广泛,包括图像识别、自然语言处理、推荐系统等等。 在机器学习的实践中,MATLAB 是一种常用的工具。MATLAB 具有丰富的机器学习函数和工具箱,可以帮助用户快速实现算法和模型。 要进行机器学习的实战,首先需要学习一些基本的概念和算法机器学习中的一些常见算法包括线性回归、逻辑回归、决策树、支持向量机、神经网络等。MATLAB 中都有相应的函数和工具箱可以使用。可以通过学习 MATLAB 的帮助文档和示例代码来掌握这些算法的使用方法和原理。 在实际应用中,可以使用 MATLAB 来处理数据、建立模型、进行训练和评估。首先,将数据导入到 MATLAB 环境中,可以使用 MATLAB 提供的数据处理函数进行数据清洗和预处理。然后,选择合适的算法和模型,使用 MATLAB 提供的函数进行训练和优化。训练完成后,可以使用测试数据对模型进行评估。MATLAB 提供了丰富的可视化函数,可以对结果进行可视化展示和分析。 除了基本的算法和模型,MATLAB 中还有一些专门的工具箱,例如深度学习工具箱和图像处理工具箱,可以更方便地进行相关任务的实现。 总而言之,MATLAB 是一个强大的工具,提供了丰富的函数和工具箱,可以帮助用户进行机器学习的入门到实战。通过学习 MATLAB 的相关函数和示例代码,掌握机器学习的基本概念和算法,并在实际应用中进行模型的训练和评估,可以更好地理解和应用机器学习的知识。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值