机器学习01 -Hello World(对鸢尾花(Iris Flower)进行训练及测试)

什么是机器学习?

机器学习是一种人工智能(AI)的子领域,它探索和开发计算机系统,使其能够从数据中学习和改进,并在没有明确编程指令的情况下做出决策或完成任务。

传统的程序需要程序员明确编写指令来告诉计算机如何执行特定任务。但是,机器学习采用不同的方法。它允许计算机通过分析大量的数据来发现模式、关系和规律,并根据这些发现做出预测和决策。

机器学习系统的主要特点是可以通过反复迭代来改进自己的性能。这是通过使用数据集进行训练实现的。训练数据集包含一组示例,每个示例都有相应的输入和输出。机器学习算法使用这些示例来学习如何将输入与输出相关联,从而使其能够对新的、未见过的数据做出合理的预测或决策。

机器学习可以应用于各种领域,如图像识别、自然语言处理、推荐系统、医疗诊断、金融预测等。它在现代科技和业务中扮演着越来越重要的角色,并在很多领域取得了显著的进展。

机器学习的主要类型

监督学习(Supervised Learning):在监督学习中,算法从带有标签的训练数据集中学习。每个训练样本都包含输入和对应的输出(标签)。算法的目标是学习一个映射函数,可以将输入映射到正确的输出。例如,给定一组包含图片和相应标签的数据,监督学习算法可以学习识别图片中的对象。

无监督学习(Unsupervised Learning):无监督学习中,算法处理没有标签的数据。它的目标是发现数据中的结构、模式或关联。这类算法通常用于聚类、降维、异常检测等任务。例如,通过无监督学习,可以将相似的用户聚集在一起,以便更好地推荐产品或服务。

强化学习(Reinforcement Learning):强化学习涉及到一个智能体(agent)在一个动态环境中采取行动,并根据其行动获得奖励或惩罚。智能体的目标是通过与环境不断交互,最大化累积奖励。强化学习在许多自动化系统中发挥着重要作用,如自动驾驶、游戏智能体等。

半监督学习(Semi-Supervised Learning):这是介于监督学习和无监督学习之间的一种方法。它利用少量有标签的数据和大量无标签的数据进行训练,以提高算法的性能。

深度学习(Deep Learning):深度学习是机器学习的一个分支,专注于使用人工神经网络进行学习。这些神经网络由许多层(深层)组成,可以自动从数据中学习特征表达,从而使其在图像识别、自然语言处理等任务中表现出色。

什么是数据集?

数据集是机器学习和统计学中的一个重要概念,它是一组有序的数据样本的集合。每个数据样本由一组特征(也称为特征变量)组成,以及一个相应的目标变量(也称为标签或输出),用来描述数据的某种属性或特征。

在机器学习任务中,数据集通常被用于训练和评估模型。数据集可以分为以下几种类型:

训练数据集(Training Dataset):训练数据集用于训练机器学习模型。它包含多个数据样本,每个样本都有一组特征和对应的目标变量(如果是监督学习任务)。模型使用训练数据集来学习特征与目标变量之间的关系,以便进行预测或分类。

验证数据集(Validation Dataset):验证数据集用于模型选择和调优。在训练过程中,模型通过与训练数据集的学习来调整参数,但为了避免过拟合(overfitting)的问题,需要使用验证数据集来验证模型的性能。验证数据集不参与模型训练,它仅用于评估模型在未见过数据上的表现。

测试数据集(Test Dataset):测试数据集用于评估最终模型的性能。当模型经过训练和调优后,使用测试数据集来进行最终的性能评估。测试数据集是模型在整个训练过程中从未见过的数据,因此可以提供对模型在真实场景中的泛化能力的估计。

数据集的质量和规模对于机器学习的结果至关重要。大规模、高质量的数据集通常能够帮助机器学习模型更好地学习数据中的规律和特征,从而获得更好的预测能力。

在现实世界中,数据集可以是从各种来源收集而来的,包括传感器数据、数据库记录、图像、文本等。数据集的构建和准备是机器学习项目中的关键步骤之一,它直接影响着模型的性能和实用性。

讲点白话:假如模型就是你家的小孩,现在你要让他学会辨别动物,然后你拿了一个动物图册,那这个动物图册就是数据集

鸢尾花数据集概述

机器学习包sklearn 中集成了各种各样的数据集,其中就包括鸢尾花数据集(Iris)是最简单的分类任务数据集。

鸢尾花数据集共有3个分类类别,分别是山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)

该数据集共有150个样本,5个变量(4个特征变量,1个类别变量)。iris是鸢尾植物,4个特征分别对应萼片和花瓣的长和宽。如下表:

在这里插入图片描述

理解数据集

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

iris在机器学习中的应用:

属于监督式学习应用:可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。

这是机器学习中经典案例,简单而具有代表性。

from sklearn import datasets  # 导入sklearn中集成的数据集
# iris数据集加载
iris = datasets.load_iris()
target = iris['target_names'] # 标签的名称
print("鸢尾花标签名称:\n", target)
print("鸢尾花特征:\n", iris.data[:5])  # print前5个特征
print("鸢尾花特征的维度:\n", iris.data.shape)
print("鸢尾花标签:\n", iris.target)
print("鸢尾花标签的维度:\n", iris.target.shape)

运行结果如下:

鸢尾花标签名称:['setosa' 'versicolor' 'virginica']
鸢尾花标签:0 代表setosa,1代表versicolor,2 代表virginica[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 2]
鸢尾花特征:[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2]]
鸢尾花特征的维度:(150, 4)
鸢尾花标签:
也就是种类标识[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 22 2]
鸢尾花标签的维度:(150,)

从输出结果可以看到,类别标签共分为三类,前面50个类标位0,中间50个类标位1,后面50个类别为2。

分别代表为山鸢尾、杂色鸢尾、维吉尼亚鸢尾。

可以从官网地址下载这个数据集

http://archive.ics.uci.edu/dataset/53/iris

利用knn模型进行预测结果

什么是knn模型?

KNN(K-Nearest Neighbors,K近邻算法)是一种简单而常用的机器学习算法,用于分类和回归任务。它属于一类称为“基于实例的学习”或“懒惰学习”的算法,因为它不像其他算法(例如神经网络或决策树)那样训练模型来学习数据的规律,而是在测试时通过寻找最近的邻居来做出预测。

工作原理:

训练阶段:KNN算法的训练阶段仅仅是将训练样本数据保存起来,没有显式的训练过程。算法将训练样本和其对应的标签存储在内存中。

预测阶段:在预测时,当需要对一个新的数据样本进行分类或回归时,KNN算法会做以下步骤: a.
计算新样本与所有训练样本之间的距离(通常使用欧氏距离或曼哈顿距离等)。 b. 选择与新样本距离最近的K个训练样本(这就是“K近邻”中的K)。
c. 对于分类任务,通过投票机制来决定新样本的类别。即,K个最近邻中出现次数最多的类别即为新样本的预测类别。 d.
对于回归任务,对K个最近邻的目标值进行平均,得到新样本的预测值。

参数K的选择很重要,过小的K值可能会使模型过于复杂和容易受到噪声的影响,而过大的K值可能会导致模型过于简单,忽略了数据的细节。
优点:
简单、直观,易于理解和实现。 适用于多类别的分类问题。 对数据分布没有过多假设,可以适用于各种数据类型。
缺点:

预测时的计算成本较高,特别是对于大规模数据集。 对于高维数据或特征空间较大的数据集,效果可能不如其他算法好。
对于不平衡数据集,可能会受到少数类别的影响较大。

KNN是一个基本的机器学习算法,通常用于起步学习或作为基准模型。在实际应用中,可以根据数据集的规模和特点选择合适的算法

莺尾花预测

1.获取数据集
2.数据基本处理
3.特征工程
4.机器学习(模型训练)
5.模型评估

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier# 1.获取数据集
iris = load_iris()# 2.数据基本处理
# x_train,x_test,y_train,y_test为训练集特征值、测试集特征值、训练集目标值、测试集目标值
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)# 3、特征工程:标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)# 4、机器学习(模型训练)
estimator = KNeighborsClassifier(n_neighbors=9)
estimator.fit(x_train, y_train)# 5、模型评估
# 方法1:比对真实值和预测值
y_predict = estimator.predict(x_test)
print("预测结果为:\n", y_predict)
print("比对真实值和预测值:\n", y_predict == y_test)
# 方法2:直接计算准确率
score = estimator.score(x_test, y_test)
print("准确率为:\n", score)

运行结果:

预测结果为:[0 2 1 2 1 1 1 1 1 0 2 1 2 2 0 2 1 1 1 1 0 2 0 1 2 0 2 2 2 2]
比对真实值和预测值:[ True  True  True  True  True  True  True False  True  True  True  TrueTrue  True  True  True  True  True False  True  True  True  True  TrueTrue  True  True  True  True  True]
准确率为:0.9333333333333333

我们也可以根据上面的训练随便推理一组数据看看

#预测某种花的品种

ourData = estimator.predict([[1,2,3,4]])
print("预测某种花的品种:\n", ourData)

1,2,3,4分别代表 花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征(前4列)
运行结果:
[2]
从结果中预测的是 维吉尼亚鸢尾

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

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

相关文章

QT 视图(view)模型(model)汇总

QStringListModel和QListView UI界面 widget头文件 #ifndef WIDGET_H #define WIDGET_H#include <QStringList> #include <QStringListModel> #include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : publi…

使用AOP切面对返回的数据进行脱敏的问题

1.注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** Author: xiaoxin* Date: 2023/7/21 17:15*/ Retention(RetentionPolicy.RUNTIME) Targe…

python文件处理方式

python文件处理方式 file open(D:\pythonText.txt, r, encodingUTF-8) print(file) # <_io.TextIOWrapper nameD:\\pythonText.txt moder encodingUTF-8> print(type(file)) # <class _io.TextIOWrapper>读取文件 file open(D:\pythonText.txt, r, encodingU…

3d软件动物生活习性仿真互动教学有哪些优势

软体动物是一类广泛存在于海洋和淡水环境中的生物&#xff0c;其独特的形态和生活习性给学生带来了新奇和有趣的学习主题&#xff0c;为了方便相关专业学科日常授课教学&#xff0c;web3d开发公司深圳华锐视点基于真实的软体动物&#xff0c;制作软体动物3D虚拟展示系统&#x…

【visual studio2019】如何打开即时窗口

在 Visual Studio2019 中打开即时窗口&#xff0c;有两种方法&#xff1a; 1、可以通过“调试”菜单&#xff0c;然后选择“窗口”下的“即时窗口”选项 2、直接使用快捷键“Ctrl Alt I” 此时即时窗口将显示在 Visual Studio2019 的底部。在即时窗口中&#xff0c;可以执…

Java读取及生成pb文件并转换jsonString

Java读取及生成pb文件并转换jsonString 1. 效果图2. 原理2.1 Protocol Buffers是什么2.2 支持的语言2.3 根据.proto生成.java2.4 初始化及构建pb&#xff0c;读取&#xff0c;转jsonString 3. 源码3.1 address.proto3.2 PbParseUtil.java 参考 读取pb及生成pb文件pb文件转换jso…

stable diffusion

一&#xff1a;安装。 stable diffusion 安装和使用全教程 - 知乎 Stable Diffusion安装 - 知乎 环境安装&#xff1a; 1&#xff1a;python 3.10安装。 Download Python | Python.org 切记要安装3.10版本&#xff0c;因为Stable diffusion是用3.10版本编写的&#xff0c;所…

【C++】 哈希

一、哈希的概念及其性质 1.哈希概念 在顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。比如顺序表需要从第一个元素依次向后进行查找&#xff0c;顺序查找时间复杂度为…

VS Code环境配置问题

VS Code 环境配置问题 文章目录 VS Code 环境配置问题配置 C问题解决不乱码只显示结果避免闪退&#xff0c;中文乱码 配置 Java下载 JDKJDK 环境配置安装插件 配置 C 跟着官网教程&#xff08;英文版&#xff09;和其他博客配置了一遍&#xff0c;却遇到了很多小问题&#xff…

MyBatis源码剖析之延迟加载源码细节

文章目录 什么是延迟加载&#xff1f;实现局部延迟加载全局延迟加载 延迟加载原理实现延迟加载原理&#xff08;源码剖析)Setting 配置加载&#xff1a;延迟加载代理对象创建注意事项 什么是延迟加载&#xff1f; 在开发过程中很多时候我们并不需要总是在加载⽤户信息时就⼀定…

Android 开发代码规范

一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如&#xff0c;tab缩进4个空格&#xff0c;或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…

【100天精通python】Day20:文件及目录操作_os模块和os.psth模块,文件权限修改

目录 专栏导读 1 文件的目录操作 os模块的一些操作目录函数​编辑 os.path 模块的操作目录函数 2 相对路径和绝对路径 3 路径拼接 4 判断目录是否存在 5 创建目录、删除目录、遍历目录 专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12…

Mysql-MVCC 并发版本控制

参考链接&#xff1a;一文读懂MVCC实现原理_Nicolos_Z的博客-CSDN博客 1.总述&#xff1a; MVCC 主要是InnoDB解决数据库事务读写&#xff0c;导致的脏读、重复读问题的处理方法。通过快照读的方式&#xff0c;提高数据库并发查询的能力。 2.MVCC的实现 实现MVCC主要用到了…

在OK3588板卡上部署模型实现人工智能OCR应用

一、主机模型转换 我们依旧采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 安装rknn-toolkit2&#xff08;该工具不能在OK3588板卡上完成模型转换&#xff09; git clone https://github.com/rockchip-linux/rknn-to…

金蝶云星空任意文件读取漏洞复现(0day)

0x01 产品简介 金蝶云星空是一款云端企业资源管理&#xff08;ERP&#xff09;软件&#xff0c;为企业提供财务管理、供应链管理以及业务流程管理等一体化解决方案。金蝶云星空聚焦多组织&#xff0c;多利润中心的大中型企业&#xff0c;以 “开放、标准、社交”三大特性为数字…

ChatGPT伦理挑战:人工智能的权利与责任

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

HCIP期中实验

考试需求 1 、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2 、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3 、整张拓扑均使用私网地址进行配置。 4 、整张网络中&#xff0c;运行 OSPF 协议…

实时协作:团队效率倍增的关键

实时协作是指团队在当前时刻共同完成项目的能力。无论是否使用技术&#xff0c;都能实现这一点。然而&#xff0c;随着远程工作的盛行&#xff0c;安全的协作工具被用来让团队成员在项目和一般业务之间保持联系和同步。 传统协作与实时协作的区别 两种类型的协作最明显的区别…

uniapp 微信小程序 navigationBarBackgroundColor 标题栏颜色渐变

大体思路&#xff1a; 第一步&#xff1a;“navigationStyle”:“custom” 第二步&#xff1a; template内 重点&#xff1a;给view添加ref“top” 第三步&#xff1a;添加渐变色样式 1、pages.json {"path" : "pages/user/user","style" : …

【玩转Linux】Linux输入子系统简介

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…