机器学习知识点

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}")  # 对每个特征列进行评分

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

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

相关文章

【C++】——list的介绍及使用 模拟实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一、list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.…

展厅施工需考虑的重要因素

1、明确目标和主题 展厅的设计应该以公司历史为线索,通过展品、图片、文字等方法向观众传达公司的发展历程和价值观。在设计过程中,需要根据公司的特点和需求来确定展览的主题,并且合理规划展厅空间,使其呈现出连贯性和逻辑性。 2…

Android 系统锁屏息屏休眠时Handler CountDownTimer计时器停止运行问题解决

1.前言 在进行app开发的过程中,在进行某些倒计时的功能项目开发中,会遇到在锁屏息屏休眠一段时间的情况下, 在唤醒屏幕的情况下发现倒计时已经停止了,这是因为在系统处于休眠的状态下cpu也停止了工作,所以 handler和countdowntimer倒计时也停止了工作,接下来就来看怎么样…

7 单链表的创建,遍历与销毁

从键盘输入任意多个正整数,输入以-1结束。逆序输出这些整数(不包括-1)。 提示: 1、逆序创建单链表。结点数据域是整型数。每输入一个整数,向链表中插入一个结点。当输入-1时结束链表的创建。 2、遍历链表,输出结点数据域的值。 3、…

[vue] v-viewer 点击失效

首先全局引入 import Viewer from v-viewer import viewerjs/dist/viewer.css Vue.use(Viewer) Viewer.setDefaults({Options: {inline: true,button: true,navbar: false,title: false,toolbar: false,tooltip: true,movable: true,zoomable: true,rotatable: true,scalable:…

【Git】tag 标签用法

文章目录 基本用法 基本用法 Git 可以对某一时间点上的版本打上标签。比如在发布某个软件版本的时候( v1.0 等等) 查看tag列表 ➜ git tag v0.1 v1.3搜索tag列表 ➜ git tag -l v1.4.2.* v1.4.2.1 v1.4.2.2 v1.4.2.3 v1.4.2.4显示标签版本信息 ➜ git…

选择IP代理时需要避开哪些误区?

选择IP代理时,许多用户可能会因为对代理服务的不了解而陷入一些误区。这些误区不仅可能影响代理服务的效果,还可能带来安全风险。以下是一些在选择IP代理时需要避开的误区: 第一点是一个常见的误区是过于追求低价:市场上有很多代…

OpenEuler简介与安装

OpenEuler简介与安装 OpenEuler是华为推动的一个免费开源的Linux发行平台。这篇文章简单介绍一下OpenEuler的基本信息,并以当前最新的20.09版本为例,并进行一下x86架构下虚拟机下的安装体验。 基本信息 OpenEuler的基本信息如下所示: 项目…

生成性AI

在当前技术领域,无疑最受关注的进展之一是**生成性AI**,尤其是**生成性对抗网络(GANs)** 和 **变换器模型** 如GPT(Generative Pre-trained Transformer)系列。它们在图像生成、文本处理、音频合成等多个方…

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

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

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之七 简单指定视频某片段快放效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之七 简单指定视频某片段快放效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之七 简单指定视频某片段快放效果 一、简单介绍 二、简单指定视频某片段快放效果实现原理…

处理SAP CK11N 报错:成本构成结构 Z1 没有被激活

用户发布成本是报错如下: 成本构成结构 Z1 没有被激活 这是对应的成本结构没有打上激活的勾导致的。 配置路径如下: 把勾打上就不会出错了。

P8685 [蓝桥杯 2019 省 A] 外卖店优先级

题目描述 “饱了么”外卖系统中维护着 N 家外卖店,编号 1 ∼ N。每家外卖店都有一个优先级,初始时 (0 时刻)优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减到 0&#x…

视频号小店如何找达人,对接达人教程分享,你还在等什么?

大家好,我是电商花花。 视频号现在的流量非常大,尤其是达人的流量,自从视频号引入大量的博主和达人之后,达人带货的流量更是突飞猛进。 如果你想要在视频号小店出单,爆单,那必须要找达人带货,…

一文读懂:到底什么是重删和压缩?

在数字化时代,数据已经成为企业和个人生活中不可或缺的一部分。然而,数据的快速增长也带来了存储空间的需求压力。为了更有效地利用存储空间,重删和压缩这两种技术应运而生,它们被广泛应用在主存、闪存、备份软件和数据传输软件中…

经典面试题数组常用方法都有哪些

1.数组常用方法之 push()(改变原数组,产生新数组) push 是用来在数组的末尾追加一个元素,返回添加以后的长度 var arr [1, 2, 3] ​ // 使用 push 方法追加一个元素在末尾 arr.push(4) ​ console.log(arr) // [1, 2,…

实现 jwt 鉴权- SpringBoot + 微服务

目录 项目结构 主要步骤 auth-service里: 1. 配置 pom.xml 依赖 2. 实现HandlerInterceptor 接口的 preHandle 函数 3. 实现 WebMvcConfigurer 的 addInterceptors 接口 4. 生成 token 和验证 token 5. 登录接口示例 user-service 里: 6. 实现拦…

Python-VBA函数之旅-ascii函数

ascii函数在Python中主要用于将对象(特别是字符和字符串)转换为它们的ASCII表示形式。这种转换在处理文本数据、调试代码以及确保文本以 ASCII 格式存储或传输时非常有用。常见应用场景有: 1、调试和文本处理:当处理包含非ASCII字符(如Unicode字符)的文…

从概念到实践:揭开枚举与联合体在数字化创新时代的神秘面纱

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 在编程的世界中,枚举和联合体是两种非常基础且重要的数据结构。它们各自具有独特的特点和用途,为程序员提供…

S参数介绍:双端口和四端口S参数有哪些

信号在传输过程中,并非完全不变,而是存在一定的损耗和变化。这类似于光的折射现象,在信号传输过程中,一部分信号会在输入端被反射回来,一部分信号会被传输到其它端口,还有一部分信号会在传输过程中被耗散。…