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

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM)

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM)

  • 问题
  • 模板
  • 解题思路
    • 1. 导入必要的库
    • 2. 加载数据
    • 3. 划分训练集和测试集
    • 4. 数据预处理
    • 5. 定义算法及其参数
    • 6. 存储算法和对应指标
    • 7. 训练模型并计算指标
    • 8. 找出最佳算法
    • 9. 输出结果
  • 代码

问题

我们建议您使用 4 种不同的算法来解决糖尿病数据集上的二元分类问题:

Decision Tree (1) Logistic Regression (2) KNN (3) SVC (4)
您的任务是找到具有最佳 ROC AUC 分数和 PR AUC 分数的算法。作为答案,请指出数字 a b,其中 a 是 ROC AUC 分数方面的最佳算法,b 是 PR AUC 分数方面的最佳算法。

例如,答案 43 将被解释如下:算法 4(SVM)在 roc_auc_score 方面是最好的,算法 3(KNN)在 pr_auc_score 方面是最好的。

选择默认设置作为参数。对于 KNN,选择 k=5。将随机状态设置为 42。分成训练和测试,参数 test_size=0.3。

不要忘记对数据进行额外的预处理,使用 StandardScaler 将其调整到单一比例。

注意

  1. 请注意,StandardScaler 可能会影响算法的结果。因此,我们建议使用它。

  2. 当我们将数据分成训练和测试时,我们必须明白所有算法都必须仅在训练上进行训练。训练期间不使用测试。而且,在现实生活中我们对测试根本就一无所知。因此,StandardScaler 应该仅在 X_train 上进行训练,并且只应对 X_test 进行变换(而不是 fit_transform)。

模板

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
"""
TODO: make additional imports here
TODO:在此处进行额外导入
"""data = fetch_openml(data_id=42608)
X, y = data['data'].drop(columns='Outcome').values, data['data']['Outcome'].astype(int).valuesX_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)"""
In the following part of code specify algorithms with their own parameters by yourself
在下面的代码部分中,您可以自己指定具有自己参数的算法
"""
tree = DecisionTreeClassifier()
lr = LogisticRegression()
knn = KNeighborsClassifier()
svm = SVC(probability=True)"""
TODO: fit estimators and find best one
TODO:拟合估算器并找到最佳估算器
"""

解题思路

1. 导入必要的库

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScalerfrom sklearn.metrics import roc_auc_score, auc
from sklearn.metrics import precision_recall_curve
import numpy as np

这些库的作用分别为:

  • fetch_openml:从 OpenML 平台加载数据集。
  • train_test_split:把数据集划分成训练集和测试集。
  • KNeighborsClassifierLogisticRegressionDecisionTreeClassifierSVC:四种不同的机器学习分类算法。
  • StandardScaler:对数据进行标准化处理。
  • roc_auc_scoreaucprecision_recall_curve:用于计算评估指标。
  • numpy:用于数值计算。

2. 加载数据

data = fetch_openml(data_id=42608)
X, y = data['data'].drop(columns='Outcome').values, data['data']['Outcome'].astype(int).values
  • 借助 fetch_openml 加载 ID 为 42608 的数据集,把特征数据存于 X 中,目标变量存于 y 中,同时将目标变量转换为整数类型。
  • 特征数据 X
    • data['data'] 取出的是数据集的特征数据部分,这是一个 pandasDataFrame 对象。
    • drop(columns='Outcome') 会从特征数据中移除名为 Outcome 的列,因为 Outcome 通常代表目标变量。
    • .valuesDataFrame 转换为 NumPy 数组,这样更适合用于机器学习模型的输入。
  • 目标变量 y
    • data['data']['Outcome'] 提取出 Outcome 列的数据,它同样是一个 pandasSeries 对象。
    • .astype(int) 将目标变量的数据类型转换为整数类型。
    • .valuesSeries 转换为 NumPy 数组。

3. 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)

使用 train_test_split 函数按 7:3 的比例将数据集划分为训练集和测试集,并且设置随机种子为 42 以保证结果的可重复性。

4. 数据预处理

scaler = StandardScaler() 
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
  • 利用 StandardScaler 对训练集和测试集的数据进行标准化处理,保证所有特征具有相同的尺度。(StandardScaler 是 sklearn 库中用于数据标准化的类,它可以将数据转换为均值为 0,标准差为 1 的标准正态分布。)
  • fit_transform 方法结合了 fittransform 两个步骤:
    • fit 方法:计算训练集的均值和标准差。具体来说,它会遍历训练集中的每个特征,计算其均值和标准差,这些统计信息会被存储在 scaler 对象中,后续用于对测试集进行转换。
    • transform 方法:使用计算得到的均值和标准差对训练集进行标准化处理。标准化的公式为:
      x s c a l e d = x − μ σ x_{scaled} = \frac{x - \mu}{\sigma} xscaled=σxμ
      其中, x x x 是原始数据, μ \mu μ 是均值, σ \sigma σ 是标准差。经过标准化处理后,每个特征的均值变为 0,标准差变为 1。
  • scaler.transform(X_test):这里只使用了 transform 方法,而没有再次使用 fit 方法。这是因为在机器学习中,我们必须使用训练集的统计信息(均值和标准差)来对测试集进行标准化处理,以保证训练集和测试集具有相同的尺度。如果对测试集也使用 fit_transform 方法,那么 scaler 会重新计算测试集的均值和标准差,这会导致训练集和测试集的尺度不一致,从而影响模型的性能。

5. 定义算法及其参数

tree = DecisionTreeClassifier(random_state=42)
lr = LogisticRegression(random_state=42, max_iter=1000)
knn = KNeighborsClassifier(n_neighbors=5)
svm = SVC(probability=True, random_state=42)

定义了四种分类算法,分别是决策树、逻辑回归、K 近邻和支持向量机,同时设置了相应的参数。

6. 存储算法和对应指标

algorithms = [tree, lr, knn, svm]
roc_aucs = []
pr_aucs = []

把四种算法存于 algorithms 列表中,并且创建两个空列表 roc_aucspr_aucs 用于存储每种算法的 ROC AUC 和 PR AUC 指标。

7. 训练模型并计算指标

for algorithm in algorithms:algorithm.fit(X_train, y_train)y_score = algorithm.predict_proba(X_test)[:, 1]# 计算ROC AUCroc_auc = roc_auc_score(y_test, y_score)roc_aucs.append(roc_auc)# 计算PR AUCprecision, recall, _ = precision_recall_curve(y_test, y_score)pr_auc = auc(recall, precision)pr_aucs.append(pr_auc)
  • 通过循环依次对每种算法进行训练,接着预测测试集的概率得分,计算 ROC AUC 和 PR AUC 指标,并将结果分别存储在 roc_aucspr_aucs 列表中。
  • algorithm.fit(X_train, y_train):对当前算法进行训练,使用训练集的特征数据 X_train 和对应的目标变量 y_train 来学习特征和目标之间的关系。
  • algorithm.predict_proba(X_test)[:, 1]:使用训练好的模型对测试集 X_test 进行预测,得到每个样本属于正类的概率。[:, 1] 表示只取属于正类的概率值

8. 找出最佳算法

best_roc_algorithm = np.argmax(roc_aucs) + 1
best_pr_algorithm = np.argmax(pr_aucs) + 1

运用 np.argmax 函数找出 roc_aucspr_aucs 列表中最大值的索引,加 1 后得到对应的算法编号。

9. 输出结果

result = int(str(best_roc_algorithm) + str(best_pr_algorithm))
print(result)

把最佳 ROC AUC 算法编号和最佳 PR AUC 算法编号拼接成一个字符串,再转换为整数后输出。

代码

from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScalerfrom sklearn.metrics import roc_auc_score, auc
from sklearn.metrics import precision_recall_curve
import numpy as np# 加载数据
data = fetch_openml(data_id=42608)
X, y = data['data'].drop(columns='Outcome').values, data['data']['Outcome'].astype(int).values# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42
)# 数据预处理
scaler = StandardScaler() # 对数据进行标准化处理,确保所有特征具有相同的尺度。
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 定义算法及其参数
tree = DecisionTreeClassifier(random_state=42)
lr = LogisticRegression(random_state=42, max_iter=1000)
knn = KNeighborsClassifier(n_neighbors=5)
svm = SVC(probability=True, random_state=42)# 存储算法和对应指标
algorithms = [tree, lr, knn, svm]
roc_aucs = []
pr_aucs = []# 训练模型并计算指标
for algorithm in algorithms:algorithm.fit(X_train, y_train)y_score = algorithm.predict_proba(X_test)[:, 1]# 计算ROC AUCroc_auc = roc_auc_score(y_test, y_score)roc_aucs.append(roc_auc)# 计算PR AUCprecision, recall, _ = precision_recall_curve(y_test, y_score)pr_auc = auc(recall, precision)pr_aucs.append(pr_auc)# 找出最佳算法
best_roc_algorithm = np.argmax(roc_aucs) + 1
best_pr_algorithm = np.argmax(pr_aucs) + 1# 输出结果
result = int(str(best_roc_algorithm) + str(best_pr_algorithm))
print(result)

输出:21

相关文章:

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM)

Python在糖尿病分类问题上寻找具有最佳 ROC AUC 分数和 PR AUC 分数(决策树、逻辑回归、KNN、SVM) 问题模板解题思路1. 导入必要的库2. 加载数据3. 划分训练集和测试集4. 数据预处理5. 定义算法及其参数6. 存储算法和对应指标7. 训练模型并计算指标8. 找…...

达梦数据库-学习-20-慢SQL优化之CTE等价改写

目录 一、环境信息 二、介绍 三、优化过程 1、原始SQL 2、源SQL执行时间 3、原始SQL执行计划 4、拆分问题 5、过滤性 6、统计信息收集 7、改写思路一 8、改写SQL一 9、改写SQL一的执行计划 10、改写思路二 11、改写SQL二 12、改写SQL二的执行计划 一、环境信息…...

软件生命周期模型:瀑布模型、螺旋模型、迭代模型、敏捷开发、增量模型、快速原型模型

目录 1.软件生命周期 2.软件生命周期模型 2.1瀑布模型 缺点【存在的问题】: 优点: 2.2 螺旋模型 特点: 2.3 迭代模型 优点: 2.4 敏捷开发 2.5 增量模型 增量模型一般和迭代模型一起使用: 2.6 快速原型模型…...

AI agents系列之全面介绍

随着大型语言模型(LLMs)的出现,人工智能(AI)取得了巨大的飞跃。这些强大的系统彻底改变了自然语言处理,但当它们与代理能力结合时,才真正释放出潜力——能够自主地推理、规划和行动。这就是LLM代理大显身手的地方,它们代表了我们与AI交互以及利用AI的方式的范式转变。 …...

Ubuntu 下通过 Docker 部署 WordPress 服务器

最近想恢复写私人博客的习惯,准备搭建一个wordpress。 在这篇博客中,我将记录如何在 Ubuntu 环境下通过 Docker 部署一个 WordPress 服务器。WordPress 是一个流行的内容管理系统(CMS),它让用户能够轻松地创建和管理网…...

Elasticsearch生态

目录 Elasticsearch核心概念 Elasticsearch实现全文检索的原理 Elasticsearch打分规则 常用的查询语法 ES数据同步方案 Elasticsearch生态非常丰富,包含了一系列工具和功能,帮助用户处理、分析和可视化数据,Elastic Stack是其核心部分&a…...

idea配置spring MVC项目启动(maven配置完后)

springmvc项目在idea中配置启动总结,下面的内容是在maven配置好后进行的。 配置 Tomcat 服务器 添加 Tomcat 到 IDEA: File → Settings → Build, Execution, Deployment → Application Servers → 点击 → 选择 Tomcat Server。 指定 Tomcat 安装目…...

大模型微调数据集怎么搞?基于easydataset实现文档转换问答对json数据集!

微调的难点之一在与数据集。本文介绍一种将文档转换为问答数据集的方法,超级快! 上图左侧是我的原文档,右侧是我基于文档生成的数据集。 原理是通过将文档片段发送给ollama本地模型,然后本地模型生成有关问题,并基于文…...

【排序算法】快速排序

目录 一、递归版本 1.1 hoare版本 问题1:为什么left 和 right指定的数据和key值相等时不能交换? 问题2:为什么跳出循环后right位置的值⼀定不⼤于key? 1.2 挖坑法 1.3 lomuto前后指针版本 二、快排优化 2.1 时间复杂度的计算 2.1.…...

爬虫:IP代理

什么是代理 代理服务器 代理服务器的作用 就是用来转发请求和响应 在爬虫中为何需要使用代理? 有些时候,需要对网站服务器发起高频的请求,网站的服务器会检测到这样的异常现象,则会讲请求对应机器的ip地址加入黑名单&#xff…...

JUC.atomic原子操作类原理分析

摘要 多线程场景下共享变量原子性操作除了可以使用Java自带的synchronized关键字以及AQS锁实现线程同步外,java.util.concurrent.atomic 包下提供了对基本类型封装类(AtomicBoolean|AtomicLong|AtomicReference|AtomicBoolean) 以及对应的数组封装。对于已有的包含…...

【XCP实战】AUTOSAR架构下XCP从0到1开发配置实践

目录 前言 正文 1.CAN功能开发 1.1 DBC的制作及导入 1.2 CanTrcv模块配置 1.3 Can Controller模块配置 1.4 CanIf模块配置 2.XCP模块集成配置配置 2.1.XCP模块配置 2.2.XCP模块的Task Mapping 2.3.XCP模块的初始化 3.在链接文件中定义标定段 4.编写标定相关的测试…...

【STM32】STemWin库,使用template API

目录 CubeMX配置 工程文件配置 Keil配置 STemwin配置 GUIConf.c LCDConf.c 打点函数 修改屏幕分辨率 GUI_X.c 主函数 添加区域填充函数 移植过程中需要一些参考手册,如下 STemwin使用指南 emWin User Guide & Reference Manual CubeMX配置 参考驱…...

Web开发-JavaEE应用动态接口代理原生反序列化危险Invoke重写方法利用链

知识点: 1、安全开发-JavaEE-动态代理&序列化&反序列化 2、安全开发-JavaEE-readObject&toString方法 一、演示案例-WEB开发-JavaEE-动态代理 动态代理 代理模式Java当中最常用的设计模式之一。其特征是代理类与委托类有同样的接口,代理类…...

C语言中while的相关题目

一、题目引入 以下程序中,while循环的循环次数是多少次? 二、代码分析 首先要明确的一点 while循环是当循环条件为真 就会一直循环 不会停止 while中i是小于10的 说明i可以取到0 1 2 3 4 5 6 7 8 9 进入第一个if判断i小于1为真时执行continue i0是为真的 执行continue 后…...

在Ubuntu下交叉编译 Qt 应用程序(完整步骤)

1、下载交叉编译器下: st-example-image-qt wayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh 通过网盘分享的文件:STM32项目 链接: https://pan.baidu.com/s/1hTvJT2r6czWCrKSuNEZCuw?pwdth7t 提取码: th7t --来自百度网盘超级…...

深入剖析 Axios 的 POST 请求:何时使用 qs 处理数据

在前端开发中,Axios 是一个广泛使用的用于发送 HTTP 请求的库,特别是在处理 POST 请求时,数据的处理方式会直接影响到请求能否正确被后端接收和处理。其中,使用 qs 库对数据进行处理是一个常见的操作点,本文将深入探讨…...

Python中NumPy的随机操作

在数据科学、机器学习和科学计算中,随机数的生成和操作是不可或缺的一部分。NumPy作为Python中强大的数值计算库,提供了丰富的随机数生成工具,能够满足从简单随机数生成到复杂概率分布模拟的多种需求。本文将深入探讨NumPy的随机操作功能&…...

从代码学习深度学习 - 多头注意力 PyTorch 版

文章目录 前言一、多头注意力机制介绍1.1 工作原理1.2 优势1.3 代码实现概述二、代码解析2.1 导入依赖序列掩码函数2.2 掩码 Softmax 函数2.3 缩放点积注意力2.4 张量转换函数2.5 多头注意力模块2.6 测试代码总结前言 在深度学习领域,注意力机制(Attention Mechanism)是自然…...

通过扣子平台工作流将数据写入飞书多维表格

1. 进入扣子平台,并创建工作流扣子 扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力,扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体,并发布到豆包、飞书等各个平台。https://www.coze.cn…...

python专题2-----用python生成多位,值均是数字的随机数

有很多方法可以用 Python 生成 多位随机数。我将向您介绍几个常用的方法,并解释它们的优缺点(此处以4位随机数为例): 1. 使用 random.randint() 这是最简单直接的方法: import randomrandom_number random.randint…...

Mybatis的简单介绍

文章目录 MyBatis 简介 1. MyBatis 核心特点2. MyBatis 核心组件3. MyBatis 基本使用示例(1) 依赖引入(Maven)(2) 定义 Mapper 接口(3) 定义实体类(4) 在 Service 层调用 4. MyBatis 与 JPA/Hibernate 对比 MyBatis 简介 MyBatis 是一款优秀的 持久层框…...

山东大学软件学院创新项目实训(11)之springboot+vue项目接入deepseekAPI

因为该阶段是前后端搭建阶段,所以没有进大模型的专项训练,所以先用老师给的deepseek接口进行代替 且因为前端设计部分非本人负责且还没有提交到github上,所以目前只能先编写一个简易的界面进行功能的测试 首先进行创建model类 然后创建Cha…...

Qt绘图事件

目录 1.绘图事件 1.1绘图事件 1.2声明一个画家对象 2.画线、画圆、画矩形、画文字 2.1画线 ​编辑 2.2画圆 2.3画矩形 2.4画文字 3.设置画笔 3.1设置画笔颜色 3.2设置画笔宽度 3.3设置画笔风格 4.设置画刷 4.1填色 4.2设置画刷风格 5.绘图高级设置 5.1设置抗锯…...

Linux 内核 BUG: Android 手机 USB 网络共享 故障

众所周知, 窝日常使用 ArchLinux 操作系统, 而 ArchLinux 是一个滚动发行版本, 也就是各个软件包更新很快. 然而, 突然发现, Android 手机的 USB 网络共享功能 BUG 了. 经过一通排查, 发现是 Linux 内核造成的 BUG. 哎, 没办法, 只能自己动手修改内核代码, 修复 BUG 了. 本文…...

程序化广告行业(82/89):解锁行业术语,开启专业交流之门

程序化广告行业(82/89):解锁行业术语,开启专业交流之门 在程序化广告这个充满活力与挑战的行业里,持续学习是我们不断进步的动力源泉。一直以来,我都期望能和大家一起深入探索这个领域,共同成长…...

Linux的网络配置的资料

目前有两种方式,network和NetworkManager。 network方式是在CentOS 6及更早版本中引入的配置方法,支持使用配置文件的方式管理网卡的配置。 NetworkManager是在CentOS 7及后续的版本中使用的配置方法,支持使用命令行和图形化界面的方式来管理…...

linux: 文件描述符fd

目录 1.C语言文件操作复习 2.底层的系统调用接口 3.文件描述符的分配规则 4.重定向 1.C语言文件操作复习 文件 内容 属性。所有对文件的操作有两部分:a.对内容的操作;b.对属性的操作。内容是数据,属性其实也是数据-存储文件&#xff0c…...

每天学一个 Linux 命令(16):mkdir

每天学一个 Linux 命令(16):mkdir 命令简介 mkdir(Make Directory)是 Linux 和类 Unix 系统中用于创建新目录的基础命令。它允许用户快速创建单个目录、多级嵌套目录,并能灵活设置目录权限。 主要用途 创建单个目录:快速生成新的空目录。递归创建多级目录:自动生成缺…...

Java微服务注册中心深度解析:环境隔离、分级模型与Eureka/Nacos对比

在微服务架构体系中,注册中心如同神经系统般承担着服务发现与健康管理的核心职能。本文将从生产环境实践出发,系统剖析注册中心的环境隔离策略、分级部署模型,并通过Eureka与Nacos两大主流组件的全方位对比,帮助开发者构建高可用服…...

c++:new关键字

目录 基本语法 使用举例 应用场景 使用 new 时的注意事项 基本语法 Type* ptr new Type;Type 是你要创建的类型(可以是基本类型、结构体、类等) new Type 表示在堆上创建一个 Type 类型的对象 ptr 是一个指针,指向这个对象 使用举例 …...

理解 MCP 协议的数据传递:HTTP 之上的一层“壳子

以下是以 CSDN 博客的风格记录你对 MCP 协议数据传递的理解和发现,内容涵盖了 MCP 协议基于 HTTP 的本质、JSON-RPC 的“壳子”作用,以及为什么熟悉 HTTP 协议就足以理解 MCP 的数据传递。文章面向技术社区,结构清晰,适合分享。 理…...

word中的mathtype公式编辑时,大(中)括号会存在很大的空白

如下所示,公式编辑的时候发现总会多一个空白,怎么删也删不掉 这主要是公式的分隔符问题,选择:“格式”-“分隔符对齐”,选择第三个可以消除下面的空白 点击“确认”,效果如下所示:...

【Java】查看当前 Java 使用的垃圾回收器

一、查询 Code import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.util.Arrays; import java.util.List;public class GCTypeDetector {public static void main(String[] args) {List<GarbageCollectorMX…...

Linux编程c/c++程序

前言 我们Windows系统下的idea可以说是非常智能了&#xff0c;集成了各种开发工具&#xff0c;包括并不限于编辑器/编译器/调试器/自动化构建工具/版本控制工具……而在Linux系统中&#xff0c;每个组件之间是相互独立的&#xff0c;每个组件各司其职&#xff0c;共同协作完成…...

【前端网络请求入门】XMLHttpRequest与Fetch保姆级教程

新手学前端时&#xff0c;经常会被「如何让网页和服务器说话」难住。今天我们用最通俗的语言&#xff0c;把浏览器最常用的两种网络请求方式——XMLHttpRequest和Fetch讲清楚&#xff0c;还会带完整的代码示例&#xff0c;跟着敲一遍就能上手&#xff01; 一、先搞懂「网络请求…...

redis单机安装

redis单机安装 下载地址 官网&#xff1a;https://redis.io/下载列表页面&#xff1a;https://download.redis.io/releases/ 说明 版本选择&#xff1a;redis-7.0.0.tar.gz下载地址&#xff1a;https://download.redis.io/releases/redis-7.0.0.tar.gz 安装前准备 在linu…...

从零手写RPC-version0

参考文档 https://github.com/he2121/MyRPCFromZero Version-0 0、写项目第一步&#xff0c;先添加远程仓库 先在 github 上新建仓库&#xff0c;然后将本地新建的项目推送到远程仓库中 由于网上很多教程&#xff0c;所以本节不再赘述&#xff08;可以让 chatGPT给出一个完…...

MOM成功实施分享(八)汽车活塞生产制造MOM建设方案(第二部分)

在制造业数字化转型的浪潮中&#xff0c;方案对活塞积极探索&#xff0c;通过实施一系列数字化举措&#xff0c;在生产管理、供应链协同、质量控制等多个方面取得显著成效&#xff0c;为行业提供了优秀范例。 1.转型背景与目标&#xff1a;活塞在数字化转型前面临诸多挑战&…...

二、Android Studio环境安装

一、下载安装 下载 Android Studio 和应用工具 - Android 开发者 | Android DevelopersAndroid Studio 提供了一些应用构建器以及一个已针对 Android 应用进行优化的集成式开发环境 (IDE)。立即下载 Android Studio。https://developer.android.google.cn/studio?hlzh-c…...

构件与中间件技术:概念、复用、分类及标准全解析

以下是对构件与中间件技术相关内容更详细的介绍&#xff1a; 一、构件与中间件技术的概念 1.构件技术 定义&#xff1a;构件是具有特定功能、可独立部署和替换的软件模块&#xff0c;它遵循一定的规范和接口标准&#xff0c;能够在不同的软件系统中被复用。构件技术就是以构…...

亲手打造可视化故事线管理工具:开发全流程、难点突破与开发过程经验总结

亲手打造可视化故事线管理工具&#xff1a;开发全流程、难点突破与开发过程经验总结 作为还没入门的业余编程爱好者&#xff0c;奋战了2天&#xff0c;借助AI开发一款FLASK小工具&#xff0c;功能还在完善中&#xff08;时间轴可以跟随关联图缩放&#xff0c;加了一个用C键控制…...

CSS 字体学习笔记

在网页设计中&#xff0c;字体的使用对于提升用户体验和页面美观性至关重要。CSS 提供了一系列字体属性&#xff0c;用于控制文本的显示效果。以下是对 CSS 字体属性的详细学习笔记。 一、字体系列&#xff08;font-family&#xff09; 1. 字体系列的分类 在 CSS 中&#xf…...

通过 spring ai 对接 deepseek ai 大模型通过向量数据库,完成 AI 写标书及构建知识库功能的设计与开发

AI写标书及知识库构建详细设计方案 一、系统架构设计 +-------------------+ +-------------------+ +-------------------+ | 用户交互层 | | AI服务层 | | 知识库存储层 | | (Web/API) |---->| (Spring AI) |---…...

cropperjs 2.0裁剪图片后转base64提示“Tainted canvases may not be exported”跨域问题的解决办法。

目录 为什么会有这边文章 辛酸历程&#xff0c;不看也罢 想解决问题&#xff0c;看这里就够了 问题已解决&#xff0c;后边还是废话 为什么会有这边文章 最近&#xff0c;做一个项目需要用在前端实现图片裁剪功能&#xff0c;毋庸置疑&#xff0c;cropperjs是不二选择。当在…...

2、JSX:魔法世界的通行证——用魔法符号编织动态界面

一、开篇&#xff1a;魔法符号的觉醒 "看呐&#xff0c;赫敏&#xff01;这根魔杖&#xff08;React组件&#xff09;为何能自动绘制出动态界面&#xff1f;"年轻的巫师学徒罗恩指着闪烁的屏幕惊呼。 "这就是JSX魔法阵的威力&#xff0c;"邓布利多校长挥舞…...

八大排序算法

目录 八大排序算法排序算法的稳定性比较排序插入排序直接插入排序希尔排序希尔排序的时间复杂度计算 选择排序直接选择排序堆排序 交换排序冒泡排序快速排序递归hoare版本挖坑法lomuto前后指针 非递归 归并排序排序性能对比 非比较排序计数排序 比较排序算法总结 八大排序算法 …...

搭建一个Spring Boot聚合项目

1. 创建父项目 打开IntelliJ IDEA&#xff0c;选择 New Project。 在创建向导中选择 Maven&#xff0c;确保选中 Create from archetype&#xff0c;选择 org.apache.maven.archetypes:maven-archetype-quickstart。 填写项目信息&#xff1a; GroupId&#xff1a;com.exampl…...

Google A2A协议解析:构建分布式异构多Agent系统

一、A2A 是什么&#xff1f;有什么用&#xff1f; 1.1 A2A 是什么&#xff1f; A2A&#xff08;Agent-to-Agent Protocol&#xff09;是Google最新推出的一项开源协议&#xff0c;旨在为AI智能体&#xff08;Agents&#xff09;提供标准化的通信方式。它允许不同框架&#xf…...

【Android读书笔记】读书笔记记录

文章目录 一. Android开发艺术探索1. Activity的生命周期和启动模式1.1 生命周期全面分析 一. Android开发艺术探索 1. Activity的生命周期和启动模式 1.1 生命周期全面分析 onPause和onStop onPause后会快速调用onStop&#xff0c;极端条件下直接调用onResume 当用户打开新…...