使用LDA(线性判别公式)进行iris鸢尾花的分类

news2024/11/25 18:32:58

        线性判别分析((Linear Discriminant Analysis ,简称 LDA)是一种经典的线性学习方法,在二分类问题上因为最早由 [Fisher,1936] 提出,亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术,也就是说它的数据集的每个样本都有类别输出。这点与主成分和因子分析不同,因为它们是不考虑样本类别的无监督降维技术。

        LDA 的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同样样例的投影尽可能接近、异样样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。其实可以用一句话概括:就是“投影后类内方差最小,类间方差最大”。
鸢尾花简介

iris数据集的中文名是安德森鸢尾花卉数据集,英文全称是Anderson’s Iris data set。iris包含150个样本,对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息,所以iris数据集是一个150行5列的二维表。

通俗地说,iris数据集是用来给花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征(前4列),我们需要建立一个分类器,分类器可以通过样本的四个特征来判断样本属于山鸢尾、变色鸢尾还是维吉尼亚鸢尾(这三个名词都是花的品种)。

iris的每个样本都包含了品种信息,即目标属性(第5列,也叫target或label)。

代码

#首先导入相关库
import sklearn
from sklearn.datasets import load_iris
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
#再进行数据的划分
data = load_iris(return_X_y=True)
x,y = data
#print(x)
#print(y)
#分割训练集和测试集
train_x,test_x,train_y,test_y = train_test_split(x,y,test_size=0.3)
print(train_x.shape)
print(test_x.shape)
#进行训练
LDA = LinearDiscriminantAnalysis()
LDA.fit(train_x,train_y)
y_predict = LDA.predict(test_x)
print(test_y)
print(y_predict)

相关输出如下

[2 1 2 1 0 2 2 0 2 0 1 2 1 0 1 0 0 0 0 2 2 1 2 1 0 1 1 2 2 0 2 1 2 0 2 1 2
 1 0 2 0 0 1 0 2]
[2 1 2 1 0 2 2 0 2 0 1 2 1 0 1 0 0 0 0 2 2 1 2 1 0 1 1 2 2 0 2 1 2 0 2 1 2
 1 0 2 0 0 1 0 2]
#计算预测正确率
j = 0
for i in range(len(test_y)):
    if test_y[i] == y_predict[i]:
        j = j + 1
print(j)
print(j/len(y_predict))

画图部分

#由于是按照萼片长度宽度计算,所以将萼片长宽与相应的类别组合成新的列表
total_sepal = []
for i in range(x.shape[0]):
    sepal = []
    sepal.append(x[i][0])
    sepal.append(x[i][1])
    sepal.append(y[i])
    total_sepal.append(sepal)
print(total_sepal)
#画图
for i in range(x.shape[0]):
    if(total_sepal[i][2] == 0):
        plt.scatter(total_sepal[i][0], total_sepal[i][1], color='blue')
    if(total_sepal[i][2] == 1):
        plt.scatter(total_sepal[i][0], total_sepal[i][1], color='red')
    if(total_sepal[i][2] == 2):
        plt.scatter(total_sepal[i][0], total_sepal[i][1], color='green')
plt.show()

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

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

相关文章

【LeetCode】来玩玩四数之和吧

Problem: 18. 四数之和 文章目录 解题思路算法原理分析复杂度Code 解题思路 讲述看到这一题的思路 首先我们来分析一下本题的思路:这题和我们之前所讲过的一题叫做 三数之和,与本题非常得类似,如果没有做过的扣友可以先去做做看那我们来分析一…

【OpenSSL】单向散列函数

什么是单向散列函数 任意长度数据生成固定长度是散列快速计算消息变化散列变化单向不可逆,抗碰撞 应用场景 文件完整性口令加密消息认证伪随机数配合非对称加密做数字签名比特币工作量证明 单向hash抗碰撞 弱抗碰撞 给定X和hash值的情况下,找到另外…

2. PCIE TLP解包封包

第二十一讲、PCIE的TLP包的封包解包原理.pdf 00 Packet Coding.docx 掌握如何发送接收 Mrd(memory read TLP)、Mwr(Memory write TLP)、Cpl(Completion TLP)和Cpld(Completion with data TLP) 命令包 1、 TLP 包是由 PCIE 的 Endpoint 或者 Root Complex…

使用PageHelper进行分页

使用PageHelper进行分页 1. 使用Spring Boot2. 不使用Spring Boot的实现 1. 使用Spring Boot 要在Spring MVC中使用PageHelper进行分页,你需要完成以下几个步骤: 添加PageHelper依赖:在你的项目中添加PageHelper的Maven或Gradle依赖。例如&…

22年4月后树莓派烧录镜像、联网以及ssh 远程投屏失败的注意事项

1. 树莓派刷机 树莓派在22年4月后新增了关于对用户安全的修改,所以之前的在SD 卡中放入ssh文件以及wifi 账号和密码的方法已经不好使了。很多用户发现烧录镜像后找不到树莓派ip了,特别是没有屏幕的用户,ssh更是连接不上。 解决办法就是官网…

[C#]vs2022安装后C#创建winform没有.net framework4.8

问题,我已经在visualstudio安装程序中安装了.net框架4.8的SDK和运行时。 然而,我在visual studio 2022中找不到已安装的框架。 我已经检查了我的VS 2019,它可以很好地定位网络框架4.8,它可以构建我的项目。但VS 2022不能。 我已经…

RocketMQ源码解析(上)

一、ACL权限控制 应用场景: ​RocketMQ提供了针对队列、用户等不同维度的非常全面的权限管理机制。通常来说,RocketMQ作为一个内部服务,是不需要进行权限控制的,但是,如果要通过RocketMQ进行跨部门甚至跨公司的合作&…

公司如何监控员工自己的电脑(监控单位员工电脑的几个好用的方法)

在现代的商业环境中,公司需要在保护敏感数据和确保员工生产力之间找到平衡。为此,许多公司选择监控员工的电脑使用情况。本文将详细介绍如何专业且有效地监控公司员工电脑。 一、为何需要监控员工电脑 公司可能会出于各种原因去监控员工的电脑使用&…

CSS中的定位

position 的属性与含义 CSS 中的 position 属性用于控制元素在页面中的定位方式,有四个主要的取值,每个取值都会影响元素的布局方式,它们是: static(默认值): 这是所有元素的初始定位方式。在静…

字符函数和字符串函数(C语言进阶)

字符函数和字符串函数 一.求字符串长度1.strlen 二.长度不受限制的字符串函数介绍1.strcpy2.strcat3.strcmp 前言 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。 字符串常量适用于那…

[刷题记录]牛客面试笔刷TOP101(二)

(一)传送门: [刷题记录]牛客面试笔刷TOP101(一)_HY_PIGIE的博客-CSDN博客 目录 1.合并二叉树 2.二叉树的镜像 3.判断是否为二叉搜索树 4.判断是不是完全二叉树 1.合并二叉树 合并二叉树_牛客题霸_牛客网 (nowcoder.com) 思路: 在后序遍历的基础上进行,两颗二叉树可…

【网络协议】Http-中

搜索引擎:搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上采集信息,在对信息进行组织和处理后,为用户提供检索服务,将检索的相关信息展示给用户的系统。搜索引擎是工作于互联网上的一门检索技术,它旨在提…

WPF 类库 使用handycontrol 配置

在学习wpf发现了一个非常好用的UI库 handycontrol 但是很多地方讲的都是WPF应用程序怎么用,很少有讲类库那么引用的问题,所以在这里自己总结一下,希望能帮助到大家: 1.添加 handycontrol 的引用;安装,我已…

Webpack打包图片

一、在js文件中引入图片 二、在package.config.js中配置加载器 module.exports {mode: "production", // 设置打包的模式:production生产模式 development开发模式module: {rules: [// 配置img加载器{test: /\.(jpg|png|gif)$/i,type:"asset/resou…

计算机竞赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 inception_v3网络5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 *…

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(六)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 模型训练1)数据集分析2)数据预处理3)模型创建4)模型训练5)获取特征矩阵 2. 后端Django3. 前端微信小程序1)小程序全局配置文件2&#xff09…

【广州华锐互动】煤矿坍塌VR事故警示教育突破了哪些限制?

煤矿坍塌事故是煤矿行业的一种常见事故,对于矿工的生命安全和生产设备都存在着严重威胁。传统的安全培训方式往往难以真实地呈现事故场景,难以达到理想的安全教育效果。而虚拟现实(VR)技术的出现,为煤矿安全教育带来了…

测试人职场生存必须避开的5个陷阱

在互联网职场的工作发展道路上,软件测试人员其实在公司中也面临着各种各样的职场陷阱,有些可能是因为项目业务不熟练造成的,有些可能是自身技术能力不足导致的...等等。软件测试入门相对来说比较容易些,但是想要在测试行业长久发展…

力扣刷题-数组-数组理论基础

数组是存放在连续内存空间上的相同类型数据的集合。 需要两点注意的是 数组下标都是从0开始的。数组内存空间的地址是连续的 正是因为数组的在内存空间的地址是连续的**,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。** 注意&…

S型加减速行车位置控制(支持点动和停靠位置搜索)

S型加减速位置控制详细算法和应用场景介绍,请查看下面文章博客。本篇文章不再赘述,这里主要介绍点动动和位置点搜索功能。 S速度曲线轨迹规划(普通变频位置闭环控制算法详细介绍SCL代码)_s曲线轨迹规划_RXXW_Dor的博客-CSDN博客位置控制用PD控制器&…