Neo4j(二) - 使用Cypher操作Neo4j

news2025/7/21 22:20:28

文章目录

  • 前言
  • 一、Cypher简介
  • 二、数据库操作
    • 1. 创建数据库
    • 2. 查看数据库
    • 3. 删除数据库
    • 4. 切换数据库
  • 三、节点、关系及属性操作
    • 1. 创建节点与关系
      • 1.1 语法
      • 1.2 示例
    • 2. 查询数据
      • 2.1 语法
      • 2.2 示例
    • 3. 更新数据
      • 3.1 语法
      • 3.2 示例
    • 4. 删除节点与关系
      • 4.1 语法
      • 4.2 示例
    • 5. 合并数据
      • 5.1 语法
      • 5.2 示例


前言

本文将系统介绍 Cypher 的核心语法与操作逻辑,涵盖数据库管理、节点与关系的创建、查询、更新及删除等基础操作,同时结合具体示例演示如何利用 Cypher 解决实际场景中的数据问题。通过理论与实践的结合,帮助读者快速掌握图数据库的核心操作范式,为进一步探索图技术在大数据分析、人工智能等领域的应用奠定基础。


一、Cypher简介

Cypher 是一种声明式图数据库查询语言,由 Neo4j 公司开发,用于高效地查询和更新图数据库中的数据。它使得开发者可以通过简洁、直观的语法来操作图数据库,而无需关心底层实现细节。Cypher 的设计目标是为了让图数据的操作变得简单且强大,使非技术用户也能轻松理解并使用。

Cypher 主要特点

  1. 模式匹配:Cypher 提供了强大的模式匹配能力,允许用户通过图形结构而非仅基于属性或索引来查询数据。
  2. 易于阅读和编写:其语法设计接近自然语言,尤其是对于那些具有图形化思维的人来说更加直观。
  3. 灵活的数据查询与更新:无论是简单的查询还是复杂的图形遍历,Cypher 都能提供支持。
  4. 高效的执行计划:Neo4j 会根据 Cypher 查询自动生成高效的执行计划,以确保快速的数据检索速度。

使用场景

  • 社交网络分析:利用 Cypher 可以很容易地找到人与人之间的关系网,比如朋友的朋友等。
  • 推荐系统:通过分析用户的行为和偏好,为用户提供个性化的产品或内容推荐。
  • 路径查找:在运输和物流行业,可以用来查找两点之间的最优路径。
  • 风险管理与欺诈检测:通过分析实体间的关系,识别潜在的风险或欺诈行为。

Cypher 作为图数据库 Neo4j 的核心查询语言,极大地简化了图数据的管理和分析过程,使得图数据库技术更易于被广泛接受和应用。


二、数据库操作

在 Neo4j 中,数据库操作包括创建、查看和删除数据库等。不过需要注意的是,Neo4j 的社区版(Community Edition)通常只支持单个默认数据库,即 neo4j 数据库,并不支持创建多个数据库。但是,从 Neo4j 4.0 版本开始,企业版支持多数据库特性,允许用户创建和管理多个数据库实例。

1. 创建数据库

要创建一个新的数据库,可以使用以下 Cypher 命令。

CREATE DATABASE database_name

例如,如果你想创建一个名为 mydatabase 的新数据库,你可以运行:

CREATE DATABASE mydatabase

注意:这个命令仅适用于 Neo4j 企业版。

2. 查看数据库

查看当前系统中存在的所有数据库,可以使用如下命令。

SHOW DATABASES

这将列出所有数据库的信息,包括名称、状态(如在线或离线)、是否为主数据库等。

在这里插入图片描述

也可以使用如下命令查看可用数据库。

:dbs

在这里插入图片描述

3. 删除数据库

如果需要删除一个数据库,可以使用以下命令:

DROP DATABASE database_name

例如,删除名为 mydatabase 的数据库:

DROP DATABASE mydatabase

4. 切换数据库

切换到数据库neo4j

:use neo4j

在这里插入图片描述


三、节点、关系及属性操作

1. 创建节点与关系

在 Cypher 中,图数据库中的基本元素是 节点(Node)关系(Relationship)。使用 CREATE 命令可以创建节点和关系。

1.1 语法

创建节点的语法如下:

CREATE (variableName:Label {property1: value1, property2: value2, ...})
  • Label 是节点的标签,用于分类。
  • {property1: value1} 是节点的属性集合,可选。
  • variableName 是标签变量,用于后续操作中引用该节点。

创建关系的语法如下:

CREATE (node1)-[relVariable:RELATIONSHIP_TYPE {prop: value}]->(node2)
  • relVariable 是关系变量。
  • RELATIONSHIP_TYPE 是关系类型,表示两个节点之间的连接方式,关系类型是自定义的
  • 箭头方向表示关系的方向(-> 表示从 node1 到 node2,<- 表示反向)。

1.2 示例

示例 1:创建一个简单的节点

CREATE (a:Person {name: 'Alice', age: 30})
  • 这个命令创建了一个带有 Person 标签的节点,并赋予它两个属性:nameage
  • 节点变量为 a,可以在后续查询中引用这个节点。

在这里插入图片描述

示例 2:创建两个节点并建立关系

// 创建第一个节点 Alice
CREATE (a:Person {name: 'Alice'})
// 创建第二个节点 Bob
CREATE (b:Person {name: 'Bob'})
// 在 Alice 和 Bob 之间创建 FRIENDS_WITH 关系
CREATE (a)-[r:FRIENDS_WITH {since: 2020}]->(b)
  • 这组命令首先创建了两个 Person 节点,分别代表 Alice 和 Bob。
  • 然后在这两个节点之间创建了一个类型为 FRIENDS_WITH 的关系,并设置了关系属性 since,表示他们成为朋友的时间是 2020 年。
  • 关系变量为 r,可以用于进一步操作或查询这条关系。

在这里插入图片描述

示例 3:在一个命令中创建节点和关系

CREATE (a:Person {name: 'Alice'})-[:WORKS_AT]->(b:Company {name: 'Tech Corp'})
  • 此命令同时创建了两个节点(一个 Person 节点和一个 Company 节点)以及它们之间的 WORKS_AT 关系。
  • 注意这里没有给关系指定变量,这意味着我们不能直接引用这条关系进行后续操作,除非再次通过查询找到它。

在这里插入图片描述

示例 4:使用已存在的节点创建关系

MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[r:COLLEAGUE_OF {department: 'Engineering'}]->(b)
  • 首先通过 MATCH 查找数据库中名为 Alice 和 Bob 的节点。
  • 然后在找到的这两个节点之间创建了一个 COLLEAGUE_OF 类型的关系,并添加了一个 department 属性说明他们在同一个部门工作。
  • 给关系指定了变量 r,方便之后对这条关系进行修改或查询。

在这里插入图片描述

示例 5:创建双向关系
虽然在 Cypher 中默认定义的关系是有方向性的,但可以通过创建两条相反方向的关系来模拟双向关系:

MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:KNOWS]->(b)
CREATE (b)-[:KNOWS]->(a)
  • 这段代码创建了两个 KNOWS 关系,一条从 Alice 到 Bob,另一条从 Bob 到 Alice,从而实现了双向关系的效果。

在这里插入图片描述

2. 查询数据

在 Neo4j 中,MATCH 是用于查询图数据的核心命令。它通过模式匹配(Pattern Matching) 来查找符合特定结构的节点、关系及其属性。

2.1 语法

基本语法结构如下:

MATCH (variable1:Label1 {property1: value1})
RETURN variable1
  • (variable1:Label1 {property1: value1}):表示一个带有标签和属性的节点。
  • RETURN:指定你想返回的数据内容。

匹配带关系的结构语法如下:

MATCH (variable1:Label1)-[:RELATIONSHIP_TYPE]->(variable2:Label2)
RETURN variable1, variable2
  • -[:RELATIONSHIP_TYPE]->:表示两个节点之间的关系,方向可变(-><-)。
  • RELATIONSHIP_TYPE:是你定义的关系类型,如 KNOWS, WORKS_AT 等。

使用 WHERE 进行过滤语法如下:

MATCH (n:Person)
WHERE n.age > 30
RETURN n.name
  • WHERE 子句用于添加条件过滤查询结果。

2.2 示例

示例 1:查询所有 Person 节点

MATCH (p:Person)
RETURN p

在这里插入图片描述

示例 2:查询具有特定属性的节点
查找名字为 Alice 的 Person 节点。

MATCH (p:Person {name: 'Alice'})
RETURN p

在这里插入图片描述

示例 3:查询节点和其关系
查找 Alice 所认识的所有人,并返回 Alice、KNOWS 关系以及对方节点。

MATCH (a:Person {name: 'Alice'})-[r:KNOWS]->(b:Person)
RETURN a, r, b

在这里插入图片描述

示例 4:仅返回某些字段或属性
只返回 Person 节点的 name 和 age 属性。

MATCH (p:Person)
RETURN p.name, p.age

在这里插入图片描述

示例 5:使用 WHERE 过滤年龄大于 30 的人
查找并返回年龄大于 20 的人。

MATCH (p:Person)
WHERE p.age > 20
RETURN p.name, p.age

在这里插入图片描述

示例 6:查找双向关系(比如互为好友)

MATCH (a:Person {name: 'Alice'})-[r1:KNOWS]->(b:Person {name: 'Bob'})
MATCH (b)-[r2:KNOWS]->(a)
RETURN a, r1, b, r2

在这里插入图片描述

示例 7:模糊匹配多个关系类型
查找 Alice 认识或一起工作的人。

MATCH (a:Person {name: 'Alice'})-[:KNOWS|WORKS_WITH]->(b)
RETURN b.name

在这里插入图片描述

示例 8:限制返回数量
最多只返回 3 个 Person 的名字。

MATCH (p:Person)
RETURN p.name
LIMIT 3

在这里插入图片描述

跳过 1 个查询结果并最多返回 3 个 Person 的名字。

MATCH (p:Person)
RETURN p.name
SKIP 1
LIMIT 3

在这里插入图片描述

3. 更新数据

在 Neo4j 中,使用 Cypher 可以方便地更新图数据库中的节点(Node)和关系(Relationship)的属性值;可以使用 SETREMOVE 等命令进行更新操作。

3.1 语法

更新节点属性的语法如下:

MATCH (n:Label {property: value})
SET n.propertyName = newValue
RETURN n
  • MATCH:查找要更新的节点。
  • SET:设置或修改某个属性的值。
  • RETURN:返回更新后的结果(可选)。

删除属性或标签语法如下:

MATCH (n:Person {name: 'Alice'})
REMOVE n.age
RETURN n
  • REMOVE 命令可以删除节点或关系的属性或标签。

更新关系属性语法如下:

MATCH ()-[r:RELATIONSHIP_TYPE]->()
SET r.newProperty = 'value'
RETURN r

3.2 示例

示例 1:更新节点的属性

将名为 Alice 的 Person 节点的年龄改为 31 岁。

MATCH (n:Person {name: 'Alice'})
SET n.age = 31
RETURN n

在这里插入图片描述

示例 2:添加新的属性

为名为 Bob 的 Person 添加一个新属性 email

MATCH (n:Person {name: 'Bob'})
SET n.email = 'bob@example.com'
RETURN n

在这里插入图片描述

示例 3:一次性设置多个属性

可以在一条 SET 语句中同时设置多个属性。

MATCH (n:Person {name: 'Bob'})
SET n.age = 45, n.city = 'Shanghai', n.job = 'Engineer'
RETURN n

在这里插入图片描述

示例 4:删除节点的某个属性

删除名为 Alice 的 Person 的 age 属性。

MATCH (n:Person {name: 'Alice'})
REMOVE n.age
RETURN n

在这里插入图片描述

示例 5:删除节点的标签

将名为 Bob 的 Person 节点的标签从 Person 改为 User

MATCH (n:Person {name: 'Bob'})
REMOVE n:Person
SET n:User
RETURN n

⚠️ 注意:Neo4j 不支持直接重命名标签,只能通过先移除再添加的方式来“更改”标签。

在这里插入图片描述

示例 6:更新关系属性

更新Alice和Bob的 KNOWS 关系的 since 属性。

MATCH (:Person {name: 'Alice'})-[r:KNOWS]->(:User {name: 'Bob'})
SET r.since = 2021
RETURN r

在这里插入图片描述

4. 删除节点与关系

在 Neo4j 中,删除图数据库中的 节点(Node)关系(Relationship) 是常见的操作。Cypher 提供了 DELETEDETACH DELETE 等命令来完成这些任务。

由于 Neo4j 的图结构特性:一个节点不能有未删除的关系存在,因此在删除节点前必须先删除它关联的所有关系,否则会报错。

4.1 语法

删除关系的语法如下:

MATCH ()-[r:RELATIONSHIP_TYPE]->()
DELETE r
  • 使用 MATCH 找到要删除的关系。
  • 使用 DELETE 删除匹配到的关系。

删除节点的语法(需先删除关系)如下:

MATCH (n:Label {property: value})
DELETE n

⚠️ 如果该节点还有关系存在,将抛出错误。

推荐方式:使用 DETACH DELETE

MATCH (n:Label {property: value})
DETACH DELETE n
  • DETACH DELETE 会自动删除节点及其所有关联的关系,无需手动先删除关系。
  • 这是最安全、最常用的删除节点的方式。

4.2 示例

示例 1:删除两个特定节点之间的关系

删除 Alice 和 Bob 之间的 KNOWS 关系。

MATCH (a:Person {name: 'Alice'})-[r:KNOWS]->(b:Person {name: 'Bob'})
DELETE r

在这里插入图片描述

示例 2:删除特定类型的关系

删除所有的 KNOWS 类型关系。

MATCH ()-[r:KNOWS]->()
DELETE r

在这里插入图片描述

示例 3:删除某个特定节点(先删除关系)

删除名为 Alice 的 Person 节点及其所有关系。

MATCH (n:Person {name: 'Alice'})
DETACH DELETE n

在这里插入图片描述

示例 4:删除没有关系的孤立节点

删除“孤立”的节点(即没有关系连接的节点)。

MATCH (n)
WHERE NOT EXISTS((n)--())
DELETE n

在这里插入图片描述

示例 5:删除所有节点和关系(清空整个图数据库)

删除数据库中所有的节点和它们的关系。

MATCH (n)
DETACH DELETE n

在这里插入图片描述

5. 合并数据

合并数据用于创建或更新节点或关系,不存在则创建,存在则更新。为了避免数据重复插入,可以使用 MERGE 替代 CREATE

在 Neo4j 中,MERGE 是一个非常强大的命令,它用于确保某个图模式存在。如果该模式不存在,则会创建它;如果已经存在,则不会执行任何操作(也可以选择更新某些属性)。这非常适合用来避免重复插入相同的数据。

5.1 语法

基本语法如下:

MERGE (n:Label {uniqueProperty: value})
SET n.otherProperty = otherValue
RETURN n
  • MERGE:尝试匹配指定的模式(节点或关系)。
  • 如果没有找到匹配项,则创建新的节点或关系。
  • 可以结合 ON CREATE SETON MATCH SET 来分别设置创建时和匹配到时的操作。

使用 ON CREATE 和 ON MATCH 的完整语法:

MERGE (n:Label {uniqueProperty: value})
ON CREATE SET n.created = timestamp()
ON MATCH SET n.lastAccessed = timestamp()
RETURN n
  • ON CREATE SET:仅当节点是新创建的时候才执行。
  • ON MATCH SET:仅当节点已存在时才执行。

5.2 示例

示例 1:确保某节点存在(若不存在则创建)

MERGE (p:Person {name: 'Alice'})
RETURN p

如果数据库中没有名为 Alice 的 Person 节点,则创建一个;如果有,则返回已存在的节点。

在这里插入图片描述

示例 2:确保节点存在,并设置额外属性

MERGE (p:Person {name: 'Bob'})
SET p.age = 30
RETURN p

确保 Bob 存在,并将他的年龄设为 30。如果 Bob 已经存在,则覆盖其 age 属性。

在这里插入图片描述

示例 3:使用 ON CREATE 和 ON MATCH 区分创建与更新操作

MERGE (p:Person {name: 'Charlie'})
ON CREATE SET p.created = datetime()
ON MATCH SET p.lastSeen = datetime()
RETURN p
  • 如果 Charlie 是第一次出现,则设置 created 时间;
  • 如果已存在,则更新 lastSeen 时间。

在这里插入图片描述

示例 4:合并关系(确保两个节点之间有某种关系)

MERGE (a:Person {name: 'Alice'})
MERGE (b:Person {name: 'Bob'})
MERGE (a)-[r:FRIENDS_WITH]->(b)
RETURN a, r, b

确保 Alice 和 Bob 存在,并且他们之间有一条 FRIENDS_WITH 关系。如果已经存在这条关系,则不重复创建。

在这里插入图片描述

示例 5:合并带属性的关系

MERGE (a:Person {name: 'Alice'})
MERGE (b:Person {name: 'Bob'})
MERGE (a)-[r:WORKS_WITH {since: 2022}]->(b)
RETURN r

确保 Alice 和 Bob 之间有一条 WORKS_WITH 类型的关系,并带有属性 since: 2022

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

09、供应商管理数字化转型:从潜在评估到战略合作的系统化方法

在全球化竞争和供应链日益复杂的商业环境下&#xff0c;供应商管理已成为企业核心竞争力的关键组成部分。优秀的供应商管理体系不仅能确保物料和服务的稳定供应&#xff0c;更能成为企业创新、降本增效的战略资源。本文将系统性地介绍供应商管理的完整框架&#xff0c;从潜在供…

批量转存夸克网盘内容并分享实操教程

批量转存夸克网盘内容并分享 经常使用我AI工具&#xff08;圈友互联AI&#xff09;的应该在每日资源这里看到&#xff0c;会每天自动更新最新资源信息&#xff0c;这些资源是自动从各处爬取出来再批量转存进行分享处理的&#xff01; 今天就和大家分享下&#xff0c;如何对夸克…

“安康杯”安全生产知识竞赛活动流程方案

一、竞赛组织部门&#xff1a;排水公司安全生产办公室 二、竞赛说明&#xff1a; 1、由安全生产办公室组编辑、整理&#xff0c;安全生产领导小组审核。竞赛时由公司领导及各部门负责人对本次知识竞赛进行监督评比&#xff0c;以保证竞赛活动的公平、公正。本次竞赛活动由闫红…

特征分解:线性代数在AI大模型中的核心工具

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

理解计算机系统_并发编程(10)_线程(七):基于预线程化的并发服务器

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 接续理解计算机系统_并发编程(9)_线程(六):读者-写者问题-…

身份认证: JWT和Session是什么?

一、为什么需要临时凭证&#xff1f; 系统面临三个核心约束&#xff1a; 唯一鉴权方式只有&#xff08;账号&#xff0c;密码&#xff09; 服务端不记录请求状态&#xff0c;服务端不知道用户已登录了 避免重复传输敏感信息&#xff0c;不能每次都携带(账号&#xff0c;密码…

机器学习中的多GPU训练模式

文章目录 一、数据并行&#xff08;Data Parallelism&#xff09;二、模型并行&#xff08;Model Parallelism&#xff09;1. 模型并行2. 张量并行&#xff08;Tensor Parallelism&#xff09; 三、流水线并行&#xff08;Pipeline Parallelism&#xff09;四、混合并行&#x…

TPAMI 2025 | CEM:使用因果效应图解释底层视觉模型

底层视觉可解释性专题&#xff1a;https://x-lowlevel-vision.github.io/ 论文&#xff1a;https://arxiv.org/abs/2407.19789 代码&#xff1a;https://github.com/J-FHu/CEM 动机 在底层视觉领域&#xff0c;深度学习模型虽极大提升了任务性能&#xff0c;但其内部运行机…

Halcon 图像预处理②

非线性图像分段变化&#xff1a; 先窗体打开图片 对数非线性变化&#xff1a; 结果图像的亮度/对比度显著增加 log_image(Image,LogImag1,e) 参数1&#xff1a;输入图像 参数2&#xff1a; 输出图像 参数3&#xff1a;底数 log_image(Image,LogImage2,0.1) 图像结果亮度和…

20250526-C++基础-函数指针

C基础-函数指针 函数指针&#xff0c;顾名思义就是指向函数的指针&#xff0c;用一个变量来存储函数的地址&#xff0c;可以通过这个变量&#xff08;指针&#xff09;间接访问函数。&#xff08;可以把函数指针名看作函数名来进行函数调用&#xff09;。代码及说明如下&#…

软考 系统架构设计师系列知识点之杂项集萃(73)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;72&#xff09; 第126题 可一次性编程的只读存储器是( )。 A. ROM B. PROM C. EPROM D. EEPROM 正确答案&#xff1a;B。 解析&#xff1a; ROM&#xff1a;出厂时已编程&#xff0c;用户无…

DeepSeek-V3-0526乍现

DeepSeek-V3-0526 可能是 DeepSeek 最新发布的模型版本&#xff0c;相较于之前的 DeepSeek-V3-0324&#xff0c;它在代码能力、推理性能和本地部署方面有了进一步提升。以下是关于该版本的主要信息&#xff1a; - DeepSeek-V3-0526 在多项基准测试中表现优异&#xff0c;性能…

STM32 I2C 通信协议

1、原理 1、硬件电路 一主多从&#xff0c;单片机作为总线主机 SDA&#xff1a;数据线 SCL&#xff1a;时钟线 主机对SCL线完全控制&#xff0c;从机只能读取&#xff1b;在空闲状态下&#xff0c;主机可以主动发起对SDA的控制&#xff0c;只有在从机发送数据和从机应答的时…

【后端高阶面经:Elasticsearch篇】38、Elasticsearch 高可用架构解析:分片容灾、Translog 调优与双集群

一、高可用架构核心:节点角色与分布式设计 (一)节点角色精细化划分 1. 四大核心节点类型 节点类型核心职责资源配置建议典型部署数量主节点(Master)集群元数据管理(索引创建、分片分配、节点选举)CPU≥4核,内存≥16GB,禁用数据存储3-5个(奇数)数据节点(Data)存储…

5月26日复盘-自注意力机制

5月26日复盘 一、自注意力机制 Self-Attention Mechanism&#xff0c;自注意力机制&#xff0c;用于捕捉序列数据内部依赖关系的关键技术。它在NLP和CV中非常重要&#xff0c;尤其是Transformer。 1. 产生背景 自注意力机制的产生与序列建模任务&#xff08;如机器翻译、文…

聊一聊接口测试如何设计有效的错误响应测试用例

目录 一、 覆盖常见的错误场景 a. 输入验证错误 b. 认证与权限错误 c. 资源操作错误 d. 业务逻辑错误 e. 服务端错误 二、设计测试用例的关键原则 a. 明确的错误信息 b. 正确的 HTTP 状态码 c. 幂等性处理 d. 安全性与敏感信息 三、测试用例设计模板 四、工具与自…

从OTA双雄「共舞」,透视旅游持续繁荣背后的结构性跃迁

2025年&#xff0c;中国旅游市场仍在持续复苏中。 文化和旅游部发布的国内出游数据显示&#xff0c;2025年一季度&#xff0c;国内出游人次17.94亿&#xff0c;比上年同期增加3.75亿&#xff0c;同比增长26.4%&#xff1b;国内居民出游总花费1.80万亿元&#xff0c;比上年同期…

华为OD机试真题——虚拟理财游戏(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

华为云Flexus+DeepSeek征文 | DeepSeek-V3/R1商用服务开通体验全流程及使用评测

作者简介​ 我是摘星&#xff0c;一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型&#xff0c;将实际使用经验分享给大家&#xff0c;希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 1. 前言 2. 开通DeepSeek-V3/R1商用服务 2.1 准…

人工智能数学基础实验(一):智能推荐系统实战

一、实验目的 本次实验旨在通过构建用户相似度矩阵和实现个性化推荐&#xff0c;帮助我们直观理解推荐系统的核心原理及其背后的数学基础。具体目标如下&#xff1a; 运用 Python 计算用户间的评分相似度&#xff0c;掌握余弦相似度等数学工具在衡量用户偏好中的应用&#xff…