python 连接 neo4j 将节点user,productA,productB和办理关系数据用numpy 的 mat()函数转成用户商品矩阵
时间: 2024-03-20 14:43:53 浏览: 117
python 实现查询Neo4j多节点的多层关系
5星 · 资源好评率100%
好的,我理解了你的问题。首先需要安装 py2neo 这个库来连接 neo4j,然后通过 Cypher 查询语句来获取节点和关系数据,最后使用 numpy 的 mat() 函数转成用户商品矩阵。
以下是一个简单的示例代码:
```python
from py2neo import Graph
import numpy as np
# 连接 neo4j 数据库
graph = Graph("bolt://localhost:7687", auth=("username", "password"))
# 查询所有用户、商品节点和办理关系数据
query = """
MATCH (u:User)-[r:BOUGHT]->(p:Product)
RETURN u.id, p.id, r.quantity
"""
result = graph.run(query)
# 构建用户商品矩阵
users = set()
products = set()
data = []
for row in result:
user_id = row[0]
product_id = row[1]
quantity = row[2]
users.add(user_id)
products.add(product_id)
data.append((user_id, product_id, quantity))
user_index = {u: i for i, u in enumerate(users)}
product_index = {p: i for i, p in enumerate(products)}
matrix = np.zeros((len(users), len(products)))
for user_id, product_id, quantity in data:
matrix[user_index[user_id], product_index[product_id]] = quantity
# 转成用户商品矩阵
user_product_matrix = np.mat(matrix)
```
其中,`u.id` 和 `p.id` 表示节点的 id 属性,可以根据实际情况进行修改。另外,`r.quantity` 表示关系的数量属性,也可以根据实际情况进行修改。
希望这个示例对你有帮助!
阅读全文