Bắt đầu ngayBắt đầu miễn phí

Tìm người dùng tương tự

Giờ bạn sẽ mở rộng những gì đã học để viết một hàm tên là most_similar_users() nhằm tìm những người dùng giống nhất với một người dùng cho trước.

Phần khởi đầu của hàm đã được viết sẵn cho bạn. Một danh sách node user_nodes đã được tạo, chứa tất cả người dùng ngoại trừ người dùng cho trước được truyền vào hàm. Nhiệm vụ của bạn là hoàn thiện hàm để tìm những người dùng giống nhất với người dùng này. Bạn sẽ dùng lại hàm user_similarity() từ bài tập trước để hỗ trợ.

Một dictionary tên similarities đã được thiết lập, trong đó các khóa là điểm số và giá trị là danh sách các node. Nếu bạn chưa từng thấy defaultdict thì đừng lo — bạn sẽ học thêm về nó ở Chương 3! Nó hoạt động giống hệt một dictionary thông thường trong Python.

Bài tập này là một phần của khóa học

Phân tích mạng nâng cao với Python

Xem khóa học

Hướng dẫn bài tập

  • Lặp qua user_nodes và tính độ tương đồng giữa user và từng user_node (n) bằng hàm user_similarity() của bạn. Lưu kết quả vào similarity.
  • Thêm điểm số và node vào dictionary similarities. Khóa là điểm số — similarity — và giá trị là node — n.
  • Tính điểm tương đồng lớn nhất. Đầu tiên, truy cập các khóa (chứa điểm số) của similarities bằng phương thức .keys(), sau đó dùng hàm max(). Lưu kết quả vào max_similarity.
  • Trả về danh sách người dùng có độ tương đồng cực đại. Danh sách này là giá trị tại khóa max_similarity của similarities.
  • Dùng hàm most_similar_users() của bạn để in ra danh sách người dùng giống với 'u4560' nhất.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

from collections import defaultdict

def most_similar_users(G, user, user_nodes, proj_nodes):
    # Data checks
    assert G.nodes[user]['bipartite'] == 'users'

    # Get other nodes from user partition
    user_nodes = set(user_nodes)
    user_nodes.remove(user)

    # Create the dictionary: similarities
    similarities = defaultdict(list)
    for n in ____:
        similarity = ____(____, ____, ____, ____)
        ____[____].____

    # Compute maximum similarity score: max_similarity
    max_similarity = ____

    # Return list of users that share maximal similarity
    return ____[____]

user_nodes = get_nodes_from_partition(G, 'users')
project_nodes = get_nodes_from_partition(G, 'projects')

print(____)
Chỉnh sửa và Chạy Mã