PRISM-Python 中的规则一个简单的 Python 规则感应系统
欢迎来到雲闪世界.PRISM 是一种现有算法(尽管我确实创建了一个 Python 实现),PRISM 相对简单,但在机器学习中,有时最复杂的解决方案效果最好,有时最简单的解决方案效果最好。然而,当我们希望建立可解释的模型时,简单性会带来很大的好处。
PRISM 是一种规则归纳工具。也就是说,它创建一组规则来根据其他特征预测目标特征。
规则在机器学习中至少有几个非常重要的用途。一是预测。与决策树、线性回归、GAM、ikNN、加性决策树、决策表和少数其他工具类似,它们可以提供可解释的分类模型。
规则也可以简单地用作理解数据的一种技术。事实上,即使没有标签,它们也可以以无监督的方式使用,创建一组规则来预测每个特征之间的区别(依次将表中的每个特征视为目标列),这可以突出显示数据中的任何强模式。
还有其他用于在 Python 中创建规则的工具,包括非常强大的imodels 库。但是,创建一组既准确又易于理解的规则仍然具有挑战性。规则感应系统通常无法创建合理准确的模型,或者,如果可以,也只能通过创建许多规则和包含许多术语的规则来实现。例如,以下规则:
如果颜色 =’蓝色’ 并且高度 < 3.4 并且宽度 > 3.2 并且长度 > 33.21 并且温度 > 33.2 并且温度 < 44.2 并且宽度 < 5.1 并且重量 > 554.0 并且 … 那么…
如果规则包含超过五到十个术语,它们就会变得难以遵循。如果术语足够多,规则最终可能会变得无法解释。如果规则集包含的规则数量超过中等数量,整个规则集就会变得难以遵循(如果每条规则都包含许多术语,情况就更是如此)。
PRISM 规则
PRISM 是一个规则归纳系统,由 Chendrowska 首次提出,并在《数据挖掘原理》中进行了描述。
PRISM 支持生成规则,既可以作为描述模型:描述表中的模式(以特征之间的关联形式);也可以作为预测模型。它通常会生成一组非常简洁、清晰的可解释规则。
作为一个预测模型,它提供了所谓的全局和局部解释(在可解释人工智能(XAI)中使用的术语中)。也就是说,它是完全可解释的,既可以理解整个模型,也可以理解单个预测。
测试多个规则感应系统后,我经常发现 PRISM 生成的规则集最简洁。不过,没有一个系统始终表现最佳,通常需要尝试一些规则感应工具。
生成的规则采用析取范式(AND 的 OR),每个单独的规则都是一个或多个项的 AND,每个项的形式为特征 = 值,其中某个值位于该特征的值集合中。例如:生成的规则可能采用以下形式:
目标值“蓝色”的规则:
- 如果 feat_A = ‘hot’ 并且 feat_C = ‘round’ 那么 ‘blue’
- 如果 feat_A = ‘warm’ 并且 feat_C = ‘square’ 那么 ‘blue’
目标值“red”的规则:
- 如果 feat_A = ‘冷’ 并且 feat_C = ‘三角形’ 那么 ‘红色’
- 如果 feat_A = ‘cool’ 并且 feat_C = ‘triangular’ 那么 ‘red’
该算法严格适用于 X 和 Y 列中的分类特征。因此,此实现将自动对所有数字列进行分箱以支持该算法。默认情况下,使用三个等计数分箱(代表特征的低、中、高值),但这可以通过 nbins 参数进行配置(可以使用更多或更少的分箱)。
PRISM 算法
对于本节,我们假设使用 PRISM 作为预测模型,具体来说是作为分类器。
该算法的工作原理是为目标列中的每个类创建一组规则。例如,如果在 Iris 数据集上执行,其中目标列中有三个值(Setosa、Versicolour 和 Virginica),那么将有一组与 Setosa 相关的规则、一组与 Versicolour 相关的规则和一组与 Virginica 相关的规则。
生成的规则应以“先触发规则”的方式读取,因此所有规则都以合理的顺序生成和呈现(从与每个目标类别最相关到最不相关)。例如,检查与 Setosa 相关的规则集,我们将有一组预测鸢尾花是否为 Setosa 的规则,这些规则将按预测性从高到低的顺序排列。其他两个类别的规则集也是如此。
生成规则
我们将在此描述 PRISM 用于为一个类别生成一组规则的算法。假设我们即将使用 Iris 数据集为 Setosa 类别生成规则。
首先,PRISM 会找到可用来预测目标值的最佳规则。Setosa 的第一条规则会预测尽可能多的 Setosa 记录。也就是说,我们会在其他特征的某个子集中找到唯一值集,这些值集最能预测记录何时会是 Setosa。这是 Setosa 的第一条规则。
但是,第一条规则不会涵盖所有 Setosa 记录,因此我们创建了额外的规则来涵盖 Setosa 的剩余行(或尽可能多的行)。
当发现每个规则时,将删除与该规则匹配的行,并找到下一个规则来最好地描述该目标值的剩余行。
每个规则可以有任意数量的术语。
对于目标列中的每个其他值,我们再次从完整数据集开始,在发现规则时删除行,并生成其他规则来解释此目标类值的剩余行。因此,在找到 Setosa 的规则后,PRISM 将生成 Versicolour 的规则,然后生成 Virginica 的规则。
覆盖范围和支持
此实现通过输出与每个规则相关的统计数据增强了数据挖掘原理中描述的算法,因为许多导出的规则可能比其他导出的规则更相关,或者相反,其重要性大大降低。
此外,跟踪有关每条规则的简单统计数据允许提供参数来指定每条规则的最小覆盖率(该规则适用的训练数据中的最小行数);以及最小支持度(目标类别与与规则匹配的行的期望值匹配的最小概率)。这些有助于减少噪音(额外的规则只会给模型的描述或预测能力增加很小的价值),但可能会导致某些目标类别的规则很少或没有规则,可能无法覆盖一个或多个目标列值的所有行。在这些情况下,用户可能希望调整这些参数。
与决策树的比较
决策树是最常见的可解释模型之一,很可能是最常见的。当足够小时,它们可以合理地解释,可能与任何模型类型一样可解释,并且它们对于许多问题(当然不是全部)都可以相当准确。然而,它们作为可解释模型确实有局限性,而 PRISM 的设计就是为了解决这个问题。
决策树并非专门为可解释性而设计的;决策树的一个方便属性就是它们具有可解释性。例如,它们通常会变得比容易理解的要大得多,并且经常会出现重复的子树,因为与特征的关系必须在树中重复多次才能被正确捕获。
此外,单个预测的决策路径可能包含与最终预测无关甚至具有误导性的节点,从而进一步降低可压缩性。
Cendrowska 的论文提供了一些无法用树轻易表示的简单规则集的示例。例如:
- 规则 1:如果 a = 1 并且 b = 1,则 class = 1
- 规则 2:如果 c = 1 并且 d = 1,则 class = 1
这些导致了一棵令人惊讶的复杂树。事实上,这是一种导致决策树过于复杂的常见模式:“有两个(底层)规则没有共同的属性,这种情况在实践中很可能经常发生” [3]
规则通常可以生成比决策树更易于解释的模型(尽管反之亦然),并且对于任何需要可解释模型的项目来说,规则都非常有用。而且,如果目标不是构建预测模型,而是理解数据,那么使用多个模型可能有利于捕获数据的不同元素。
安装
该项目由一个Python 文件组成,可以使用以下命令下载并包含在任何项目中:
从prism_rules导入PrismRules
使用 sklearn 的 Wine 数据集的示例
github 页面提供了两个示例笔记本,提供了使用该工具的简单但全面的示例。不过,该工具非常简单。要使用该工具生成规则,只需创建一个 PrismRules 对象并使用数据集调用 get_prism_rules(),指定目标列:
import pandas as pd from sklearn.datasets import load_winedata = datasets.load_wine() df = pd.DataFrame(data.data, columns=data.feature_names) df['Y'] = data['target'] display(df.head())prism = PrismRules() _ = prism.get_prism_rules(df, 'Y')
结果
该数据集在目标列中有三个值,因此将生成三组规则:
................................................................ Target: 00 ................................................................proline = High AND alcohol = HighSupport: the target has value: '0' for 100.000% of the 39 rows matching the rule Coverage: the rule matches: 39 out of 59 rows for target value: 0. This is:66.102% of total rows for target value: 021.910% of total rows in dataproline = High AND alcalinity_of_ash = LowSupport: The target has value: '0' for 100.000% of the 10 remaining rows matching the rule Coverage: The rule matches: 10 out of 20 rows remaining for target value: '0'. This is:50.000% of remaining rows for target value: '0'16.949% of total rows for target value: 05.618% of total rows in data0................................................................ Target: 1 ................................................................ color_intensity = Low AND alcohol = LowSupport: the target has value: '1' for 100.000% of the 46 rows matching the rule Coverage: the rule matches: 46 out of 71 rows for target value: 1. This is:64.789% of total rows for target value: 125.843% of total rows in datacolor_intensity = LowSupport: The target has value: '1' for 78.571% of the 11 remaining rows matching the rule Coverage: The rule matches: 11 out of 25 rows remaining for target value: '1'. This is:44.000% of remaining rows for target value: '1'15.493% of total rows for target value: 16.180% of total rows in data................................................................ Target: 2 ................................................................ flavanoids = Low AND color_intensity = MedSupport: the target has value: '2' for 100.000% of the 16 rows matching the rule Coverage: the rule matches: 16 out of 48 rows for target value: 2. This is:33.333% of total rows for target value: 28.989% of total rows in dataflavanoids = Low AND alcohol = HighSupport: The target has value: '2' for 100.000% of the 10 remaining rows matching the rule Coverage: The rule matches: 10 out of 32 rows remaining for target value: '2'. This is:31.250% of remaining rows for target value: '2'20.833% of total rows for target value: 25.618% of total rows in dataflavanoids = Low AND color_intensity = High AND hue = LowSupport: The target has value: '2' for 100.000% of the 21 remaining rows matching the rule Coverage: The rule matches: 21 out of 22 rows remaining for target value: '2'. This is:95.455% of remaining rows for target value: '2'43.750% of total rows for target value: 211.798% of total rows in data
对于每条规则,我们都可以看到支持和覆盖。
支持度表示有多少行支持该规则;即:在可以应用该规则的行中,有多少行是正确的。这里的第一条规则是:
proline = High AND alcohol = HighAND alcohol = HighSupport: the target has value: '0' for 100.000% of the 39 rows matching the rule
这表明,在脯氨酸 = 高(特征脯氨酸具有高数值)且酒精度为高(特征酒精具有高数值)的 39 行中,其中 100% 的目标为 0。
覆盖率表示规则覆盖了多少行。对于第一条规则,覆盖率是:
Coverage: the rule matches: 39 out of 59 rows for target value: 0. This is:matches: 39 out of 59 rows for target value: 0. This is:66.102% of total rows for target value: 021.910% of total rows in data
这表示行数和数据行百分比的覆盖率。
生成预测的示例
为了创建预测,我们只需调用 predict() 并传递具有与用于拟合模型的数据框相同特征的数据框(尽管可以选择省略目标列,如本例所示)。
y_pred = prism.predict(df.drop(columns=['Y']))'是' ]))
这样,PRISM 规则可以等效地用于任何其他预测模型,例如决策树、随机森林、XGBoost 等。
但是,在生成预测时,某些行可能不符合任何规则。在这种情况下,默认情况下,将使用训练期间目标列中最常见的值(可以通过访问 prism.default_target 看到)。predict() 方法还支持参数 leave_unknown。如果将其设置为 True,则任何不符合任何规则的记录都将设置为“无预测”。在这种情况下,即使原始目标列是数字,预测也将以字符串类型返回。
示例笔记本中提供了更多示例。
数值数据示例
在此示例中,我们使用 sklearn 的 make_classification() 方法创建数值数据(目标列除外),然后将其分箱。这将使用每个数值特征三个分箱的默认值。
x, y = make_classification(n_samples=1000, 1000, n_features=20, n_informative=2,n_redundant=2,n_repeated=0,n_classes=2,n_clusters_per_class=1,class_sep=2,flip_y=0, random_state=0)df = pd.DataFrame(x) df['Y'] = y prism = PrismRules() _ = prism.get_prism_rules(df, 'Y')
结果
每列的数据被分为低、中、高三个值。结果是每个目标类别的一组规则。
Target: 00 1 = HighSupport: the target has value: '0' for 100.000% of the 333 rows matching the rule Coverage: the rule matches: 333 out of 500 rows for target value: 0. This is:66.600% of total rows for target value: 033.300% of total rows in data15 = Low AND 4 = MedSupport: The target has value: '0' for 100.000% of the 63 remaining rows matching the rule Coverage: The rule matches: 63 out of 167 rows remaining for target value: '0'. This is:37.725% of remaining rows for target value: '0'12.600% of total rows for target value: 06.300% of total rows in data4 = High AND 1 = MedSupport: The target has value: '0' for 100.000% of the 47 remaining rows matching the rule Coverage: The rule matches: 47 out of 104 rows remaining for target value: '0'. This is:45.192% of remaining rows for target value: '0'9.400% of total rows for target value: 04.700% of total rows in data
《数据挖掘原理》一书中的示例
此示例是在 github 页面上的一个示例笔记本中提供的。
PRISM 制定了三条规则:
- 如果眼泪 = 1 那么目标=3
- 如果 astig = 1 并且 tears = 2 并且 specRX = 2 那么 Target=2
- 如果 astig = 2 且 tears = 2 AND specRX =1 那么 Target =1
执行时间处理时间
该算法通常能够在几秒或几分钟内生成一组规则,但如果需要减少算法的执行时间,可以使用数据样本代替完整数据集。该算法通常在数据样本上效果很好,因为模型寻找的是一般模式而不是例外,并且这些模式将存在于任何足够大的样本中。
github 页面上提供了有关调整模型的进一步说明。
结论
不幸的是,目前可用的可解释预测模型相对较少。此外,没有一个可解释模型对所有数据集都足够准确或足够可解释。因此,在可解释性很重要的地方,值得测试多个可解释模型,包括决策树、其他规则归纳工具、GAM、ikNN、加法决策树和 PRISM 规则。
PRISM 规则通常会生成清晰、可解释的规则,并且通常具有较高的准确度,尽管这会因项目而异。虽然与其他预测模型类似,但需要进行一些调整。
感谢关注雲闪世界。(亚马逊aws和谷歌GCP服务协助解决云计算及产业相关解决方案)
订阅频道(https://t.me/awsgoogvps_Host)
TG交流群(t.me/awsgoogvpsHost)d
相关文章:
PRISM-Python 中的规则一个简单的 Python 规则感应系统
欢迎来到雲闪世界.PRISM 是一种现有算法(尽管我确实创建了一个 Python 实现),PRISM 相对简单,但在机器学习中,有时最复杂的解决方案效果最好,有时最简单的解决方案效果最好。然而,当我们希望建立…...
DB-GPT:LLM应用的集大成者
整体架构 架构解读 可以看到,DB-GPT把架构抽象为7层,自下而上分别为: 运行环境:支持本地/云端&单机/分布式等部署方式。顺便一提,RAY是蚂蚁深度参与的一个开源项目,所以对RAY功能的支持应该非常完善。…...
汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法
汉明权重(Hamming Weight)(统计数据中1的个数)VP-SWAR算法 定义 汉明重量是一串符号中非零符号的个数。它等于同样长度的全零符号串的汉明距离(在信息论中,两个等长字符串之间的汉明距离等于两个字符串对应位置的不同…...
基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!
基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度(通常是 float32࿰…...
二、原型模式
文章目录 1 基本介绍2 实现方式深浅拷贝目标2.1 使用 Object 的 clone() 方法2.1.1 代码2.1.2 特性2.1.3 实现深拷贝 2.2 在 clone() 方法中使用序列化2.2.1 代码 2.2.2 特性 3 实现的要点4 Spring 中的原型模式5 原型模式的类图及角色5.1 类图5.1.1 不限制语言5.1.2 在 Java 中…...
【目标检测】Anaconda+PyTorch(GPU)+PyCharm(Yolo5)配置
前言 本文主要介绍在windows系统上的Anaconda、PyTorch、PyCharm、Yolov5关键步骤安装,为使用yolo所需的环境配置完善。同时也算是记录下我的配置流程,为以后用到的时候能笔记查阅。 Anaconda 软件安装 Anaconda官网:https://www.anaconda…...
Django实战项目之进销存数据分析报表——第二天:项目创建和 PyCharm 配置
在上一篇博客中,我们讨论了如何搭建一个全栈 Web 应用的开发环境,包括 Python 环境的创建、Django 和 MySQL 的安装以及前端技术栈的选择。现在,让我们继续深入,学习如何在 PyCharm 中创建一个新的 Django 项目并进行配置。 一…...
静态路由实验
1.实验拓扑图 二、实验要求 1.R6为ISP,接口IP地址均为公有地址,该设备只能配置IP地址,之后不能再对其进行任何配置; 2.R1-R5为局域网,私有IP地址192.168.1.0/24,请合理分配; 3.R1、R2、R4&…...
VSCode STM32嵌入式开发插件记录
要卸载之前搭建的VSCode嵌入式开发环境了,记录一下用的插件。 1.Cortex-Debug https://github.com/Marus/cortex-debug 2.Embedded IDE https://github.com/github0null/eide 3.Keil uVision Assistant https://github.com/jacksonjim/keil-assistant/ 4.RTO…...
linux cpu 占用超100% 分析。
感谢: https://www.cnblogs.com/wolfstark/p/16450131.html 总结: 查看进程中各个线程占用百分比 top -H -p <pid> 某线程100%了 说明 任务处理不过来 会卡 但是永远不可能超100% 系统监视器里面看到的是 所有线程占用的 总和会超100%。 所以最好的情况是&…...
自然学习法和科学学习法
一、自然学习法 自然学习法:什么事自然学习法,特意让kimi来回答了一下。所谓的自然学习法说的俗一点就是野路子学习方法。这种学习方法的特点是“慢”“没有系统性”,学完之后感觉都会了,但是又感觉什么都不会。 二、科学学习法 …...
力扣第二十四题——两两交换链表中的节点
内容介绍 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出ÿ…...
C语言柔性数组详解
目录 1.柔性数组 2.柔性数组的特点 3.柔性数组的使用 4.柔性数组的优势 1.柔性数组 C99 中,结构体中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。 例如: struct S {char c;int n;int arr[];//柔性数组 }; struct …...
自动驾驶---视觉Transformer的应用
1 背景 在过去的几年,随着自动驾驶技术的不断发展,神经网络逐渐进入人们的视野。Transformer的应用也越来越广泛,逐步走向自动驾驶技术的前沿。笔者也在博客《人工智能---什么是Transformer?》中大概介绍了Transformer的一些内容:…...
预训练语言模型实践笔记
Roberta output_hidden_statesTrue和last_hidden_states和pooler_output 在使用像BERT或RoBERTa这样的transformer模型时,output_hidden_states和last_hidden_state是两个不同的概念。 output_hidden_states: 这是一个布尔值,决定了模型是否应该返回所…...
Perl 哈希
Perl 哈希 Perl 哈希是一种强大的数据结构,用于存储键值对集合。它是 Perl 语言的核心特性之一,广泛应用于各种编程任务中。本文将详细介绍 Perl 哈希的概念、用法和最佳实践。 什么是 Perl 哈希? Perl 哈希是一种关联数组,其中…...
Linux之Mysql索引和优化
一、MySQL 索引 索引作为一种数据结构,其用途是用于提升数据的检索效率。 1、索引分类 - 普通索引(INDEX):索引列值可重复 - 唯一索引(UNIQUE):索引列值必须唯一,可以为NULL - 主键索引(PRIMARY KEY):索引列值必须唯一,不能为NULL,一个表只能有一个主键索引 - 全…...
springboot业务逻辑写在controller层吗
Spring Boot中的业务逻辑不应该直接写在Controller层。 在Spring Boot项目中,通常将业务逻辑分为几个层次,包括Controller层、Service层、Mapper层和Entity层。 1.其中,Controller层主要负责处理HTTP请求,通过注…...
Ubuntu 24.04 LTS 桌面安装MT4或MT5 (MetaTrader)教程
运行脚本即可在 Ubuntu 24.04 LTS Noble Linux 上轻松安装 MetaTrader 5 或 4 应用程序,使用 WineHQ 进行外汇交易。 MetaTrader 4 (MT4) 或 MetaTrader 5 是用于交易外汇对和商品的流行平台。它支持各种外汇经纪商、内置价格分析工具以及通过专家顾问 (EA) 进行自…...
Go基础编程 - 12 -流程控制
流程控制 1. 条件语句1.1. if...else 语句1.2. switch 语句1.3. select 语句1.3.1. select 语句的通信表达式1.3.2. select 的基特性1.3.3. select 的实现原理1.3.4. 经典用法1.3.4.1 超时控制1.3.4.2 多任务并发控制1.3.4.3 监听多通道消息1.3.4.4 default 实现非堵塞读写 2. …...
汽车信息安全--TLS,OpenSSL
目录 TLS相关知识 加密技术 对称加密 非对称加密 数字签名和CA 信任链 根身份证和自签名 双方TLS认证 加密和解密的性能 TLS相关知识 加密技术 TLS依赖两种加密技术 1. 对称加密(symmetric encryption) 2. 非对称加密(asymmetri…...
深入探索 SQL 中的 LIKE 右模糊匹配(LIKE RIGHT)与左模糊匹配(LIKE LEFT)
引言 在数据库操作中,LIKE 子句是执行模糊搜索的强大工具,用于匹配列中的数据与指定的模式。本文将详细介绍 LIKE 子句中的两种常用模式:右模糊匹配(LIKE RIGHT)和左模糊匹配(LIKE LEFT)&#…...
mybatis 多数据源 TDataSource required a single bean, but 2 were found
情况说明: 项目中本来就有一个数据源了,运行的好好的后来又合并了另一个项目,另一个项目也配置了数据源。 于是出现了如下错误: mybatis 多数据源 TDataSource required a single bean, but 2 were found 解决方法:…...
Dubbo SPI 之路由器
1. 背景介绍 Dubbo 是一个高性能的 Java RPC 框架,由阿里巴巴开源并广泛应用于分布式系统中。在 Dubbo 的架构中,SPI(Service Provider Interface)是一个关键组件,允许在运行时动态加载不同的服务实现。SPI 机制提供了…...
Python深度学习环境配置(Pytorch、CUDA、cuDNN),包括Anaconda搭配Pycharm的环境搭建以及基础使用教程(保姆级教程,适合小白、深度学习零基础入门)
全流程导览 一、前言二、基本介绍2.1全过程软件基本介绍2.1.1 Pytorch2.1.2 Anaconda2.1.3 Pycharm2.1.4 显卡GPU及其相关概念2.1.5 CUDA和cuDNN 2.2 各部分相互间的联系和安装逻辑关系 三、Anaconda安装3.1安装Anaconda3.2配置环境变量3.3检验是否安装成功 四、Pycharm安装五、…...
月影护眼大路灯怎么样?书客|月影|霍尼韦尔超硬核实力性能测评pk!
月影护眼大路灯怎么样?选到专业优质的护眼大路灯是真的可以使我们在用眼时减少疲劳感,达到护眼效果,但如果不慎买到劣质的护眼灯产品,不仅达不到健康的环境光,还越用越觉得眼睛疲劳感加重,在水深的护眼灯市…...
邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS)
1. 前言 使用过邮件客户端的同学一定见过下面这张图。这是客户端账号配置界面,里面有SSL、STARTTLS选项。刚接触邮件客户端的同学肯定会有这些疑问:什么是SSL?什么是STARTTLS?两者有什么区别?具体该如何选择呢&#x…...
【系统架构设计 每日一问】三 Redis支持事务么,Redis的事务如何保证
实际上,关于Redis事务的说法“Redis 的事务只能保证隔离性和一致性(I 和 C),无法保证原子性和持久性(A 和 D)”并不完全准确。下面我将分别解释Redis事务的四个特性:原子性(Atomicit…...
【中项】系统集成项目管理工程师-第4章 信息系统架构-4.3应用架构
前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...
DasViewer打开Revit输出的fbx格式的模型,为啥一团黑?
答:这个应该是没有读取到贴图文件。贴图文件和obj文件需要在同级目录下面。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。 免…...
【05】LLaMA-Factory微调大模型——初尝微调模型
上文【04】LLaMA-Factory微调大模型——数据准备介绍了如何准备指令监督微调数据,为后续的微调模型提供高质量、格式规范的数据支撑。本文将正式进入模型微调阶段,构建法律垂直应用大模型。 一、硬件依赖 LLaMA-Factory框架对硬件和软件的依赖可见以下…...
Training for Stable Diffusion
1.Training for Stable Diffusion 笔记来源: 1.Denoising Diffusion Probabilistic Models 2.最大似然估计(Maximum likelihood estimation) 3.Understanding Maximum Likelihood Estimation 4.How to Solve ‘CUDA out of memory’ in PyTorch 5.pytorch-stable-d…...
初学51单片机之指针基础与串口通信应用
开始之前推荐一个电路学习软件,这个软件笔者也刚接触。名字是Circuit有在线版本和不在线版本,这是笔者在B站看视频翻到的。 Paul Falstadhttps://www.falstad.com/这是地址。 离线版本在网站内点这个进去 根据你的系统下载你需要的版本红线的是windows…...
【启明智显分享】甲醛检测仪HMI方案:ESP32-S3方案4.3寸触摸串口屏,RS485、WIFI/蓝牙可选
今年,“串串房”一词频繁引发广大网友关注。“串串房”,也被称为“陷阱房”“贩子房”——炒房客以低价收购旧房子或者毛坯房,用极度节省成本的方式对房子进行装修,之后作为精修房高价租售,因甲醛等有害物质含量极高&a…...
Linux 驱动学习笔记
1、驱动程序分为几类? • 内核驱动程序(Kernel Drivers):这些是运行在操作系统内核空间的驱动程序,用于直接访问和控制硬件设备。它们提供了与硬件交互的底层功能,如处理中断、访问寄存器、数据传输等。 •…...
ip地址设置了重启又改变了怎么回事
在数字世界的浩瀚星海中,IP地址就如同每个设备的“身份证”,确保它们在网络中准确无误地定位与通信。然而,当我们精心为设备配置好IP地址后,却时常遭遇一个令人费解的现象:一旦设备重启,原本设定的IP地址竟…...
layui table 浮动操作内容收缩,展开
layui table 隐藏浮动操作内容 fixed: right, style:, title: 操作,align:left, minWidth: 450, toolbar:#id分析: 浮动一块新增一个class layui-table-fixed-r 可以隐藏整块内容进行,新增一个按钮点击时间,然后进行收缩和展开 $(‘.layui-…...
Ubuntu24.04 NFS 服务配置
1、NFS 介绍 NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本…...
vue3使用html2canvas
安装 yarn add html2canvas 代码 <template><div class"container" ref"container"><div class"left"><img :src"logo" alt"" class"logo"><h2>Contractors pass/承包商通行证&l…...
OpenCV分水岭算法watershed函数的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 描述 我们将学会使用基于标记的分水岭算法来进行图像分割。我们将看到:watershed()函数的用法。 任何灰度图像都可以被视为一个地形表…...
laravel为Model设置全局作用域
如果一个项目中存在这么一个sql条件在任何情况下或大多数情况都会被使用,同时很容易被开发者遗忘,那么就非常适用于今天要提到的这个功能,Eloquent\Model的全局作用域。 首先看一个示例,有个数据表,结构如下࿱…...
Leetcode之string
目录 前言1. 字符串相加2. 仅仅反转字母3. 字符串中的第一个唯一字符4. 字符串最后一个单词的长度5. 验证回文串6. 反转字符串Ⅱ7. 反转字符串的单词Ⅲ8. 字符串相乘9. 打印日期 前言 本篇整理了一些关于string类题目的练习, 希望能够学以巩固. 博客主页: 酷酷学!!! 点击关注…...
OS:处理机进程调度
1.BackGround:为什么要进行进程调度? 在多进程环境下,内存中存在着多个进程,其数目往往多于处理机核心数目。这就要求系统可以按照某种算法,动态的将处理机CPU资源分配给处于就绪状态的进程。调度算法的实质其实是一种…...
【车辆轨迹处理】python实现轨迹点的聚类(一)——DBSCAN算法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、单辆车轨迹的聚类与分析1.引入库2.聚类3.聚类评价 二、整个数据集多辆车聚类1.聚类2.整体评价 前言 空间聚类是基于一定的相似性度量对空间大数据集进行分组…...
Apache Kylin
Apache Kylin 是一个开源的分布式分析引擎,提供 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据集。它能在亚秒级的时间内提供 PB 级数据的查询能力,非常适合大数据分析和报表系统。 ### 入门指南 #### 1. 环境准备 首先…...
为何Vue3比Vue2快
Proxy响应式 PatchFlag 编译模板时,动态节点做标记标记,分为不同的类型,如TEXT PROPSdiff算法时,可以区分静态节点,以及不同类型的动态节点 <div>Hello World</div> <span>{{ msg }}</span>…...
人工智能与社交变革:探索Facebook如何领导智能化社交平台
在过去十年中,人工智能(AI)技术迅猛发展,彻底改变了我们与数字世界互动的方式。Facebook作为全球最大的社交媒体平台之一,充分利用AI技术,不断推动社交平台的智能化,提升用户体验。本文将深入探…...
八股文之java基础
jdk9中对字符串进行了一个什么优化? jdk9之前 字符串的拼接通常都是使用进行拼接 但是的实现我们是基于stringbuilder进行的 这个过程通常比较低效 包含了创建stringbuilder对象 通过append方法去将stringbuilder对象进行拼接 最后使用tostring方法去转换成最终的…...
深度挖掘行情接口:股票市场中的关键金融数据API接口解析
在股票市场里,存在若干常见的股票行情数据接口,每一种接口皆具备独特的功能与用途。以下为一些常见的金融数据 API 接口,其涵盖了广泛的金融数据内容,其中就包含股票行情数据: 实时行情接口 实时行情接口:…...
逆向破解 对汇编的 简单思考
逆向破解汇编非常之简单 只是一些反逆向技术非常让人难受 但网络里都有方法破解 申请变量 : int a 0; 00007FF645D617FB mov dword ptr [a],0 char b b; 00007FF645D61802 mov byte ptr [b],62h double c 0.345; 00007FF645D61…...