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

【机器学习实战入门项目】MNIST数字分类机器学习项目

在这里插入图片描述
Python 深度学习项目:手写数字识别

为了使机器更加智能,开发者们正在深入研究机器学习和深度学习技术。人类通过不断练习和重复来学习执行某项任务,从而记住如何完成这些任务。然后,大脑中的神经元会自动触发,他们能够快速执行已经学到的任务。深度学习与此也非常相似。它使用不同类型的神经网络架构来解决不同类型的问题,例如——对象识别、图像和声音分类、对象检测、图像分割等。

什么是手写数字识别?

手写数字识别是指计算机识别手写数字的能力。这是一项对机器来说较为困难的任务,因为手写数字并不完美,可能有许多不同的书写风格。手写数字识别为这个问题提供了解决方案,它使用数字的图像来识别图像中的数字。

关于 Python 深度学习项目

在本文中,我们将使用 MNIST 数据集实现一个手写数字识别应用程序。我们将使用一种特殊的深度神经网络,即卷积神经网络(Convolutional Neural Networks)。最终,我们将构建一个 GUI,你可以在这个界面上绘制数字,并立即识别它们。

预备知识

这个有趣的 Python 项目要求你具备 Python 编程的基本知识、使用 Keras 库的深度学习知识,以及使用 Tkinter 库构建 GUI 的知识。

安装必要的库

使用以下命令安装该项目所需的库:

pip install numpy, tensorflow, keras, pillow
MNIST 数据集

这可能是机器学习和深度学习爱好者中最受欢迎的数据集之一。MNIST 数据集包含 60,000 张用于训练的手写数字图像(从 0 到 9),以及 10,000 张用于测试的图像。因此,MNIST 数据集有 10 个不同的类别。手写数字图像以 28×28 矩阵的形式表示,每个单元格包含灰度像素值。

下载项目的完整源代码
实现手写数字识别项目

以下是实现手写数字识别项目的步骤:

  1. 导入库并加载数据集

    首先,我们将导入训练模型所需的所有模块。Keras 库中已经包含了一些数据集,MNIST 就是其中之一。因此,我们可以轻松地导入数据集并开始使用它。mnist.load_data() 方法返回我们训练数据、其标签以及测试数据和其标签。

    import keras
    from keras.datasets import mnist
    from keras.models import Sequential
    from keras.layers import Dense, Dropout, Flatten
    from keras.layers import Conv2D, MaxPooling2D
    from keras import backend as K
    # 训练和测试数据集
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    print(x_train.shape, y_train.shape)
    
  2. 预处理数据

    图像数据不能直接输入到模型中,因此我们需要执行一些操作来处理数据,使其准备好用于我们的神经网络。训练数据的维度是 (60000,28,28)。CNN 模型需要一个额外的维度,因此我们将矩阵重塑为 (60000,28,28,1) 的形状。

    x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
    x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
    input_shape = (28, 28, 1)
    # 将类向量转换为二进制类矩阵
    y_train = keras.utils.to_categorical(y_train, num_classes)
    y_test = keras.utils.to_categorical(y_test, num_classes)
    x_train = x_train.astype('float32')
    x_test = x_test.astype('float32')
    x_train /= 255
    x_test /= 255
    print('x_train shape:', x_train.shape)
    print(x_train.shape[0], '训练样本')
    print(x_test.shape[0], '测试样本')
    
  3. 创建模型

    现在我们将在这个 Python 数据科学项目中创建我们的 CNN 模型。CNN 模型通常包含卷积层和池化层。它在处理以网格结构表示的数据时效果更好,这也是为什么 CNN 用于图像分类问题时表现良好的原因。Dropout 层用于停用一些神经元,在训练过程中减少模型的过拟合。然后,我们将使用 Adadelta 优化器编译模型。

    batch_size = 128
    num_classes = 10
    epochs = 10
    model = Sequential()
    model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',input_shape=input_shape))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    model.add(Flatten())
    model.add(Dense(256, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(num_classes, activation='softmax'))
    model.compile(loss=keras.losses.categorical_crossentropy,optimizer=keras.optimizers.Adadelta(),metrics=['accuracy'])
    
  4. 训练模型

    Keras 的 model.fit() 函数将开始模型的训练。它需要训练数据、验证数据、训练轮数(epochs)和批量大小(batch size)。

    训练模型需要一些时间。训练完成后,我们将权重和模型定义保存在 ‘mnist.h5’ 文件中。

    hist = model.fit(x_train, y_train,batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(x_test, y_test))
    print("模型已成功训练")
    model.save('mnist.h5')
    print("将模型保存为 mnist.h5")
    
  5. 评估模型

    我们的数据集中有 10,000 张图像,这些图像将用于评估我们的模型效果如何。测试数据没有参与训练,因此对于我们的模型来说是全新的数据。MNIST 数据集平衡性很好,我们可以达到约 99% 的准确率。

    score = model.evaluate(x_test, y_test, verbose=0)
    print('测试损失:', score[0])
    print('测试准确率:', score[1])
    
  6. 创建用于预测数字的 GUI

    为了创建 GUI,我们在一个新文件中构建了一个交互式窗口,你可以在画布上绘制数字,并通过一个按钮识别数字。Tkinter 库包含在 Python 标准库中。我们创建了一个 predict_digit() 函数,该函数接收图像作为输入,然后使用训练好的模型来预测数字。

    然后,我们创建了 App 类,该类负责构建我们的应用程序的 GUI。我们创建了一个画布,可以在捕获鼠标事件时进行绘制,通过一个按钮触发 predict_digit() 函数并显示结果。

    以下是我们的 gui_digit_recognizer.py 文件的完整代码:

    from keras.models import load_model
    from tkinter import *
    import tkinter as tk
    import win32gui
    from PIL import ImageGrab, Image
    import numpy as npmodel = load_model('mnist.h5')def predict_digit(img):# 将图像调整为 28x28 像素img = img.resize((28,28))# 将 RGB 转换为灰度img = img.convert('L')img = np.array(img)# 重塑以支持模型输入并归一化img = img.reshape(1,28,28,1)img = img/255.0# 预测类别res = model.predict([img])[0]return np.argmax(res), max(res)class App(tk.Tk):def __init__(self):tk.Tk.__init__(self)self.x = self.y = 0# 创建元素self.canvas = tk.Canvas(self, width=300, height=300, bg = "white", cursor="cross")self.label = tk.Label(self, text="思考中..", font=("Helvetica", 48))self.classify_btn = tk.Button(self, text = "识别", command = self.classify_handwriting) self.button_clear = tk.Button(self, text = "清除", command = self.clear_all)# 网格结构self.canvas.grid(row=0, column=0, pady=2, sticky=W, )self.label.grid(row=0, column=1,pady=2, padx=2)self.classify_btn.grid(row=1, column=1, pady=2, padx=2)self.button_clear.grid(row=1, column=0, pady=2)#self.canvas.bind("<Motion>", self.start_pos)self.canvas.bind("<B1-Motion>", self.draw_lines)def clear_all(self):self.canvas.delete("all")def classify_handwriting(self):HWND = self.canvas.winfo_id() # 获取画布的句柄rect = win32gui.GetWindowRect(HWND) # 获取画布的坐标im = ImageGrab.grab(rect)digit, acc = predict_digit(im)self.label.configure(text= str(digit)+', '+ str(int(acc*100))+'%')def draw_lines(self, event):self.x = event.xself.y = event.yr=8self.canvas.create_oval(self.x-r, self.y-r, self.x + r, self.y + r, fill='black')app = App()
    mainloop()
    
截图
  • Python 机器学习项目输出为数字 2
  • Python 机器学习项目输出为数字 5
  • Python 项目输出为数字 6

总结

在本文中,我们成功构建了一个 Python 深度学习项目——手写数字识别应用。我们构建并训练了卷积神经网络,该网络在图像分类方面非常有效。随后,我们构建了一个 GUI,你可以在画布上绘制数字,然后对其进行分类并显示结果。

参考资料

资料名称链接
Keras 官方文档https://keras.io/
TensorFlow 官方文档https://tensorflow.google.cn/
MNIST 数据集介绍http://yann.lecun.com/exdb/mnist/
手写数字识别教程https://data-flair.training/blogs/handwritten-digit-recognition/
Python GUI 开发概述https://docs.python.org/3/library/tkinter.html
Tkinter 详细介绍https://www.tutorialspoint.com/python/python_gui_programming.htm
深度学习入门https://deeplearning.ai/
卷积神经网络入门https://cs231n.github.io/convolutional-networks/
机器学习基础https://www.coursera.org/courses?query=machine%20learning
数据预处理技巧https://machinelearningmastery.com/preparing-data-for-deep-learning/
Python 项目示例https://github.com/data-flair-training-deep-learning/
手写数字识别研究论文https://arxiv.org/abs/1509.06322
图像识别技术综述https://www.sunfounder.com/learn/opencv-101

相关文章:

【机器学习实战入门项目】MNIST数字分类机器学习项目

Python 深度学习项目&#xff1a;手写数字识别 为了使机器更加智能&#xff0c;开发者们正在深入研究机器学习和深度学习技术。人类通过不断练习和重复来学习执行某项任务&#xff0c;从而记住如何完成这些任务。然后&#xff0c;大脑中的神经元会自动触发&#xff0c;他们能够…...

【统计信号处理基础——估计与检测理论】Vol1.Ch1 引言

文章目录 1. 信号处理中的估计2. 估计的数学问题3. 估计量性能评估习题1.11.21.31.41.5 1. 信号处理中的估计 从离散时间波形或一组数据集中提取参数的问题。我们有 N N N点数据集 { x [ 0 ] , x [ 1 ] , ⋯ , x [ N − 1 ] } \{x[0],x[1],\cdots,x[N-1]\} {x[0],x[1],⋯,x[N−…...

Linux 存储设备和 Ventoy 启动盘制作指南

一、Linux 存储设备基础知识 1. 设备路径&#xff08;/dev&#xff09; 设备路径是 Linux 系统中物理存储设备的唯一标识&#xff0c;类似设备的"身份证号"。 命名规则解析 /dev/sda&#xff1a; /dev&#xff1a;device&#xff08;设备&#xff09;的缩写&…...

第14章:Python TDD应对货币类开发变化(一)

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

网络协议入门:OSI模型与TCP/IP栈

在网络通信的世界中&#xff0c;数据从一台设备传输到另一台设备&#xff0c;需要遵循一系列规则&#xff0c;这些规则统称为网络协议。OSI模型和TCP/IP协议栈作为网络通信的基石&#xff0c;帮助我们理解数据传输的全流程。这篇文章将深入解析它们的结构、功能和实际应用&…...

pthread_exit函数

pthread_exit 是 POSIX 线程库&#xff08;pthread&#xff09;中的一个函数&#xff0c;用于显式地终止调用线程。与 exit 函数不同&#xff0c;pthread_exit 仅影响调用它的线程&#xff0c;而不是整个进程。使用 pthread_exit 可以确保线程在退出时能够正确地释放线程相关的…...

从语音识别到图像识别:AI如何“看”和“听”

引言 随着人工智能技术的不断进步&#xff0c;AI的“听”和“看”能力正变得越来越强大。从语音识别到图像识别&#xff0c;AI不仅能够通过声音与我们互动&#xff0c;还能通过视觉理解和分析周围的世界。这些技术不仅改变了我们与机器的交互方式&#xff0c;也在各行各业中带…...

UML-对象图(Object Diagram)

定义 在UML(统一建模语言)中,对象图用于描述在某一时刻,一组对象以及它们之间关系的图形。它是系统详细状态在某一时刻的快照,常用于表示复杂的类图的一个实例。关联、依赖和继承是对象图中常见的三种关系,下面将对这三种关系进行详细说明,并阐述它们之间的区别。 Pla…...

Pytorch - YOLOv11自定义资料训练

►前言 本篇将讲解目前最新推出的YOLOv11搭配Roboflow进行自定义资料标注训练流程&#xff0c;透过Colab上进行实作说明&#xff0c;使大家能够容易的了解YOLOv11的使用。 ►YOLO框架下载与导入 ►Roboflow的资料收集与标注 进行自定义资料集建置与上传 透过Roboflow工具进行…...

大模型GUI系列论文阅读 DAY2续2:《使用指令微调基础模型的多模态网页导航》

摘要 自主网页导航的进展一直受到以下因素的阻碍&#xff1a; 依赖于数十亿次的探索性交互&#xff08;通常采用在线强化学习&#xff09;&#xff0c;依赖于特定领域的模型设计&#xff0c;难以利用丰富的跨领域数据进行泛化。 在本研究中&#xff0c;我们探讨了基于视觉-语…...

Docker 搭建mysql 连接超时问题,xxl-job启动mysql连接报错,禁用dns

1.本地连接Navicat报错信息&#xff0c;猜测是navicat默认连接超时导致的&#xff0c;后面换成idea一个插件虽然慢但连接上了 2013 - Lost connection to MySQL server at reading initial communication packet 2.启动xxl-job会报错&#xff0c;网上有人mysql驱动与数据库不匹…...

SSM课设-学生管理系统

【课设者】SSM课设-学生管理系统 技术栈: 后端: SpringSpringMVCMybatisMySQLJSP 前端: HtmlCssJavaScriptEasyUIAjax 功能: 学生端: 登陆 学生信息管理 个人信息管理 老师端: 多了教师信息管理 管理员端: 多了班级信息管理 多了年级信息管理 多了系统用户管理...

JavaScript笔记APIs篇03——DOM节点Bom操作本地存储正则表达式

黑马程序员视频地址&#xff1a;黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p78https://www.bilibili.com/video/BV1Y84y1L7Nn?…...

JS 有哪些模块化规范

一、CommonJS 规范 1. 主要应用场景 主要用于服务器端开发&#xff0c;尤其是 Node.js 环境。 2. 核心思想 使用 require() 函数来引入模块&#xff0c;使用 module.exports 或 exports 对象来导出模块中的内容。 // math.js 模块const add (a, b) > a b;const subtr…...

摘录人工智能面试笔试题汇总

一、人工智能面试问答题汇总 1、什么是人工智能&#xff1f; 人工智能&#xff08;AI&#xff09;是一种计算机科学&#xff0c;它增强了像人类一样工作和反应的智能机器。机器模拟人类智能行为的能力。人工智能通常用于各种应用&#xff0c;如决策、语音识别、感知、认知能力…...

【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】

文章目录 1 什么是 MCTP?2 MCTP 消息在 PCIe 中的传输特点3 PCIe MCTP 的局限性(1) 出站(Outbound)MCTP 消息分解的限制(2) 入站(Inbound)MCTP 消息组装的限制4 MCTP 消息的实际使用流程发送端处理流程接收端处理流程5 实际使用场景例 1:管理命令传输例 2:监控数据报告例…...

RabbitMQ集群安装rabbitmq_delayed_message_exchange

1、单节点安装rabbitmq安装延迟队列 安装延迟队列rabbitmq_delayed_message_exchange可以参考这个文章&#xff1a; rabbitmq安装延迟队列-CSDN博客 2、集群安装rabbitmq_delayed_message_exchange 在第二个节点 join_cluster 之后&#xff0c;start_app 就会报错了 (CaseC…...

doris 2.1 Queries Acceleration-Hints 学习笔记

1 Hint Classification 1.1 Leading Hint:Specifies the join order according to the order provided in the leading hint. 1.2 Ordered Hint:A specific type of leading hint that specifies the join order as the original text sequence. 1.3 Distribute Hint:Speci…...

【网络协议】【http】【https】TLS解决了HTTP存在的问题-加密通信+摘要,数字签名+CA证书

【网络协议】【http】【https】TLS解决了HTTP存在的问题-加密通信摘要数字签名CA证书 ps:TLS前期发送的密码套件里面主要就是约定&#xff1a;密钥交换算法&#xff0c;签名算法&#xff0c;对称加密算法&#xff0c;摘要算法 1加密通信 一般选择非对称加密交换密钥 对称加密…...

某讯一面,感觉问Redis的难度不是很大

前不久&#xff0c;有位朋友去某讯面试&#xff0c;他说被问到了很多关于 Redis 的问题&#xff0c;比如为什么用 Redis 作为 MySQL 的缓存&#xff1f;Redis 中大量 key 集中过期怎么办&#xff1f;如何保证缓存和数据库数据的一致性&#xff1f;我将它们整理出来&#xff0c;…...

【json_object】mysql中json_object函数过长,显示不全

问题&#xff1a;json只显示部分 解决&#xff1a; SET GLOBAL group_concat_max_len 1000000; -- 设置为1MB&#xff0c;根据需要调整如果当前在navicat上修改&#xff0c;只有效本次连接和后续会话&#xff0c;重新连接还是会恢复默认值1024 在my.ini配置文件中新增或者修…...

【KOA框架】koa框架基础入门

koa是express的一层封装&#xff0c;语法比express更加简洁。所以有必要了解下koa的相关开发方法。 代码实现 package.json {"name": "koapp","version": "1.0.0","main": "index.js","scripts": {&…...

kubernetes 集群 YAML 文件详解

Kubernetes 是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。在 Kubernetes 中&#xff0c;YAML 文件扮演着至关重要的角色&#xff0c;因为它们是用来定义资源对象&#xff08;如 Pods、Deployments、Services 等&#xff09;的配置文件。正确…...

【STM32G4xx的CAN驱动记录】

STM32G4xx的CAN驱动记录 CAN说明CAN的波特率计算数据测试总结 本文主要记录了基于STM32G4xx的CAN接口解析某型号雷达数据遇到的问题及规避方法&#xff0c;CAN总线波特率500Kbps&#xff0c;采样点要求80%附近。 注意CAN总线同步段的时间&#xff01;&#xff01;&#xff01; …...

VSCode下EIDE插件开发STM32

VSCode下STM32开发环境搭建 本STM32教程使用vscode的EIDE插件的开发环境&#xff0c;完全免费&#xff0c;有管理代码文件的界面&#xff0c;不需要其它IDE。 视频教程见本人的 VSCodeEIDE开发STM32 安装EIDE插件 Embedded IDE 嵌入式IDE 这个插件可以帮我们管理代码文件&am…...

HTML之拜年/跨年APP(改进版)

目录&#xff1a; 一&#xff1a;目录 二&#xff1a;效果 三&#xff1a;页面分析/开发逻辑 1.页面详细分析&#xff1a; 2.开发逻辑&#xff1a; 四&#xff1a;完整代码&#xff08;不多废话&#xff09; index.html部分 app.json部分 二&#xff1a;效果 三&#xff1a;页面…...

解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题

问题场景 安装Docker后&#xff0c;执行sudo service docker start启动Docker&#xff0c;提示启动成功 rootDev:~# sudo service docker start * Starting Docker: docker [ OK ]执行su…...

Chrome 132 版本新特性

Chrome 132 版本新特性 一、Chrome 132 版本浏览器更新 1. 在 iOS 上使用 Google Lens 搜索 在 Chrome 132 版本中&#xff0c;开始在所有平台上推出这一功能。 1.1. 更新版本&#xff1a; Chrome 126 在 ChromeOS、Linux、Mac、Windows 上&#xff1a;在 1% 的稳定版用户…...

《贪心算法:原理剖析与典型例题精解》

必刷的贪心算法典型例题&#xff01; 算法竞赛&#xff08;蓝桥杯&#xff09;贪心算法1——数塔问题-CSDN博客 算法竞赛&#xff08;蓝桥杯&#xff09;贪心算法2——需要安排几位师傅加工零件-CSDN博客 算法&#xff08;蓝桥杯&#xff09;贪心算法3——二维数组排序与贪心算…...

CSS笔记基础篇02——浮动、标准流、定位、CSS精灵、字体图标

黑马程序员视频地址&#xff1a; 前端Web开发HTML5CSS3移动web视频教程https://www.bilibili.com/video/BV1kM4y127Li?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p70https://www.bilibili.com/video/BV1kM4y127Li?vd_source…...

Golang Gin系列-6:Gin 高级路由及URL参数

在本章中&#xff0c;我们将深入研究使用Gin框架的高级路由和URL参数。我们将介绍如何创建和使用路由组、应用中间件、提取路径参数、处理查询字符串、处理静态文件以及使用HTML模板。 路由分组 为什么要使用路由组&#xff1f; 使用路由组有助于保持代码结构整洁有序。当路由…...

重温STM32之环境安装

缩写 CMSIS&#xff1a;common microcontroller software interface standard 1&#xff0c;keil mdk安装 链接 Keil Product Downloads 安装好后&#xff0c;开始安装平台软件支持包&#xff08;keil 5后不在默认支持所有的平台软件开发包&#xff0c;需要自行下载&#…...

web应用引入cookie机制的用途和cookie技术主要包括的内容

web应用引入cookie机制&#xff0c;用于用户跟踪。 &#xff08;1&#xff09;HTTP响应报文中的Cookie头行&#xff1a;set-Cookie &#xff08;2&#xff09;用户浏览器在本地存储、维护和管理的Cookie文件 &#xff08;3&#xff09;HTTP请求报文中的Cookie头行&#xff1a;…...

Visual Studio Code + Stm32 (IAR)

记录一下&#xff0c; 以前看别人在 vsc 下配置 stm32 工程非常麻烦。 最近&#xff0c;突然发现&#xff0c; iar 官方出了两个插件&#xff0c; iar build 、 iar C-Spy 安装之后&#xff0c;配置一下 iar 软件路径。 然后&#xff0c;直接打开工程目录&#xff0c;编译…...

小程序获取微信运动步数

1、用户点击按钮&#xff0c;在小程序中触发getuserinfo方法&#xff0c;获取用户信息 <scroll-view class"scrollarea" scroll-y type"list"><view class"container"><button bind:tap"getLogin">获取</button&…...

嵌入式Linux驱动开发之platform

关键词&#xff1a;rk3399 嵌入式驱动 Linux platform 前言 前面的嵌入式Linux驱动都是描述从特定的SOC与特定设备之间的直接两两通信。而Linux不是为单一某一SOC结构而设计的操作系统&#xff0c;它可以运行在X86、ARM等多种架构多种SOC平台上&#xff0c;如果驱动程序按照S…...

【蓝桥杯】43693.日期问题

题目描述 小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是&#xff0c;这些日期采用的格式非常不统一&#xff0c;有采用年/月/日的&#xff0c;有采用月/日/年的&#xff0c;还有采用…...

opengrok_windows_多工程的同步

多工程的目录 工程代码下载和log配置 工程代码下载 在每个工程的src目录下&#xff0c;下载工程代码&#xff0c;以下载pulseaudio的代码为例。 git clone gitgithub.com:pulseaudio/pulseaudio.git log配置文件 拷贝D:\opengrok\opengrok-…...

Redis的安装和使用--Windows系统

Redis下载地址&#xff1a; windows版本readis下载&#xff08;GitHub&#xff09;&#xff1a; https://github.com/tporadowski/redis/releases &#xff08;推荐使用&#xff09; https://github.com/MicrosoftArchive/redis/releases 官网下载&#xff08;无Windows版本…...

【odbc】odbc连接kerberos认证的 hive和spark thriftserver

hive odbc驱动&#xff0c;以下两种都可以 教程&#xff1a;使用 ODBC 和 PowerShell 查询 Apache HiveHive ODBC Connector 2.8.0 for Cloudera Enterprise spark thriftserver本质就是披着hiveserver的外壳的spark server 完成kerberos认证: &#xff08;1&#xff09;可以…...

亚博microros小车-原生ubuntu支持系列:1 键盘控制

背景&#xff1a;电脑配置不太行&#xff0c;我在ubuntu再运行vmware&#xff0c;里面运行亚博官方的虚拟机镜像ubuntu&#xff0c;系统很卡。基本上8G内存给打满了。还是想把亚博官方的代码迁移出来&#xff0c;之前售后就说除了官方镜像虚拟机&#xff0c;需要自己摸索迁移。…...

【Linux】利用‘shell脚本’快速查看服务的运行情况

一、脚本目的 为了方便查看服务的运行情况&#xff0c;特此写了一个shell脚本&#xff0c;这样就很方便获取&#xff0c;查看如nginx、mysql等服务的运行状态、监听端口状态、防火墙、端口开放状态等。 二、shell脚本源代码 #!/bin/bash SCRIPTPATH$(cd "$(dirname $0)…...

[2025分类时序异常检测指标R-AUC与VUS]

梳理了一下分类中常见的指标&#xff0c;这些指标与时序异常检测中新提出的A-RUC与VUS之间的关系 真正例(True Positive,TP): 被正确识别为正样本的数量。真负例(True Negative,TN): 被正确识别为负样本的数量。假正例(False Positive ,FP): 被错误识为正样本数量假负例(Fals…...

设计模式之结构型模式

在软件开发的世界里&#xff0c;设计模式是前辈们智慧的结晶&#xff0c;它们为我们提供了通用的解决方案来应对各种常见的软件设计问题。今天&#xff0c;我们深入探讨设计模式中的结构型模式&#xff0c;并用 Java 语言来实现它们。 什么是结构型模式 结构型模式主要关注如…...

Spring Boot中的404错误:原因、影响及处理策略

Spring Boot中的404错误&#xff1a;原因、影响及处理策略 在Web开发过程中&#xff0c;404错误是一个常见的HTTP状态码&#xff0c;表示“未找到”资源。在Spring Boot项目中&#xff0c;尽管它以其简化的配置和快速的开发速度著称&#xff0c;但开发者仍可能遇到404错误。本…...

网络协议如何确保数据的安全传输?

网络协议作为计算机网络通信的基石&#xff0c;其设计不仅旨在实现数据的有效传输&#xff0c;更在于确保数据在传输过程中的安全性。对于网络协议如何保障数据安全传输&#xff0c;是很多企业和网络IT部门的重点&#xff0c;本文将从多方面概述相关方法。 加密与解密机制 1. …...

Python绘制数据地图-MovingPandas

MovingPandas 是一个用于时空数据分析的 Python 库&#xff0c;它扩展了 Pandas 和 GeoPandas&#xff0c;使得处理和分析带有时间戳的地理数据变得更加方便。虽然 MovingPandas 本身不直接提供数据可视化功能&#xff0c;但你可以结合其他库如 matplotlib、folium 或 plotly 来…...

鸿蒙子组件根据数据,刷新item Ui的规范

鸿蒙 子组件列表中&#xff0c;有多个isSelect&#xff0c;父组件只用一个state类型的isSelect&#xff0c;就可以将它们关联起来&#xff0c;如下&#xff1a; isLike:item1.isPraise?!this.isLike:this.isLike, 子组件想要数据变化&#xff0c;UI随着更新&#xff0c;就得…...

使用 Flask 构建视频转 GIF 工具

使用 Flask 构建视频转 GIF 工具 在前几日的文章当中&#xff0c;我介绍了如何使用 Python 脚本将视频转化为 GIF 动画&#xff0c;为了更好、更方便的进行操作&#xff0c;在这篇博客中&#xff0c;我将介绍使用 Flask 框架创建一个简单的 Web 应用程序&#xff0c;该应用程序…...

基于SpringBoot+Vue的智慧动物园管理系统的设计与实现

获取源码&#xff1a;基于SpringBootVue智慧动物园系统设计与实现: 后台和用户前台。后台包括首页、员工管理、考勤管理、部门管理、角色管理、审核管理、动物管理、演出管理、园区管理、园区设施维修、饲养管理、行为观察管理、疫苗管理、看护管理、个人中心、票务管理、收入管…...