LlamaIndex 第七篇 结构化数据提取
大型语言模型(LLMs)在数据理解方面表现出色,这也促成了它们最重要的应用场景之一:能够将常规的人类语言(我们称之为非结构化数据)转化为特定的、规范的、可被计算机程序处理的格式。我们将这一过程的输出称为结构化数据。由于在转换过程中通常会忽略大量冗余数据,因此我们称其为提取(extraction)。
LlamaIndex 中结构化数据提取的核心是 Pydantic 类:你可以在 Pydantic 中定义一个数据结构,然后 LlamaIndex 会与 Pydantic 协作,将 LLM 的输出强制转换为该结构。
Pydantic 介绍
Pydantic 是一个广泛使用的数据验证和转换库。它 heavily 依赖于 Python 的类型声明。该项目的官方文档中有一份关于 Pydantic 的详尽指南,但在这里我们将仅介绍其基本内容。
要创建一个 Pydantic 类,需要继承自 Pydantic 的 BaseModel
类:
from pydantic import BaseModelclass User(BaseModel):id: intname: str = "Jane Doe"
在这个示例中,你创建了一个 User
类,包含两个字段:id
和 name
。你将 id
定义为整数,name
定义为字符串,默认值为 Jane Doe
。
你可以通过嵌套这些模型来创建更复杂的结构:
from typing import List, Optional
from pydantic import BaseModelclass Foo(BaseModel):count: intsize: Optional[float] = Noneclass Bar(BaseModel):apple: str = "x"banana: str = "y"class Spam(BaseModel):foo: Foobars: List[Bar]
现在,Spam
拥有一个 foo
和一个 bars
。Foo
包含一个 count
和一个可选的 size
,而 bars
是一个对象列表,每个对象都有一个 apple
和 banana
属性。
将 Pydantic 对象转换为 JSON Schema
Pydantic 支持将 Pydantic 类转换为符合流行标准的 JSON 序列化模式对象。例如,上面的 User
类将被序列化为以下形式:
{"properties": {"id": {"title": "Id","type": "integer"},"name": {"default": "Jane Doe","title": "Name","type": "string"}},"required": ["id"],"title": "User","type": "object"
}
这一特性至关重要:这些 JSON 格式的模式经常被传递给大型语言模型(LLMs),而 LLMs 会将其用作如何返回数据的指令。
使用注解
如前所述,大型语言模型(LLMs)会使用来自 Pydantic 的 JSON 模式作为返回数据的指令。为了帮助 LLM 更好地理解并提高返回数据的准确性,建议在模式中包含对对象和字段的自然语言描述,说明它们的用途。Pydantic 通过文档字符串(docstrings)和 Field
支持这一功能。
使用结构化 LLM
在 LlamaIndex 中提取结构化数据的最高级方式是实例化一个结构化 LLM(Structured LLM)。首先,让我们像之前一样实例化我们的 Pydantic 类:
from datetime import datetime
from typing import Listfrom pydantic import BaseModel, Fieldclass LineItem(BaseModel):""" 发票中的一项明细。 """item_name: str = Field(description="产品名称")price: float = Field(description="产品价格")class Invoice(BaseModel):""" 发票信息 """invoice_id: str = Field(description="该发票的唯一标识符,通常是一个数字")date: datetime = Field(description="该发票的创建日期")line_items: List[LineItem] = Field(description="该发票中所有项目的列表")
接着安装用于读取 PDF 文件的模块:
pip install llama-index-readers-file -i https://mirrors.aliyun.com/pypi/simple/
现在,我们来加载一份实际发票的文本内容:
from llama_index.readers.file import PDFReader
from pathlib import Pathpdf_reader = PDFReader()
documents = pdf_reader.load_data(file=Path("./uber_receipt.pdf"))
text = documents[0].text
接下来,我们实例化一个 LLM,传入我们的 Pydantic 类,并让它使用发票的纯文本内容进行补全处理:
from llama_index.llms.openai import OpenAIllm = OpenAI(model="gpt-4o")
sllm = llm.as_structured_llm(Invoice)response = sllm.complete(text)
response
是一个 LlamaIndex 的 CompletionResponse
对象,它包含两个属性:text
和 raw
。其中,text
包含经过 Pydantic 处理后的响应的 JSON 序列化形式:
json_response = json.loads(response.text)
print(json.dumps(json_response, indent=2))
{"invoice_id": "Visa \u2022\u2022\u2022\u20224469","date": "2024-10-10T19:49:00","line_items": [{"item_name": "Trip fare", "price": 12.18},{"item_name": "Access for All Fee", "price": 0.1},{"item_name": "CA Driver Benefits", "price": 0.32},{"item_name": "Booking Fee", "price": 2.0},{"item_name": "San Francisco City Tax", "price": 0.21},],
}
请注意,这张发票没有编号,因此 LLM 尽力而为,使用了信用卡号作为替代。需要强调的是,Pydantic 的验证并不能保证数据一定准确!
response
的 raw
属性(名称上有些令人困惑)包含了 Pydantic 对象本身:
from pprint import pprintpprint(response.raw)
Invoice(invoice_id="Visa ••••4469",date=datetime.datetime(2024, 10, 10, 19, 49),line_items=[LineItem(item_name="Trip fare", price=12.18),LineItem(item_name="Access for All Fee", price=0.1),LineItem(item_name="CA Driver Benefits", price=0.32),LineItem(item_name="Booking Fee", price=2.0),LineItem(item_name="San Francisco City Tax", price=0.21),],
)
请注意,Pydantic 创建的是一个完整的 datetime
对象,而不仅仅是将日期表示为字符串。
结构化 LLM 的行为与常规的 LLM 类完全相同:你可以调用 chat
、stream
、achat
、astream
等方法,它在所有情况下都会返回 Pydantic 对象。你还可以将结构化 LLM 作为参数传递给 VectorStoreIndex.as_query_engine(llm=sllm)
,它将自动以结构化对象的形式响应你的 RAG 查询。
结构化 LLM 会自动为你处理所有的提示(prompting)工作。如果你想对提示内容拥有更多控制权,请继续学习《结构化预测(Structured Prediction)》相关内容。
结构化预测
结构化预测(Structured Prediction)让您对自己的应用程序如何调用大语言模型(LLM)具有更细致的控制,并且可以使用 Pydantic。我们将沿用之前示例中的同一个 Invoice 类,以相同的方式加载 PDF 文件,并继续使用 OpenAI。不同之处在于,我们不再创建一个结构化的 LLM,而是直接在 LLM 本身上调用 structured_predict 方法;这是每个 LLM 类都提供的一个方法。
结构化预测(Structured predict)接受一个 Pydantic 类和一个提示模板(Prompt Template)作为参数,同时还接受提示模板中所需变量的关键词参数。
from my_llms.MyLLMsClients import MyLLMsClients
from llama_index.core.prompts import PromptTemplate
from models.MyModels import Invoicefrom llama_index.readers.file import PDFReader
from pathlib import Pathllm = MyLLMsClients.deepseek_client()pdf_reader = PDFReader()
documents = pdf_reader.load_data(file=Path("../data/发票/发票_20250510202033.pdf"))
text = documents[0].text
#print(text)prompt = PromptTemplate("从以下文本中提取发票信息。如果找不到发票编号(invoice ID),则使用公司名称“{company_name}”和日期作为发票编号:{text}"
)response = llm.structured_predict(Invoice, prompt, text=text, company_name="Uber"
)print(response)
invoice_id='10000000' date=datetime.datetime(2025, 5, 10, 0, 0) line_items=[LineItem(item_name='长杆日式良品沐浴刷后背搓泥澡巾成人软毛搓背不求人洗澡 搓背神器', price=6.98), LineItem(item_name='kato 的新版散粉定妆粉持久不脱妆旗舰店 koto 送粉扑', price=24.8), LineItem(item_name='奥莱店专柜清仓捡漏金好事花生仿和田玉手链女手串', price=58.0)]
如你所见,这使我们能够在 Pydantic 无法完全正确解析数据时,为 LLM 提供额外的提示指令。在这种情况下,返回的对象本身就是 Pydantic 对象。如果需要,我们还可以将其输出为 JSON 格式:
json_output = response.model_dump_json()
print(json.dumps(json.loads(json_output), indent=2, ensure_ascii=False))
{"invoice_id": "10000000","date": "2025-05-10T00:00:00","line_items": [{"item_name": "长杆日式良品沐浴刷后背搓泥澡巾成人软毛搓背不求人洗澡搓背神器","price": 6.98},{"item_name": "kato 的新版散粉定妆粉持久不脱妆旗舰店 koto 送粉扑","price": 24.8},{"item_name": "奥莱店专柜清仓捡漏金好事花生仿和田玉手链女手串","price": 58.0}]
}
structured_predict 拥有多种变体,适用于不同的使用场景,包括异步调用(astructured_predict)和流式传输(stream_structured_predict、astream_structured_predict)。
根据你使用的 LLM 不同,structured_predict 会使用两种不同的类中的一种来处理调用 LLM 和解析输出。
FunctionCallingProgram
如果你使用的 LLM 拥有函数调用(function calling)API,FunctionCallingProgram 将会:
-
将 Pydantic 对象转换为一个工具(tool)
-
在提示(prompt)LLM 的同时强制其使用该工具
-
返回生成的 Pydantic 对象
这通常是一种更可靠的方法,如果可用,将优先使用该方法。然而,某些 LLM 仅支持文本输出,这类模型将会使用另一种方法。
LLMTextCompletionProgram
如果 LLM 仅支持文本输出,LLMTextCompletionProgram 将会:
-
将 Pydantic 对象的结构以 JSON 格式输出
-
将该结构和数据一同发送给 LLM,并通过提示指令要求其以符合该结构的形式进行响应
-
在 Pydantic 对象上调用 model_validate_json() 方法,并传入 LLM 返回的原始文本
这种方法的可靠性明显较低,但所有基于文本的 LLM 都支持这种方式。
直接调用预测类
在实际使用中,structured_predict 应该可以很好地兼容任何 LLM,但如果你需要更底层的控制,也可以直接调用 FunctionCallingProgram 和 LLMTextCompletionProgram,并进一步自定义其行为:
textCompletion = LLMTextCompletionProgram.from_defaults(output_cls=Invoice,llm=llm,prompt=PromptTemplate("从以下文本中提取发票信息。如果找不到发票编号(invoice ID),则使用公司名称“{company_name}”和日期作为发票编号:{text}"),
)output = textCompletion(company_name="Uber", text=text)
以上操作等同于在没有函数调用 API 的 LLM 上调用 structured_predict,它会像 structured_predict 一样返回一个 Pydantic 对象。不过,你可以通过继承 PydanticOutputParser 来自定义输出的解析方式:
from llama_index.core.output_parsers import PydanticOutputParserclass MyOutputParser(PydanticOutputParser):def get_pydantic_object(self, text: str):# do something more clever than thisreturn self.output_parser.model_validate_json(text)textCompletion = LLMTextCompletionProgram.from_defaults(output_cls=Invoice,llm=llm,prompt=PromptTemplate("从以下文本中提取发票信息。如果找不到发票编号(invoice ID),则使用公司名称“{company_name}”和日期作为发票编号:{text}"),output_parser=MyOutputParser(output_cls=Invoice),
)output = textCompletion(company_name="Uber", text=text)print(output)
如果你使用的是性能较弱的 LLM,需要在解析过程中获得额外帮助,这种方法将非常有用。
相关文章:
LlamaIndex 第七篇 结构化数据提取
大型语言模型(LLMs)在数据理解方面表现出色,这也促成了它们最重要的应用场景之一:能够将常规的人类语言(我们称之为非结构化数据)转化为特定的、规范的、可被计算机程序处理的格式。我们将这一过程的输出称…...
PHP API安全设计四要素:构建坚不可摧的接口防护体系
引言:API安全的重要性 在当今前后端分离和微服务架构盛行的时代,API已成为系统间通信的核心枢纽。然而,不安全的API可能导致: 数据泄露:敏感信息被非法获取篡改风险:传输数据被中间人修改重放攻击&#x…...
英语16种时态
时态应用场合格式例子一般现在时表示经常、反复发生的动作,客观事实或普遍真理主语 动词原形(第三人称单数作主语时动词加 -s/-es)The sun rises in the east.一般过去时表示过去某个时间发生的动作或存在的状态主语 动词的过去式I visited…...
使用 goaccess 分析 nginx 访问日志
介绍 goaccess 是一个在本地解析日志的工具, 可以直接在命令行终端环境中使用 TUI 界面查看分析结果, 也可以导出为更加丰富的 HTML 页面. 官网: https://goaccess.io/ 下载安装 常见的 Linux 包管理器中都包含了 goaccess, 直接安装就行. 以 Ubuntu 为例: sudo apt instal…...
什么是中央税
中央税(又称国家税)是指由中央政府直接征收、管理和支配的税种,其收入全额纳入中央财政,用于保障国家层面的财政支出和宏观调控。中央税通常具有税基广泛、收入稳定、涉及国家主权或全局性经济调控的特点。 --- 中央税的核心特征…...
AI Agent(10):个人助手应用
引言 本文聚焦AI Agent在个人助手领域的应用,探讨其如何在个人生产力提升、健康与生活管理、学习与教育辅助以及娱乐与社交互动四个方面,为用户创造价值并解决实际问题。 AI个人助手正从简单的指令执行者逐渐发展为具有自主性、适应性和个性化能力的智能伙伴。这一转变不仅…...
力扣70题解
记录 2025.5.8 题目: 思路: 1.初始化:p 和 q 初始化为 0,表示到达第 0 级和第 1 级前的方法数。r 初始化为 1,表示到达第 1 级台阶有 1 种方法。 2.循环迭代:从第 1 级到第 n 级台阶进行迭代: p 更新为前…...
2025御网杯wp(web,misc,crypto)
文章目录 miscxor10图片里的秘密被折叠的显影图纸 Cryptoeasy_rsagift**1. 礼物数学解析****最终答案** 草甸方阵的密语easy-签到题baby_rsa webYWB_Web_xffYWB_Web_未授权访问easywebYWB_Web_命令执行过滤绕过反序列化 misc xor10 ai一把梭 根据题目中的字符串和提示&#…...
【深度学习】将本地工程上传到Colab运行的方法
1、将本地工程(压缩包)上传到一个新的colab窗口:如下图中的 2.zip,如果工程中有数据集,可以删除掉。 2、解压压缩包。 !unzip /content/2.zip -d /content/2 如果解压出了不必要的文件夹可以递归删除: #…...
多模态大语言模型arxiv论文略读(六十九)
Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ➡️ 论文标题:Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ➡️ 论文作者:Yue Zha…...
Lua再学习
因为实习的项目用到了Lua,所以再来深入学习一下 函数 函数的的多返回值 Lua中的函数可以实现多返回值,实现方法是再return后列出要返回的值的列表,返回值也可以通过变量接收到,变量不够也不会影响接收对应位置的返回值 Lua中传…...
Linux计划任务与进程
at 命令使用方法 at 命令可在指定时间执行任务,适用于一次性任务调度。以下是基本用法: 安装 atd 服务(如未安装) # Debian/Ubuntu sudo apt-get install at# CentOS/RHEL sudo yum install at启动服务 sudo systemctl start atd…...
JavaEE--文件操作和IO
目录 一、认识文件 二、 树型结构组织和目录 三、文件路径 1. 绝对路径 2. 相对路径 四、文件类型 五、文件操作 1. 构造方法 2. 方法 六、文件内容的读写——数据流 1. InputStream概述 2. FileInputStream概述 2.1 构造方法 2.2 示例 3. OutputStream概述 3.…...
k8s的节点是否能直接 curl Service 名称
在 Kubernetes 中,节点(Node)默认情况下不能直接通过 Service 的 DNS 名称(如 my-svc.default.svc.cluster.local)访问 Service。以下是详细分析和解决方案: 1. 默认情况下节点无法解析 Service 的 DNS 名…...
Mask-aware Pixel-Shuffle Down-Sampling (MPD) 下采样
来源 简介:这个代码实现了一个带有掩码感知的像素重排下采样模块,主要用于图像处理任务(如图像修复或分割)。 论文题目:HINT: High-quality INpainting Transformer with Mask-Aware Encoding and Enhanced Attentio…...
本贴会成为记录贴
这几天有些心力交瘁了 一方面带着对互联网下行的伤心,一方面是对未来的担忧 一转眼好像就是20 21那个 可以在宿舍肆意玩手机 大学生活 可是我不小了 是个26岁的人了 时间很快 快的就好像和自己开了一个玩笑 我以为可以找到一个自己足够喜欢的 可爱的人 可是我没有 …...
redis数据结构-04 (HINCRBY、HDEL、HKEYS、HVALS)
哈希操作:HINCRBY、HDEL、HKEYS、HVALS Redis 中的哈希功能极其丰富,让您能够以类似于编程语言中对象的方式存储和检索数据。本课将深入探讨具体的哈希操作,这些操作为操作以下结构中的数据提供了强大的工具: HINCRBY 、 HDEL 、…...
python 写一个工作 简单 番茄钟
1、图 2、需求 番茄钟(Pomodoro Technique)是一种时间管理方法,由弗朗西斯科西里洛(Francesco Cirillo)在 20 世纪 80 年代创立。“Pomodoro”在意大利语中意为“番茄”,这个名字来源于西里洛最初使用的一个…...
复现MAET的环境问题(自用)
我的配置是3090,CUDA Version: 12.4 配置环境时总有冲突,解决好的环境如下 如果你的配置也是CUDA12.4,可以把下面的配置信息保存成 environment.yml 文件 然后执行下面的代码创建环境即可 conda env export > environment.yml name:…...
PDF2zh插件在zotero中安装并使用
1、首先根据PDF2zh说明文档,安装PDF2zh https://github.com/guaguastandup/zotero-pdf2zh/tree/v2.4.0 我没有使用conda,直接使用pip安装pdf2zh (Python版本要求3.10 < version <3.12) pip install pdf2zh1.9.6 flask pypd…...
第二十三节:图像金字塔- 图像金字塔应用 (图像融合)
一、引言:视觉信息的层次化表达 在数字图像处理领域,图像金字塔(Image Pyramid)作为一种多尺度表示方法,自20世纪80年代提出以来,始终在计算机视觉领域扮演着关键角色。这种将图像分解为不同分辨率层次的结构化表示方法,完美地模拟了人类视觉系统对场景的多尺度感知特性…...
一种混沌驱动的后门攻击检测指标
摘要 人工智能(AI)模型在各个领域的进步和应用已经改变了我们与技术互动的方式。然而,必须认识到,虽然人工智能模型带来了显著的进步,但它们也存在固有的挑战,例如容易受到对抗性攻击。目前的工作提出了一…...
LeetCode 高频题实战:如何优雅地序列化和反序列化字符串数组?
文章目录 摘要描述题解答案题解代码分析编码方法解码方法 示例测试及结果时间复杂度空间复杂度总结 摘要 在分布式系统中,数据的序列化与反序列化是常见的需求,尤其是在网络传输、数据存储等场景中。LeetCode 第 271 题“字符串的编码与解码”要求我们设…...
leetcode 15. 三数之和
题目描述 代码: class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(),nums.end());int len nums.size();int left 0;int right 0;vector<vector<int>> res;for(int i 0;i <len…...
HTML难点小记:一些简单标签的使用逻辑和实用化
HTML难点小记:一些简单标签的使用逻辑和实用化 jarringslee 文章目录 HTML难点小记:一些简单标签的使用逻辑和实用化简单只是你的表象标签不是随便用的<div> 滥用 vs 语义化标签的本质嵌套规则的隐藏逻辑SEO 与可访问性的隐形关联 暗藏玄机的表单…...
Linux : 31个普通信号含义
Linux : 31个普通信号 信号含义特殊的两个信号 信号含义 信号编号信号名信号含义1SIGHUP如果终端接口检测到一个连接断开,则会将此信号发送给与该终端相关的控制进程,该信号的默认处理动作是终止进程。2SIGINT当用户按组合键(一般…...
软件测试都有什么???
文章目录 一、白盒测试(结构测试)二、黑盒测试(功能测试)三、灰盒测试四、其他测试类型五、覆盖准则对比六、应用场景 软件测试主要根据测试目标、技术手段和覆盖准则进行分类。分为白盒测试、黑盒测试、灰盒测试及其他补充类型 一…...
LangGraph框架中针对MCP协议的变更-20250510
MCP(Model Context Protocol)的出现为AI Agent与外部工具及数据源的集成提供了标准化接口,而LangGraph作为基于LangChain的智能体开发框架,在MCP协议的影响下也进行了适配性调整,主要体现在工具调用、异步交互和多步推…...
YashanDB(崖山数据库)V23.4 LTS 正式发布
2024年回顾 2024年11月我们受邀去深圳参与了2024国产数据库创新生态大会。在大会上崖山官方发布了23.3。这个也是和Oracle一样采用的事编年体命名。 那次大会官方希望我们这些在一直从事在一线的KOL帮助产品提一些改进建议。对于这样的想法,我们都是非常乐于合作…...
二、transformers基础组件之Tokenizer
在使用神经网络处理自然语言处理任务时,我们首先需要对数据进行预处理,将数据从字符串转换为神经网络可以接受的格式,一般会分为如下几步: - Step1 分词:使用分词器对文本数据进行分词(字、字词);- Step2 构建词典:根据数据集分词的结果,构建…...
git 报错:错误:RPC 失败。curl 28 Failed to connect to github.com port 443 after 75000
错误:RPC 失败。curl 28 Failed to connect to github.com port 443 after 75000 ms: Couldnt connect to server致命错误:在引用列表之后应该有一个 flush 包 方法一: 直接换一个域名:把 git clone https://github.com/zx59530…...
软考 系统架构设计师系列知识点之杂项集萃(56)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(55) 第91题 商业智能关注如何从业务数据中提取有用的信息,然后采用这些信息指导企业的业务开展。商业智能系统主要包括数据预处理、建立()、数据分…...
数据库的脱敏策略
数据库的脱敏策略:就是屏蔽敏感的数据 脱敏策略三要求: (1)表对象 (2)生效条件(脱敏列、脱敏函数) (3)二元组 常见的脱敏策略规则: 替换、重排、…...
Lora原理及实现浅析
Lora 什么是Lora Lora的原始论文为《LoRA: Low-Rank Adaptation of Large Language Models》,翻译为中文为“大语言模型的低秩自适应”。最初是为了解决大型语言模在进行任务特定微调时消耗大量资源的问题;随后也用在了Diffusion等领域,用于…...
力扣热题100之合并两个有序链表
题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 代码 方法一:新建一个链表 这里就先随便新建一个节点作为一个链表的头节点,然后每次遍历都将小的那个节点放入这个链表,遍历完一…...
Linux511SSH连接 禁止root登录 服务任务解决方案 scp Vmware三种模式回顾
创造一个临时文件 引用 scp -p 3712 atthistime.txt code11.1.1.100:/at ssh connect to host 11.1.1.100 port 22:No route to host lost connection 对方虚拟机是[rootlocalhost caozx26]# ll -d /at drwxr-xr-x. 2 root root 6 5月 11 11:10 /at sshd_config文件修改了port为…...
python实现用户登录
使用python实现用户登录,输入用户名和密码,进行验证,正确登录成功,错误登录失败,允许用户输入三次。 代码: 下面展示一些 内联代码片。 for i in range(3):username input(请输入用户名:)pas…...
信息系统项目管理师-软考高级(软考高项)2025最新(十五)
个人笔记整理---仅供参考 第十五章项目风险管理 15.1管理基础 15.2项目风险管理过程 15.3规划风险管理 15.4识别风险 15.5实施定性风险分析 15.6实施定量风险分析 15.7规划风险应对 15.8实施风险应对 15.9监督风险...
力扣-二叉树-101 对称二叉树
思路 分解问题为,该节点的左孩子的左子树和右孩子的右子树是不是同一棵树 && 该节点的左孩子的右字数和右孩子的左子树是不是同一课树 && 该节点的左右孩子的值相不相同 代码 class Solution {public boolean isSymmetric(TreeNode root) {// 层…...
07.three官方示例+编辑器+AI快速学习webgl_buffergeometry_attributes_integer
本实例主要讲解内容 这个Three.js示例展示了WebGL 2环境下的整数属性渲染技术。通过创建大量随机分布的三角形,并为每个三角形分配不同的整数索引,实现了基于索引动态选择纹理的效果。 核心技术包括: WebGL 2环境下的整数属性支持顶点着色…...
Python Day 22 学习
学习讲义Day14安排的内容:SHAP图的绘制 SHAP模型的基本概念 参考学习的帖子:SHAP 可视化解释机器学习模型简介_shap图-CSDN博客 以下为学习该篇帖子的理解记录: Q. 什么是SHAP模型?它与机器学习模型的区别在哪儿? …...
OrangePi Zero 3学习笔记(Android篇)6 - hid-ft260
目录 1. 将hid-ft260.c拷贝到Android目录内 2. 修改hid-ids.h 3. 修改hid-quirks.c 4. 修改Kconfig 5. 修改Makefile 6. 配置内核 7. 编译内核 8. 增加权限 9. 验证 在Android中添加驱动模块ko文件,以hid-ft260为例。 1. 将hid-ft260.c拷贝到Android目录内…...
部署Superset BI(五)连接oracle数据库失败
折腾完了hana和sqlserver数据库的连接,开始折腾oracle数据库连接 1.requirements-local.txt配置 尝试在requirements-local.txt中设置,结果容器弄瘫痪了,拉不起来了,只要又去掉修改 rootNocobase:/usr/superset/superset/docker# …...
快速搭建一个vue前端工程
一、环境准备 1、安装node.js 下载地址:Node.js 推荐版本如下: 2、检查node.js版本 node -v npm -v 二、安装Vue脚手架 Vue脚手架是Vue官方提供的标准化开发工具。vue官网:https://cn.vuejs.org/ 全局安装vue/cli (仅第一次…...
蓝桥杯14届 数三角
问题描述 小明在二维坐标系中放置了 n 个点,他想在其中选出一个包含三个点的子集,这三个点能组成三角形。然而这样的方案太多了,他决定只选择那些可以组成等腰三角形的方案。请帮他计算出一共有多少种选法可以组成等腰三角形? 输…...
在Python中计算函数耗时并超时自动退出
更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 方法1:使用装饰器结合信号模块(仅Unix-like系统)方法2:使用多线程(跨平台解决方案)方法3:使用concurrent.futures(Python 3.2+)方法4:使用 multiprocessing + Process(跨平台)方法5:使用 time 手动计…...
jna总结1
java使用JNA调用dll的方法_(jnacalldllapi) native.loadlibrary(path-CSDN博客 JNA(Java Native Access):建立在JNI之上的Java开源框架,SUN主导开发,用来调用C、C代码,尤其是底层库文件(windows中叫dll文件,…...
[Java][Leetcode simple]26. 删除有序数组中的重复项
思路 第一个元素不动从第二个元素开始:只要跟上一个元素不一样就放入数组中 public int removeDuplicates(int[] nums) {int cnt1;for(int i 1; i < nums.length; i) {if(nums[i] ! nums[i-1]) {nums[cnt] nums[i];}}return cnt;}...
BUUCTF——Ezpop
BUUCTF——Ezpop 进入靶场 给了php代码 <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95 //And Crack It! class Modifier {protected $v…...
springboot3+vue3融合项目实战-大事件文章管理系统-更新用户密码
大致分为这三步 首先在usercontroller中增加updatePwd方法 PatchMapping ("/updatePwd")public Result updatePwd(RequestBody Map<String,String> params){//1.校验参数String oldPwd params.get("old_pwd");String newPwd params.get("n…...