Python实现机器学习(下)— 数据预处理、模型训练和模型评估

前言:Hello大家好,我是小哥谈。本门课程将介绍人工智能相关概念,重点讲解机器学习原理机器基本算法(监督学习及非监督学习)。使用python,结合sklearn、Pycharm进行编程,介绍iris(鸢尾花)数据集,建立AI模型并评估其表现。本节课主要面向刚毕业高中生、大学生、硕士生等对AI行业充满向往的同学们!🌈
前期回顾:
Python实现机器学习(上)— 基础知识介绍及环境部署
目录
🚀1.数据预处理
💥💥1.1 iris数据集介绍
💥💥1.2 iris数据加载及展示
🚀2.模型训练
🚀3.模型评估

🚀1.数据预处理
💥💥1.1 iris数据集介绍
Iris (鸢尾花)数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含3类共150条记录,每类各50个数据,每条记录都有4项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。🌴
通俗地说,iris数据集属于监督式学习的应用,是用来给花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征,我们需要建立一个分类器,分类器可以通过样本的四个特征来判断样本属于山鸢尾、变色鸢尾还是维吉尼亚鸢尾(这三个名词都是花的品种)。🌱
采用iris数据集的原因主要是该数据集简单而且有代表性。🍄

💥💥1.2 iris数据加载及展示
具体代码如下:
# iris数据加载
from sklearn import datasets
iris = datasets.load_iris()# 展示iris数据
print(iris.data)
print(iris.feature_names)
print(iris.target_names)# 确认数据类型
print(type(iris.data))# 确认维度
print(iris.data.shape)
运行结果如图所示:

结果说明:
🍀(1)每行数据为一个样本;
🍀(2)每行数据代表不同样本同一属性下对应的数值;
🍀(3)每列数据对应的属性值(图中最后一行);
该项目归根结底为一个分类问题,是对应结果为类别(非连续性)的监督式学习问题,每个预测的数值即是结果数据(或称为:目标、输出、标签)。
进行数据预处理的四个关键点:
🍀(1)区分开属性数据和结果数据;
🍀(2)属性数据和结果数据都是可量化的;
🍀(3)运算过程中,属性数据和结果数据的类型都是Numpy数组;
🍀(4)属性数据和结果数据的维度是对应的(由结果可知,数据为150行4列)。
🚀2.模型训练
本项目的本质为一个分类问题,即根据数据集目标的特征或者属性,划分到已有的类别中。常用的分类算法有:K近邻算法(KNN)、逻辑回归、决策树、朴素贝叶斯等。🍃
本项目采用的是KNN算法。KNN(k-NearestNeighbor)又被称为近邻算法,它的核心思想是:物以类聚,人以群分。✅
假设一个未知样本数据x需要归类,总共有ABC三个类别,那么离x距离最近的有k个邻居,这k个邻居里有k1个邻居属于A类,k2个邻居属于B类,k3个邻居属于C类,如果k1>k2>k3,那么x就属于A类,也就是说x的类别完全由邻居来推断出来。🌳
具体代码如下:
# 确认维度
#print(iris.data.shape)# 样本数据与结果分别赋值到“x”和“y”
x = iris.data
y = iris.target# 确认样本和输出数据维度
#print(x.shape)
#print(y.shape)# 建模四步骤
"""
1.调用需要使用的模型类
2.模型初始化(创建一个模型实例)
3.模型训练
4.模型预测
"""
# 创建实例
knn = KNeighborsClassifier(n_neighbors=1)
# 模型训练
knn.fit(x,y)
# 模型预测
print(knn.predict([[1,2,3,4]]))
运行结果如图所示:

结果表示第3类。🎈🎈🎈
🚀3.模型评估
在模型评估的时候,必须保证已将数据分为训练集和测试集,使用训练集数据进行模型的训练,使用测试集数据进行预测,从而评估模型表现。✅
分离训练集和测试集的作用:
🍀(1)可以实现在不同的数据集上进行模型训练和预测;
🍀(1)建立数学模型的目的是对新数据的预测,基于测试数据计算的准确率能够更有效地评估模型表现。
具体代码如下所示:
# iris数据加载
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
iris = datasets.load_iris()# 展示iris数据
#print(iris.data)
#print(iris.feature_names)
#print(iris.target_names)# 确认数据类型
#print(type(iris.data))# 确认维度
#print(iris.data.shape)# 样本数据与结果分别赋值到“x”和“y”
x = iris.data
y = iris.target# 确认样本和输出数据维度
#print(x.shape)
#print(y.shape)# 建模四步骤
"""
1.调用需要使用的模型类
2.模型初始化(创建一个模型实例)
3.模型训练
4.模型预测
"""
# 创建实例
#knn = KNeighborsClassifier(n_neighbors=1)
# 模型训练
#knn.fit(x,y)
# 模型预测
#print(knn.predict([[1,2,3,4]]))knn5 = KNeighborsClassifier(n_neighbors=5)
knn5.fit(x,y)
y_pred = knn5.predict(x)
#print(y_pred)
#print(y_pred.shape)# 准确率:正确预测的比例
# 用于评估分类模型的常用指标
# 准确率计算
print(accuracy_score(y,y_pred))
运行结果如图所示:

通过以上案例可知,人工智能就其本质而言,是机器对人的思维信息过程的模拟,让它能像人一样思考。根据输入信息进行模型结构、权重更新,以实现最终优化。🌟🌟🌟

相关文章:
Python实现机器学习(下)— 数据预处理、模型训练和模型评估
前言:Hello大家好,我是小哥谈。本门课程将介绍人工智能相关概念,重点讲解机器学习原理机器基本算法(监督学习及非监督学习)。使用python,结合sklearn、Pycharm进行编程,介绍iris(鸢尾…...
树结构处理,list和tree互转
1、实体类 package com.iot.common.test.entity;import lombok.Data;import java.util.List;/*** description:* author:zilong* date:2023/9/8*/ Data public class Node {//idprivate String id;//父节点idprivate String pId;//名称private String name;//编码private Stri…...
可视化大屏设计模板 | 主题皮肤(报表UI设计)
下载使用可视化大屏设计模板,减少重复性操作,提高报表制作效率的同时也确保了报表风格一致,凸显关键数据信息。 软件:奥威BI系统,又称奥威BI数据可视化工具 所属功能板块:主题皮肤上传下载(数…...
Spring Boot + Vue的网上商城之客服系统实现
Spring Boot Vue的网上商城之客服系统实现 在网上商城中,客服系统是非常重要的一部分,它能够为用户提供及时的咨询和解答问题的服务。本文将介绍如何使用Spring Boot和Vue.js构建一个简单的网上商城客服系统。 思路 在本教程中,我们学习了…...
RabbitMQ: return机制
1. Return机制 Confirm只能保证消息到达exchange,无法保证消息可以被exchange分发到指定queue。 而且exchange是不能持久化消息的,queue是可以持久化消息。 采用Return机制来监听消息是否从exchange送到了指定的queue中 2.Java的实现方式 1.导入依赖 &l…...
记录一些奇怪的报错
错误:AttributeError: module distutils has no attribute version 解决方案: 第一步:pip uninstall setuptools 第二步:conda install setuptools58.0.4 错误:ModuleNotFoundError: No module named _distutils_hac…...
Ubuntu 安装redis数据库,并设置开机自启动
1、下载安装包 wget http://download.redis.io/releases/redis-7.0.9.tar.gz 2、解压 tar -zxvf redis-7.0.9.tar.gz 3、复制到解压缩的包移动到/usr/local/ sudo mv ./redis-7.0.9 /usr/local/ 4、编译 cd /usr/local/redis-7.0.9 sudo make 5、测试: 时间会比较长࿰…...
基于开源模型搭建实时人脸识别系统(五):人脸跟踪
继续填坑,之前已经讲了人脸检测,人脸识别实战之基于开源模型搭建实时人脸识别系统(二):人脸检测概览与模型选型_开源人脸识别模型_CodingInCV的博客-CSDN博客,人脸检测是定位出画面中人脸的位置,…...
VUE | 配置环境变量
本篇目录 1. 创建开发环境配置文件2. 创建正式环境配置文件3. 在代码中访问环境变量4. 加载环境变量 在 Vue 项目中是使用 .env 文件来定义和使用不同的环境变量,这些文件在 Vue 项目根目录下创建。推荐有几种环境就创建几个 .env 文件,下面就开发环境和…...
Dynamic-TP入门初探
背景 在使用线程池的过程中,会出现一些痛点: 代码中创建了一个线程池,但是不知道那几个核心参数设置多少比较合适。凭经验设置参数值,上线后发现需要调整,改代码重新发布服务,非常麻烦。线程池相对开发人…...
Git的基本操作:远程操作
7 Git的远程操作 远程操作主要是指,在不同的仓库之间进行提交和代码更改。是一个明显的对等的分布式系统。其中本地个仓库与远程仓库,不同的远程仓库之间都可以建立这种关系。这种关系之间的操作主要有pull和push。 远程仓库 创建SSH key远程仓库和本…...
【IOC,AOP】spring的基础概念
IOC 控制反转 对象的创建控制权转交给外部实体,就是控制反转。外部实体便是IOC容器。其实就是以前创建java对象都是我们new一下,现在我们可以把这个new交给IOC容器来做,new出来的对象也会交由IOC容器来管理。这个new出来的对象则称为Bean。 …...
安全实战 | 怎么用零信任防范弱密码?
防范弱密码,不仅需要提升安全性,更需要提升用户体验。 比如在登录各类业务系统时,我们希望员工登录不同系统不再频繁切换账号密码,不再需要3-5个月更换一次密码,也不再需要频繁的输入、记录、找回密码。 员工所有的办…...
1-4 AUTOSAR方法论
总目录——AUTOSAR入门详解AUTOSAR入门详解目录汇总:待续中。。。https://xianfan.blog.csdn.net/article/details/132818463 目录 一、前言 二、方法论 三、单个ECU开发流程 一、前言 汽车生产供应链上有以下角色:OEM、TIER1、TIER2,其主…...
MFC C++ 数据结构及相互转化 CString char * char[] byte PCSTR DWORE unsigned
CString: char * char [] BYTE BYTE [] unsigned char DWORD CHAR:单字节字符8bit WCHAR为Unicode字符:typedef unsigned short wchar_t TCHAR : 如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,…...
多版本CUDA安装切换
系统中默认的安装CUDA为12.0,现在需要在个人用户下安装CUDA11.7。 CUDA 下载 CUDA官网下载 安装 Log file not open.Segmentation fault (core dumped)错误 将/tmp/cuda-installer.log删除即可。重新安装,去掉驱动的安装,设置Toolkit的安装…...
sqlserver union和union all 的区别
1.首先在数据库编辑1-40数字; 2.查询Num<30的数据,查询Num>20 and Num<40的数据,使用union all合并; 发现30-20的数字重复了,可见union all 不去重; 3.查询Num<30的数据,查询Num…...
Matlab 如何计算正弦信号的幅值和初始相角
Matlab 如何计算正弦信号的幅值和初始相角 1、概述 如果已知一个正弦信号的幅值,在FFT后频域上该信号谱线的幅值与设置值不同,而是大了许多;如果不知道某一正弦信号的幅値,又如何通FFT后在頻域上求出该正弦信号的幅值呢? 2、…...
华为hcie认证培训报班培训好?还是自学好
华为HCIE认证培训报班培训和自学各有优势。 培训的优势: 系统性学习:培训课程通常会系统地涵盖HCIE认证所需的各个知识点,帮助你建立全面的理论体系。指导与互动:培训中,能够与资深讲师互动,及时解答疑惑…...
ASP.NET+sqlserver通用电子病历管理系统
一、源码描述 这是一款简洁十分美观的ASP.NETsqlserver源码,界面十分美观,功能也比较全面,比较适合 作为毕业设计、课程设计、使用,感兴趣的朋友可以下载看看哦 二、功能介绍 该源码功能十分的全面,具体介绍如下&…...
量子行走:从理论到Python实现——量子力学原理与Qubit物理
目录 2. 量子力学原理与Qubit物理 2.1 量子比特的物理实现 2.1.1 双能级系统建模 2.1.2 布洛赫球表示与可视化 2.2 叠加与纠缠现象 2.2.1 量子叠加原理 2.2.2 量子纠缠理论 2.3 量子测量与退相干 2.3.1 测量公设的实现 2.3.2 噪声与退相干机制 2. 量子力学原理与Qubi…...
PCB设计新手必看:从零开始掌握PCB设计全流程
1. PCB设计入门:从零开始的完整指南 刚接触PCB设计时,我完全被各种专业术语和复杂流程搞懵了。直到自己动手做了几块板子,才发现其实只要掌握正确的方法,PCB设计并没有想象中那么难。这篇文章就是把我踩过的坑和积累的经验&#x…...
从“高危论文”到“安心提交”:百考通双降技术,为真实思考护航
在一个人工智能可以生成万字论文的时代,最讽刺的现实不是机器冒充人类, 而是人类因写得太像“人写的论文”,被当作机器。 2026年,无数高校学子正陷入一场无声的困境: 你没用AI,却因逻辑清晰被标记…...
Protege新手避坑指南:搞懂‘类’、‘属性’和‘推理’到底怎么用(附常见错误排查)
Protege新手避坑指南:搞懂‘类’、‘属性’和‘推理’到底怎么用(附常见错误排查) 第一次打开Protege时,满屏的术语和复杂的界面可能会让你感到不知所措。作为一款强大的本体编辑工具,Protege确实有着陡峭的学习曲线。…...
3步搞定:如何让VR视频在普通屏幕上完美播放
3步搞定:如何让VR视频在普通屏幕上完美播放 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirrors/vr/V…...
终极文档处理方案:AnythingLLM如何实现PDF/TXT/DOCX全格式智能解析
终极文档处理方案:AnythingLLM如何实现PDF/TXT/DOCX全格式智能解析 【免费下载链接】anything-llm 这是一个全栈应用程序,可以将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便任何大语言模型&am…...
OpenClaw 超级 AI 实战专栏【补充内容】AI开发实操:减少Token用量、提升模型效率的8个核心技巧(附代码)
目录 一、核心前提:理解Token消耗的关键场景 二、6种优化方案(附案例+代码) 方案1:精简Prompt(最易落地,立竿见影) 核心思路 应用案例 代码实现 方案2:上下文窗口裁剪(避免历史信息冗余) 核心思路 应用案例 代码实现 方案3:输入文本摘要压缩(批量处理场景…...
SQLancer:自动化数据库测试的效能革命
SQLancer:自动化数据库测试的效能革命 【免费下载链接】sqlancer Automated testing to find logic and performance bugs in database systems 项目地址: https://gitcode.com/gh_mirrors/sq/sqlancer 在数据库系统的开发与维护中,逻辑缺陷和性能…...
华为MatePad 11鸿蒙2.0平板变身编程本:保姆级AidLux+VSCode配置避坑指南
华为MatePad 11鸿蒙平板编程环境搭建实战:AidLux与VSCode高效配置指南 在移动办公与碎片化学习成为主流的今天,将华为MatePad 11这样的高性能平板转变为便携式编程工作站,正成为越来越多开发者的现实需求。鸿蒙系统2.0的分布式能力与AidLux的…...
[路径保护]解决中文路径乱码:从名称错乱到Unicode支持的实践指南
[路径保护]解决中文路径乱码:从名称错乱到Unicode支持的实践指南 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文(中文)命名 项…...
