机器学习知识点

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 proxySQL 来代理 Mysql

我有若干台云主机, 但是只有1个台vm 具有外部ip 而在另1台vm上我安装了1个mysql instance, 正常来讲, 我在家里的电脑是无法连接上这个mysql 尝试过用nginx 代理, 但是nginx只能代理http协议的, mysql 3306 并不是http协议 解决…

Leetcode面试经典150_Q14最长公共前缀

题目: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 思路A:横向/纵向扫描 Python: class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:s "…

Mac 每次重启终端都要重新配置mysql环境变量解决办法

1、问题 Mac 每次关闭终端后,mysql环境配置就失效了,需要重新配置mysql环境变量 2、解决方法 在 " ~/.zshrc "文件添加" source ~/.bash_profile "即可 vim ~/.zshrc source ~/.bash_profile 3、验证 退出终端后重新打开终端 mys…

PDF锐化

PDF Shaper Ultimate(pdf转图片) 编辑->添加文件->选中一个要处理的pdf 操作->转换->PDF转为图片 ComicEnhancerPro设置(把图片锐化) PDF Shaper Ultimate(图片转pdf) 编辑-添加图片->选中所有锐化处理后的图片 转换->图片转为pdf(会把所有图…

3. Django 初探路由

3. 初探路由 一个完整的路由包含: 路由地址, 视图函数(或者视图类), 可选变量和路由命名. 本章讲述Django的路由编写规则与使用方法, 内容分为: 路由定义规则, 命名空间与路由命名, 路由的使用方式.3.1 路由定义规则 路由称为URL (Uniform Resource Locator, 统一资源定位符)…

Springboot使用教程

二、配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; •application.properties •application.yml 1.配置文件的作用: 修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好; Y…

HiveSQL之lateral view

lateral view是hiveQL中的一个高级功能,用于和表生成函数一起,来处理嵌套数组和结构的数据,特别是在处理复杂的数据结构如JSON或数组内嵌套数组时特别有用。它允许用户在每一行上应用TGF(表生成函数),将生成…

再探Java为面试赋能(二)Java基础知识(二)反射机制、Lambda表达式、多态

文章目录 前言1.4 反射机制1.4.1 Class对象的获取1.4.2 Class类的方法1.4.3 通过反射机制修改只读类的属性 1.5 Lambda表达式1.5.1 函数式接口1.5.2 Lambda表达式的使用 1.6 多态1.6.1 多态的概念1.6.2 多态的实现条件1.6.3 重载(Overload)和重写&#x…

odoo16 安装

1、安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 2、安装git brew install git 3、安装python3 brew install python3 brew install python3.10 -- odoo16 如果用python3.12 - 会报错 brew unlink python3.1…

Python数学建模学习-莱斯利(Leslie)种群模型

Leslie模型是一种用于离散时间的生物种群增长模型,经常用于描述年龄结构对种群增长的影响。在1945年,人口生态学家Patrick H. Leslie(莱斯利)为了研究具有离散年龄结构的种群,特别是对于有不同年龄阶段的生物&#xff…

nginx This request has been blocked; the content must be served over HTTPS问题处理

This request has been blocked; the content must be served over HTTPS问题处理 1.问题现象2.解决问题3.解决后的现象4.proxy_set_header x-forwarded-proto 作用 1.问题现象 Mixed Content: The page at https://www.ssjxx.cn/ssjy/viy-edu/index.html?systemCodeTW0010#/…

电脑与多台罗克韦尔AB PLC无线通讯的搭建方法分为几步?

在实际系统中,同一个车间里分布多台PLC,通过上位机集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候,如果布线的话,工程量较大耽误工期,这种情况下比较适合采用无线通信方式。本方案以组态王和2台…

OpenCV单通道图像按像素成倍比例放大(无高斯平滑处理)

OpenCV中的resize函数可以对图像做任意比例的放大(/缩小)处理,该处理过程会对图像做高斯模糊化以保证图像在进行放大(/缩小)后尽可能保留源图像所展现的具体内容(消除固定频率插值/采样带来的香农采样信息损失)&#x…

QML学习记录:并排页面切换效果的实现

定义一个ApplicationWindow窗口,通过添加SwipeView和PageIndicator来实现页面切换效果和显示当前页面位置的指示器。 ApplicationWindow {id:rootvisible: truewidth: 340height: 480title: qsTr("SwipeView") // 定义一个SwipeView用于页面切换效果 Swip…

支持向量机(SVM)白话之个人理解(学习记录)

本文仅有文字理解部分,没有相应的数学公式推导过程,便于新手理解。 一、什么是支持向量机 首先我们看下面这张图,在图中圆形和三角形分别代表不同的数据类型,如何画出一条直线使两者能够显著地区分开来呢? 答案可以多…

SSL数字证书基本概念

CA机构 CA机构,即证书授权中心(Certificate Authority)或称证书授权机构。CA认证中心作为电子商务交易中受信任的第三方,承担公钥体系中公钥合法性检验的责任。 SSL证书和SSL协议 安全套接层SSL(Secure Sockets Lay…

基于GD32的简易数字示波器(3)- PCB设计

这期记录的是项目实战,做一个简易的数字示波器。 教程来源于嘉立创, 本期介绍PCB设计的大致流程。 下图为示波器的指标 具有选择交流耦合还是直流耦合功能、输入信号不衰减或衰减50倍 输入频率理论最大800KHz输入幅值(不衰减)…

03-JAVA设计模式-原型模式

原型模式 什么是原型模式 Java原型模式(Prototype Pattern)是一种创建型设计模式,其核心理念在于通过复制(克隆)已有的对象来创建新的对象,而不是通过构造函数来创建。 该模式可以显著提高对象创建的效率…

Web3的智能合约:未来合约的新范式

随着区块链技术的不断成熟和发展,智能合约作为其核心应用之一,正逐渐成为数字经济中的重要组成部分,引领着未来合约的新趋势。Web3的智能合约代表了一种全新的合约形式,其特点和应用将在未来产生深远影响。 智能合约的基本原理 智…

React - 你知道props和state之间深层次的区别吗

难度级别:初级及以上 提问概率:60% 如果把React组件看做一个函数的话,props更像是外部传入的参数,而state更像是函数内部定义的变量。那么他们还有哪些更深层次的区别呢,我们来看一下。 首先说props,他是组件外部传入的参数,我们知道…