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))

运行结果如图所示: 

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


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

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

相关文章

时间序列论文-聚类和异常检测(二)

同样摘自知乎的回答:https://www.zhihu.com/question/29507442/answer/1212624591?utm_id0 正巧之前做过时间序列 的异常检测项目,这里介绍几种尝试过的方法,也算是抛砖引玉 吧,欢迎大家讨论交流~ 背景与定义 时间序列异常 检测…

【C++ • STL • 力扣】详解string相关OJ

文章目录 1、仅仅翻转字母2、字符串中的第一个唯一字符3、字符串里最后一个单词的长度4、验证一个字符串是否是回文5、字符串相加总结 ヾ(๑╹◡╹)ノ" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ" 1、仅仅翻转字母 力扣链接 代码1展示&…

Gitlab仓库部署

Gitlab仓库部署 一、Gitlab的概述1、gitlab介绍2、gitlab主要功能3、gitlab和github的区别 二、部署环境1、安装依赖环境2、安装Postfix邮箱3、Gitlab优势4、Gitlab工作流程 三、Gitlab部署过程1、Yum安装Gitlab2、配置gitlab站点URL3、启动并访问Gitlab 四、Gitlab具体操作1、…

X86_64函数调用汇编程序分(2)

X86_64函数调用汇编程序分(2) 1 X86_64寄存器使用标准2 leaveq和retq指令2.1 leaveq2.2 retq 3 执行leaveq和retq之后栈的结构3.1 执行leaveq之后栈的结构3.1.1 test_fun_b函数执行leaveq之前的栈结构示意图3.1.2 test_fun_b函数执行leaveq之后的栈结构示…

招投标软件系统技术和服务解决方案

附件为全部文章,敬请下载。 ↑(完全免费,直接免费下载) 软件系统技术和服务解决方案 目录 第一部分 服务方案 6 第一节、 服务方案概述 6 第二节、 服务方式 6 第三节、 服务机构 7 第四节、 服务响应 8 第五节、 服务内容 9 第六…

HarmonyOS应用开发—资源分类与访问

应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中的表…

Axure RP 10汉化版下载 Axure RP 10 mac授权码

Axure RP10汉化版是最强大的计划,原型设计和交付给开发人员的方法,而无需编写代码。能够制作逼真的,动态形式的原型。 Axure RP 10汉化版下载 Axure RP 10 mac授权码 RP 10有什么新功能? 1.显示动态面板 使用Axure RP 10&…

列表和字典练习

定义四个学生信息 在Python环境下,用列表定义: >>> stu1[xiaoming,True,21,79.9] >>> stu1[lihong,False,22,69.9] >>> stu1[zhangqiang,True,20,89.9] >>> stu1[EMT,True,23,99.9]如图,定义了四个列表…

React Native 环境配置(mac)

React Native 环境配置(mac) 1.Homebrew2.Node.js、WatchMan3.Yarn4.Android环境配置1.安装JDK2.下载AndroidStudio1.国内配置 Http Proxy2.安装SDK1.首先配置sdk的路径2.SDK 下载 3.创建模拟器4.配置 ANDROID_HOME 环境变量 5.IOS环境1.升级ruby&#x…

清理 Ubuntu 系统的 4 个简单步骤

清理 Ubuntu 系统的 4 个简单步骤 现在,试试看这 4 个简单的步骤,来清理你的 Ubuntu 系统吧。 这份精简指南将告诉你如何清理 Ubuntu 系统以及如何释放一些磁盘空间。 如果你的 Ubuntu 系统已经运行了至少一年,尽管系统是最新的,…

回归与聚类算法系列⑤:逻辑回归

目录 1、介绍 2、原理 输入 激活函数 3、损失及其优化 损失函数 优化 4、API 5、案例:乳腺癌肿瘤预测 数据集 代码 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习&#xff0…

.Net MVC 使用Areas后存在相同Controller时报错的解决办法; 从上下文获取请求的Area名及Controller名

先来说个额外的问题:如何在请求上下文(比如过滤器的中)获取请求对应的Area和Controller 名字?(假设请求上下文对象为 filterContext ): 1. 获取Area名: (string)filterContext.RouteData.DataTo…