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

机器学习知识点

1鸢尾花分类

鸢尾花分类问题是一个经典的机器学习问题,旨在根据鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度等特征,将鸢尾花分成三个品种:山鸢尾(setosa)、变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica)。

这个问题常用的解决方法是使用机器学习算法来构建一个分类器,然后使用该分类器对新的鸢尾花样本进行分类。常用的分类算法包括支持向量机(SVM)、K近邻(K-Nearest Neighbors)、决策树(Decision Tree)等。

在解决鸢尾花分类问题时,通常采取以下步骤:

  1. 数据获取与准备: 首先,需要收集包含鸢尾花样本的数据集,常用的是经典的鸢尾花数据集,例如iris数据集。然后,对数据进行预处理,包括数据清洗、特征选择、特征缩放等。

  2. 选择模型: 选择适合问题的分类模型,常见的包括支持向量机(SVM)、K近邻(K-Nearest Neighbors)、决策树(Decision Tree)、随机森林(Random Forest)等。

  3. 训练模型: 使用训练数据对选择的模型进行训练,这一过程会使模型根据数据学习到相应的规律或模式。

  4. 模型评估: 使用测试数据评估模型的性能,通常使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值等指标来评估模型的表现。

  5. 模型调优: 根据评估结果,对模型进行调优,例如调整模型的超参数、选择更合适的特征等,以提高模型的性能。

  6. 模型应用: 最终,将训练好的模型用于实际问题中,对新的鸢尾花样本进行分类预测。

题目描述:

要求: 鸢尾花分类问题,我们可以通过python的sklearn库,给出预测结果和实际值的对比,并且给出正确率评分。

  • 1、导入sklearn库,包括需要用到的数据集dataset.load_iris()、svm分类器工具和、模型用到的数据集拆分工具。
  • 2、使用python命令导入数据,并且设置好训练集和测试集。
  • 3、创建svm.LinearSVC分类器
  • 4、使用分类器clf的fit方法进行拟合训练
  • 5、使用分类器clf的predict方法对测试集数据进行预测
  • 6、对比测试集的预测结果和测试集的真实结果,并且使用clf的score方法获得预测准确率。

代码:

from sklearn import datasets  # 导入数据集模块
from sklearn import svm  # 导入支持向量机模块
from sklearn.model_selection import train_test_split  # 导入数据集拆分工具
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data  # 特征数据
y = iris.target  # 类别标签
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 创建线性支持向量机分类器
clf = svm.LinearSVC()
# 使用训练集训练分类器
clf.fit(X_train, y_train)
# 对测试集进行预测
y_predict = clf.predict(X_test)
# 对比预测结果和真实结果,并输出
comparison = ['预测值: ' + str(a) + ' 实际类别: ' + str(b) for a, b in zip(y_predict, y_test)]
for comp in comparison:print(comp)
# 输出分类器在测试集上的准确率
print(f'准确率:{clf.score(X_test, y_test)}')

 结果如图:

 2 KNN算法

K近邻(K-Nearest Neighbors,KNN)算法是一种基本的分类和回归方法。其基本思想是:对于新的样本数据,通过计算其与训练集中的样本的距离,然后选取距离最近的K个样本,根据这K个样本的类别(对于分类问题)或者值(对于回归问题),通过多数表决或者加权平均的方式确定新样本的类别或者值。

在KNN算法中,K是一个用户定义的常数,表示选择最近邻的数量。K的选择会直接影响到算法的性能,一般来说,K值越小,模型对噪声和孤立点的敏感度越高,而K值越大,模型的平滑程度越高,但也可能导致模型欠拟合。

KNN算法不需要显式的训练过程,而是将训练集中的数据保存起来,当需要对新的样本进行预测时,直接在保存的数据集中进行搜索和计算。因此,KNN算法是一种懒惰学习(lazy learning)算法。

KNN算法的优点包括简单易懂、易于实现以及在训练集较大的情况下表现良好。然而,KNN算法的缺点也很明显,主要包括对数据集的高度依赖、计算复杂度高、对于高维数据和大规模数据集的效率低下等。

题目描述:

使用K近邻算法,构建一个预测鸢尾花种类的模型。

要求

  1. 加载鸢尾花数据集
  2. 对数据集进行划分:参数test_size=0.2,random_state=2
  3. 构建KNN模型:调用sklearn中的函数进行构建
  4. 训练模型
  5. 预测模型:选取测试集中的第3组数据(下标为2)进行预测
  6. 输出得到的预测值和真实值

代码:

from sklearn import datasets  # 导入数据集模块# 加载鸢尾花数据集
iris = datasets.load_iris()
x = iris.data  # 特征数据
y = iris.target  # 类别标签# 划分数据集
from sklearn.model_selection import train_test_split
# 将数据集划分为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=2)# 构建模型
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)  # 使用K近邻算法,设置邻居数为3# 训练模型
knn.fit(x_train, y_train)# 模型预测
x_to_predict = x_test[2].reshape(1, -1)  # 选取测试集中的第3组数据(下标为2)进行预测
y_predicted = knn.predict(x_to_predict)# 输出预测值和真实值
print("预测值:" + str(y_predicted))  # 输出预测的类别
print("真实值:" + str(y_test[2]))  # 输出该样本在测试集中的真实类别

结果如图:

 3策树分类模型

决策树是一种基于树状结构的监督学习算法,用于解决分类和回归问题。在决策树中,每个内部节点表示一个特征属性上的判断条件,每个分支代表一个判断结果,每个叶子节点表示最终的分类结果或数值预测结果。

决策树的构建过程是一个递归地选择最佳特征进行分裂的过程,直到满足停止条件为止。在构建决策树时,一般会使用信息增益、基尼不纯度等指标来选择最佳的特征进行分裂,以使得每次分裂后的数据集更加纯净(即同一类别的样本更加集中)。

以下是决策树分类的一些重要知识点:

  1. 节点与叶子节点:决策树由节点和叶子节点组成。节点表示一个特征属性上的判断条件,叶子节点表示最终的分类结果。

  2. 分裂准则:在构建决策树时,需要确定节点分裂的准则。常用的准则包括信息增益、基尼不纯度等,用于选择最佳的特征进行分裂。

  3. 剪枝:为了避免过拟合,决策树需要进行剪枝操作。剪枝可以分为预剪枝(在构建树的过程中进行剪枝)和后剪枝(在构建完整棵树后再进行剪枝)。

  4. 特征选择:在每个节点上,需要选择最佳的特征进行分裂。常用的特征选择方法有信息增益、基尼指数、方差等。

  5. 决策树的优缺点

    • 优点:易于理解和解释,可视化效果好,能够处理数值型和类别型数据,对缺失值不敏感。
    • 缺点:容易过拟合,对噪声数据敏感,不稳定,需要进行剪枝操作。
  6. 集成学习中的应用:决策树常被用于集成学习方法中,如随机森林和梯度提升树。这些方法通过组合多个决策树来提高分类准确率和泛化能力。

题目描述:

对红酒数据集创建决策树分类模型,并输出每个特征的评分。

要求

  1. 从sklearn的datasets模块中导入load_wine 包,读取红酒数据集,
  2. 转换为DataFrame格式,将数据集划分为特征样本和标签样本,
  3. 使用该数据集建立决策树分类模型,树深设置为5,随机种子设置为1,其他值设置为默认值
  4. 将数据放入模型中进行训练,要求输出每个特征的评分。

代码:

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_wine# 加载红酒数据集
wine = load_wine()# 创建DataFrame格式的特征样本和标签样本
x_train = pd.DataFrame(data=wine["data"], columns=wine["feature_names"])  # 特征样本
y_train = wine["target"]  # 标签样本# 建立决策树分类模型
model = DecisionTreeClassifier(max_depth=5, random_state=1)
model.fit(x_train, y_train)  # 模型训练# 输出每个特征的评分(特征重要性)
print("每个特征的评分(特征重要性):")
for feature, importance in zip(wine["feature_names"], model.feature_importances_):print(f"{feature}:{importance:.4f}")  # 对每个特征列进行评分

相关文章:

机器学习知识点

1鸢尾花分类 鸢尾花分类问题是一个经典的机器学习问题,旨在根据鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度等特征,将鸢尾花分成三个品种:山鸢尾(setosa)、变色鸢尾(versicolor)和维吉尼亚…...

SQL注入利用学习-Union联合注入

联合注入的原理 在SQL语句中查询数据时,使用select 相关语句与where 条件子句筛选符合条件的记录。 select * from person where id 1; #在person表中,筛选出id1的记录如果该id1 中的1 是用户可以控制输入的部分时,就有可能存在SQL注入漏洞…...

zookeeper源码(12)命令行客户端

zkCli.sh脚本 这个命令行脚本在bin目录下: ZOOBIN"${BASH_SOURCE-$0}" ZOOBIN"$(dirname "${ZOOBIN}")" ZOOBINDIR"$(cd "${ZOOBIN}"; pwd)"# 加载zkEnv.sh脚本 if [ -e "$ZOOBIN/../libexec/zkEnv.sh&qu…...

深度学习的数学基础--Homework2

学习资料:https://www.bilibili.com/video/BV1mg4y187qv/?spm_id_from333.788.recommend_more_video.1&vd_sourced6b1de7f052664abab680fc242ef9bc1 神经网络的特点:它不是一个解析模型,它的储存在一堆参数里面(确定一个超平…...

什么是HW,企业如何进行HW保障?

文章目录 一、什么是HW二、HW行动具体采取了哪些攻防演练措施三、攻击方一般的攻击流程和方法四、企业HW保障方案1.建意识2.摸家底3.固城池4.配神器5.增值守 一、什么是HW 网络安全形势近年出现新变化,网络安全态势变得越来越复杂,黑客攻击入侵、勒索病…...

【Redis系列】Spring Boot 集成 Redis 实现缓存功能

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Flutter之Flex组件布局

目录 Flex属性值 轴向:direction:Axis.horizontal 主轴方向:mainAxisAlignment:MainAxisAlignment.center 交叉轴方向:crossAxisAlignment:CrossAxisAlignment 主轴尺寸:mainAxisSize 文字方向:textDirection:TextDirection 竖直方向排序:verticalDirection:VerticalDir…...

【Linux】TCP编程{socket/listen/accept/telnet/connect/send}

文章目录 1.TCP接口1.1socket文档 1.2listen拓:端口号8080 1.3accept拓:今天全局函数 1.4读写接口1.5telnet1.一个客户端2.两个客户端 1.6ulimit -a1.7常识回顾1.8connect1.9拓:客户端的ip和地址什么时候被分配?1.10拓&#xff1a…...

【WPF应用33】WPF基本控件-TabControl的详解与示例

在Windows Presentation Foundation(WPF)中,TabControl控件是一个强大的界面元素,它允许用户在多个标签页之间切换,每个标签页都可以显示不同的内容。这种控件在组织信息、提供选项卡式界面等方面非常有用。在本篇博客…...

[C语言]——动态内存管理

目录 一.为什么要有动态内存分配 二.malloc和free 1.malloc 2.free 三.calloc和realloc 1.calloc 2.realloc 3.空间的释放​编辑 四.常见的动态内存的错误 1.对NULL指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放⼀块…...

C++ 学习笔记

文章目录 【 字符串相关 】C 输入输出流strcpy_s() 字符串复制输出乱码 【 STL 】各个 STL 支持的常见方法 ? : 运算符switch case 运算符 switch(expression) {case constant-expression :statement(s);break; // 可选的case constant-expression :statement(s);break; //…...

本科生学深度学习一残差网络,解决梯度消失和爆炸

看到订阅的激励还在继续,今天写下残差网络 1、梯度爆炸和梯度消失 梯度爆炸和梯度消失是两种常见的问题,由神经网络的结构和参数初始化方式引起。它们都与深度神经网络中的反向传播过程相关。 梯度爆炸:这是指在反向传播期间,梯度逐渐增大并最终超出了有效范围。这通常发…...

初识SpringMVC

一、什么是MVC MVC是一种软件架构模式(是一种软件架构设计思想,不止Java开发中用到,其它语言也需要用到),它将应用分为三块: M:Model(模型)V:View&#xff08…...

【Leetcode】2009. 使数组连续的最少操作数

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个整数数组 n u m s nums nums 。每一次操作中,你可以将 n u m s nums nums 中 任意 一个元素替换成 任意 整数。 如果 n u m s nums nums 满足以下条件&…...

LeetCode-347. 前 K 个高频元素【数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)】

LeetCode-347. 前 K 个高频元素【数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)】 题目描述:解题思路一:哈希表记录出现次数,然后用最小堆取,因为每次都是弹出最小的,剩下的一定是K…...

K8S Deployment HA

文章目录 K8S Deployment HA1.机器规划2.前期准备2.1 安装ansible2.2 修改 hostname2.3 配置免密2.4 时间同步2.5 系统参数调整2.6 安装 Docker2.7 部署 HaproxyKeepalived 3. 部署 K8S3.1 安装 k8s命令3.2 k8s初始化3.3 添加其他master节点3.4 添加 Node节点3.5 安装 CNI3.6 查…...

【Linux】linux 在指定根目录下,查找wav文件并删除

要在Linux的指定根目录下查找.wav文件并删除它们,您可以使用find命令结合-exec选项来执行删除操作。请注意,这个操作是不可逆的,所以在执行之前请确保您知道自己在做什么,并且已经备份了重要数据。 以下是一个示例命令&#xff0…...

三、SpringBoot3 整合 SpringMVC

本章概要 实现过程web 相关配置静态资源处理自定义拦截器(SpringMVC 配置) 3.1 实现过程 创建程序引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www…...

设计模式之解释器模式(上)

解释器模式 1&#xff09;概述 1.定义 定义一个语言的文法&#xff0c;并且建立一个解释器来解释该语言中的句子&#xff0c;这里的“语言”是指使用规定格式和语法的代码。 2.结构图 3.角色 AbstractExpression&#xff08;抽象表达式&#xff09;&#xff1a;在抽象表达…...

[23年蓝桥杯] 买二赠一

题目描述 【问题描述】 某商场有 N 件商品&#xff0c;其中第 i 件的价格是 A i 。现在该商场正在进行 “ 买二 赠一” 的优惠活动&#xff0c;具体规则是&#xff1a; 每购买 2 件商品&#xff0c;假设其中较便宜的价格是 P &#xff08;如果两件商品价格一样&#xff0c; 则…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...