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

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、测试: 时间会比较长&#xff0…...

基于开源模型搭建实时人脸识别系统(五):人脸跟踪

继续填坑,之前已经讲了人脸检测,人脸识别实战之基于开源模型搭建实时人脸识别系统(二):人脸检测概览与模型选型_开源人脸识别模型_CodingInCV的博客-CSDN博客,人脸检测是定位出画面中人脸的位置&#xff0c…...

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方式&#xff0c…...

多版本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数字&#xff1b; 2.查询Num<30的数据&#xff0c;查询Num>20 and Num<40的数据&#xff0c;使用union all合并&#xff1b; 发现30-20的数字重复了&#xff0c;可见union all 不去重&#xff1b; 3.查询Num<30的数据&#xff0c;查询Num…...

Matlab 如何计算正弦信号的幅值和初始相角

Matlab 如何计算正弦信号的幅值和初始相角 1、概述 如果已知一个正弦信号的幅值&#xff0c;在FFT后频域上该信号谱线的幅值与设置值不同&#xff0c;而是大了许多&#xff1b;如果不知道某一正弦信号的幅値&#xff0c;又如何通FFT后在頻域上求出该正弦信号的幅值呢? 2、…...

华为hcie认证培训报班培训好?还是自学好

华为HCIE认证培训报班培训和自学各有优势。 培训的优势&#xff1a; 系统性学习&#xff1a;培训课程通常会系统地涵盖HCIE认证所需的各个知识点&#xff0c;帮助你建立全面的理论体系。指导与互动&#xff1a;培训中&#xff0c;能够与资深讲师互动&#xff0c;及时解答疑惑…...

ASP.NET+sqlserver通用电子病历管理系统

一、源码描述 这是一款简洁十分美观的ASP.NETsqlserver源码&#xff0c;界面十分美观&#xff0c;功能也比较全面&#xff0c;比较适合 作为毕业设计、课程设计、使用&#xff0c;感兴趣的朋友可以下载看看哦 二、功能介绍 该源码功能十分的全面&#xff0c;具体介绍如下&…...

wireshark通常无法抓取交换机所有端口报文

Wireshark 是一种网络分析工具&#xff0c;它通常在计算机的网络接口上进行数据包捕获和分析。然而&#xff0c;Wireshark 默认情况下无法直接捕获交换机所有端口的报文。 交换机是一种网络设备&#xff0c;它在局域网内转发数据包&#xff0c;根据目的MAC地址将数据包仅发送到…...

猫头虎的技术笔记:Spring Boot启动报错解决方案

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

Istio网关流量转发

摘要 Istio网关转发到后端服务的步骤&#xff0c;可以按照以下详细说明进行操作&#xff1a; 配置Istio Sidecar&#xff1a;确保目标后端服务已经部署并成功运行&#xff0c;并为其启用Istio Sidecar。Istio Sidecar负责在Pod中注入Istio代理&#xff0c;以便实现流量控制和…...

阿里云acp云计算认证考试科目有哪些?

阿里云ACP云计算认证考试科目包括以下内容&#xff1a; 阿里云云计算基础知识&#xff1a;包括云计算的定义、特点、服务模式、部署模式、虚拟化技术等相关知识。阿里云产品&#xff1a;包括阿里云ECS、RDS、SLB、OSS、DNS等核心产品的架构、使用方法、优化技巧等相关知识。云…...

8、Spring security配置放过的请求又被拦截了

项目场景&#xff1a; 在项目中有一些接口需要放开spring security拦截&#xff0c;配置方法如下&#xff0c;其中permitUrls为需要放过的请求路径。 Override public void configure(WebSecurity web) {web.ignoring().antMatchers(permitUrls); }问题描述 实际请求地址&am…...

4.后端·新建子模块与开发(传统模式)

文章目录 学习资料新建子模块与各层查询entity的列表entitymapper层service层controller层 测试 学习资料 https://www.bilibili.com/video/BV13g411Y7GS?p8&spm_id_frompageDriver&vd_sourceed09a620bf87401694f763818a31c91e b站的学习视频 新建子模块与各层 在r…...

.netcore 连接 apache doris

apache doris 兼容mysql协议&#xff1b;所以我们在.netcore项目中&#xff0c;可以使用Mysql的驱动 dotnet add package MySqlConnector 测试代码&#xff1a; [HttpGet]public async Task<string> Get2(){//打开连接await using var connection new MySqlConnectio…...

【C语言】探讨常见自定义类型的存储形式

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该文章将探讨结构体&#xff0c;位段&#xff0c;共用体的存储形式。 目录&#xff1a; &#x1f30d;结构体内存对齐✉…...

NLP(六十九)智能文档问答助手升级

本文在笔者之前研发的大模型智能文档问答项目中&#xff0c;开发更进一步&#xff0c;支持多种类型文档和URL链接&#xff0c;支持多种大模型接入&#xff0c;且使用更方便、高效。 项目介绍 在文章NLP&#xff08;六十一&#xff09;使用Baichuan-13B-Chat模型构建智能文档中…...

如何使用SQL系列 之 如何在MySQL中使用索引

引言 关系数据库可用于处理任何大小的数据&#xff0c;包括包含数百万行的大型数据库。结构化查询语言(SQL)提供了一种基于特定条件在数据库表中查找特定行的简洁而直接的方法。随着数据库变得越来越大&#xff0c;在其中找到特定的行变得越来越困难&#xff0c;就像大海捞针一…...

网站开发工作平时做什么/爱站网挖掘关键词

简介&#xff1a; 挺不错的一个简约导航模板 网盘下载地址&#xff1a; http://kekewl.org/XLCQkWrvFdi0 图片&#xff1a;...

网站服务器免费申请/seo优化在哪里学

首先点击IDEA左上角File Setting-->Editor-->Color Scheme -->Language Defaults Comments目录下有以下三项&#xff0c;分别对应三种注释 Block comment 多行注释 ———————— /* */Line comment 单行注释 —————————//Doc Comment 文档文件———…...

wish跨境电商平台/seopc流量排行榜企业

方法一 通常使用socket.gethostname()方法即可获取本机IP地址&#xff0c;但有时候获取不到&#xff08;比如没有正确设置主机名称&#xff09; import socket#获取计算机名称hostnamesocket.gethostname()#获取本机IPipsocket.gethostbyname(hostname)print(ip) 方法二&#x…...

最火网站排名/百度灰色关键词排名代做

1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具&#xff0c;拥有自己独特的语法以及一个独立的处理引擎&#xff0c;效率上可能不如str自带的方法&#xff0c;但功能十分强大。得益于这一点&#xff0c;在提供了正则…...

网站怎么做伪静态iis7.0/关键词优化顾问

操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具&#xff1a;Android studio 2.3.3 这两天一直在调试一个BUG&#xff0c;具体为通过 NativeC 来处理上层Android Java传递的字节数组 byte[]。通过查阅 Oracle手册 确认JNI 与底层 C 或者 CPP 进行交互的细节。 从Java传递数组…...

上海网站设计工作室/培训心得体会

也许你曾遇到过这样的情况运行类似的代码StreamReader srnewStreamReader("Test.txt");运行时会提示&#xff1a;"Could not find file C:"windows"system32"Test.txt".这就是路径不对造成的幸好在asp.net的request对象中有许多与路径相关的…...