赛题名称:社交账号网络分类挑战赛 赛题类型:知识图谱 赛题链接👇:
https://challenge.xfyun.cn/topic/info?type=social-media-account&ch=vWxQGFU
比赛介绍
社交网络在现代社会中扮演着重要的角色,人们通过这些网络与朋友、家人以及其他人建立联系。在一个社交网络中,人们可以通过添加好友、互相关注以及交流来建立连接。然而,由于社交网络的庞大和复杂性,如何更好地理解网络中的不同节点以及它们的类型成为了一个重要问题。这个赛题旨在探索通过网络结构和节点属性来预测社交网络中节点的类型。

比赛任务
参赛选手需要构建一个分类模型,根据节点之间的连接和节点属性,预测每个节点的类型。这是一个监督学习问题,你将获得带有已标注类型的训练数据,以及未标注类型的测试数据。
需要利用训练数据中的模式和关联性,开发一个模型,使其能够准确地对测试数据中的节点类型进行分类。
评估指标
本次竞赛的评价标准采用准确率指标,最高分为1。
from sklearn.metrics import accuracy_score
y_pred = [0, 1, 1, 1, 0, 1]
y_true = [0, 1, 0, 1, 1, 1]
score = accuracy_score(y_true, y_pred)
数据集描述
edges.csv:该文件包含社交网络中节点之间的关系信息。每一行表示一条边,由两个节点的标识符(ID)构成,表示这两个节点之间存在连接。
train.csv:该文件包含部分节点的标签信息作为训练数据,每行包含两个字段:节点的标识符(ID)和对应的标签(target)。参赛选手需要对剩余的节点类型做出判断。
解题思路
赛题本质是一个节点分类的任务,因此需要先构建图,然后从图的角度进行划分。
步骤1:构建图
import pandas as pd
import numpy as np
import networkx as nx
g = nx.from_edgelist(
[list(x) for x in pd.read_csv('./社交账号网络分类挑战赛公开数据/edges.csv').values]
)
train = pd.read_csv('./社交账号网络分类挑战赛公开数据/train.csv')
test = pd.read_csv('./社交账号网络分类挑战赛公开数据/test.csv')
步骤2:设置节点标签
for node, label in zip(train["id"].iloc[:], train["target"].iloc[:]):
g.nodes[node]["label"] = label
步骤3:harmonic_function
harmonic_function
是一种基于谐波函数的节点分类算法。它的基本思想是将节点的标签表示为它们与邻居节点之间的谐波平均值。谐波平均是一种计算方法,它考虑了邻居节点之间的相互影响,允许节点根据其连接的强度和特征来分配标签。
from networkx.algorithms import node_classification
harmonic_pred = node_classification.harmonic_function(g)
harmonic_pred = node_classification.harmonic_function(g)
harmonic_pred = pd.merge(
pd.DataFrame({'id': g.nodes(), 'target': harmonic_pred}),
test, on='id'
)
harmonic_pred.to_csv('sub.csv', index=None)
完整代码见👇:
https://github.com/datawhalechina/competition-baseline/tree/master/competition/%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9EAI%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E8%B5%9B2023
# 竞赛交流群 邀请函 #

每天大模型、算法竞赛、干货资讯





