Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Phân tích mạng xã hội bằng Python và NetworkX
Hướng Dẫn Đồ ÁnLập Trình AI

Phân tích mạng xã hội bằng Python và NetworkX

Chia sẻ
Chia sẻ

Phân tích mạng xã hội là một nhánh quan trọng của khoa học dữ liệu, được sử dụng rộng rãi trong nhiều lĩnh vực như marketing, an ninh, nghiên cứu hành vi và phát hiện cộng đồng. Với Python, bạn có thể dễ dàng mô hình hóa, phân tích và trực quan hóa mạng lưới xã hội nhờ thư viện mạnh mẽ NetworkX.

Để làm quen với cách xử lý dữ liệu trước khi đi sâu vào mạng xã hội, bạn có thể tham khảo bài Hướng dẫn tiền xử lý dữ liệu sạch để huấn luyện mô hình tốt hơn. Ngoài ra, bài Phân tích dữ liệu bán hàng bằng Python và Pandas và Ứng dụng KNN phân loại khách hàng theo độ tuổi cũng sẽ giúp bạn rèn luyện kỹ năng thao tác dữ liệu, một bước đệm quan trọng trước khi phân tích mạng.

Giới thiệu về NetworkX và phân tích mạng xã hội

NetworkX là một thư viện Python mã nguồn mở giúp tạo, thao tác và nghiên cứu cấu trúc, động lực học và chức năng của các mạng phức tạp. Bạn có thể sử dụng nó để phân tích mạng xã hội, mạng máy tính, mạng giao thông và nhiều loại mạng khác.

Trong bài này, chúng ta sẽ sử dụng NetworkX để mô hình hóa một mạng xã hội nhỏ, tính toán các chỉ số trung tâm quan trọng (degree centrality, betweenness centrality, closeness centrality), phát hiện cộng đồng và trực quan hóa mạng.

Cài đặt NetworkX và chuẩn bị môi trường

Bạn có thể cài đặt NetworkX cùng các thư viện hỗ trợ khác bằng pip. Nếu sử dụng Google Colab hoặc Jupyter Notebook, chạy lệnh sau:

!pip install networkx matplotlib pandas numpy

Import các thư viện cần thiết để bắt đầu:

import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

Tạo mạng xã hội giả lập để phân tích

Trước tiên, chúng ta sẽ tạo một mạng xã hội giả lập với các nút đại diện cho người dùng và các cạnh đại diện cho mối quan hệ bạn bè giữa họ.

# Tạo một đồ thị không có hướng
G = nx.Graph()

# Thêm các nút (người dùng)
G.add_nodes_from(['Alice', 'Bob', 'Charlie', 'Diana', 'Eve', 'Frank', 'Grace'])

# Thêm các cạnh (mối quan hệ bạn bè)
edges = [('Alice', 'Bob'), ('Alice', 'Charlie'), ('Bob', 'Diana'),
         ('Charlie', 'Diana'), ('Diana', 'Eve'), ('Eve', 'Frank'),
         ('Frank', 'Grace'), ('Grace', 'Alice')]
G.add_edges_from(edges)

# Vẽ mạng
plt.figure(figsize=(8,6))
nx.draw(G, with_labels=True, node_color='lightblue', edge_color='gray', node_size=1500, font_size=12)
plt.title("Mạng xã hội giả lập")
plt.show()

Tính toán chỉ số trung tâm (Centrality Measures)

Degree Centrality

Degree Centrality đo lường mức độ kết nối của mỗi nút trong mạng. Nút có giá trị cao thường là người có nhiều kết nối nhất.

degree_centrality = nx.degree_centrality(G)
print("Degree Centrality:")
for node, centrality in degree_centrality.items():
    print(f"{node}: {centrality:.2f}")

Betweenness Centrality

Betweenness Centrality đo lường mức độ một nút nằm trên đường đi ngắn nhất giữa các nút khác. Nút có giá trị cao thường đóng vai trò “cầu nối”.

betweenness_centrality = nx.betweenness_centrality(G)
print("\nBetweenness Centrality:")
for node, centrality in betweenness_centrality.items():
    print(f"{node}: {centrality:.2f}")

Closeness Centrality

Closeness Centrality đo mức độ gần gũi của một nút với tất cả các nút khác trong mạng.

closeness_centrality = nx.closeness_centrality(G)
print("\nCloseness Centrality:")
for node, centrality in closeness_centrality.items():
    print(f"{node}: {centrality:.2f}")

Phát hiện cộng đồng trong mạng xã hội

Cộng đồng trong mạng xã hội là những nhóm người dùng có kết nối chặt chẽ với nhau. NetworkX không hỗ trợ phát hiện cộng đồng trực tiếp, nhưng bạn có thể sử dụng thuật toán Girvan-Newman từ networkx.algorithms.community.

from networkx.algorithms import community

communities = community.girvan_newman(G)
top_level_communities = next(communities)
community_list = [list(c) for c in top_level_communities]
print("\nCộng đồng phát hiện được:")
for idx, c in enumerate(community_list, 1):
    print(f"Cộng đồng {idx}: {c}")

Trực quan hóa cộng đồng

Bạn có thể vẽ các cộng đồng với màu sắc khác nhau để dễ phân biệt.

color_map = []
for node in G:
    if node in community_list[0]:
        color_map.append('skyblue')
    else:
        color_map.append('lightgreen')

plt.figure(figsize=(8,6))
nx.draw(G, with_labels=True, node_color=color_map, edge_color='gray', node_size=1500, font_size=12)
plt.title("Mạng xã hội với cộng đồng")
plt.show()

Phân tích mạng xã hội lớn hơn từ file dữ liệu

Bạn có thể phân tích một mạng xã hội thực tế bằng cách đọc dữ liệu từ file CSV chứa các cặp người dùng kết nối với nhau. Ví dụ, giả sử file social_network.csv có cấu trúc:

source,target
Alice,Bob
Bob,Charlie
Charlie,Diana
...

Đọc dữ liệu và tạo graph:

df = pd.read_csv('social_network.csv')
G_real = nx.from_pandas_edgelist(df, 'source', 'target')

plt.figure(figsize=(10,8))
nx.draw_spring(G_real, with_labels=True, node_size=800, node_color='lightcoral')
plt.title("Mạng xã hội thực tế")
plt.show()

Kết luận

Bạn vừa học cách sử dụng NetworkX để mô hình hóa và phân tích mạng xã hội, từ việc tạo mạng, tính toán các chỉ số trung tâm, phát hiện cộng đồng đến trực quan hóa mạng. Với những kiến thức này, bạn có thể mở rộng phân tích cho các mạng phức tạp hơn, chẳng hạn mạng xã hội trên Twitter hoặc Facebook bằng cách thu thập dữ liệu API.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!