Hướng dẫn plot similarity matrix python - cốt truyện tương tự python ma trận

Nội phân chính

  • Tận dụng Python, Plotly và NetworkX để tạo biểu đồ tương tác để tìm các cụm tương tự
  • Bài đăng này được cấu trúc trong 4 phần:
  • 1] Sự tương đồng mẫu
  • 2] Xây dựng đồ thị
  • 3] vẽ đồ thị với cốt truyện
  • Phân tán âm mưu cho các nút
  • Sơ đồ phân tán cho các cạnh
  • 4] Thực hiện tương tác
  • Cuối cùng, vẽ các cụm tương tự theo cách tương tác!

Tận dụng Python, Plotly và NetworkX để tạo biểu đồ tương tác để tìm các cụm tương tự

Bài đăng này được cấu trúc trong 4 phần:

1] Sự tương đồng mẫu

2] Xây dựng đồ thịshow you how to build an interactive visualisation tool to gain insights about similarity clusters of your data. There are various problems which require an intuitive understanding of the data distribution. Visualising this distribution in an interactive way [for this example, with respect to sample similarity] can give you exactly this intuition. Furthermore, it’s a great tool to present results to other people.

3] vẽ đồ thị với cốt truyện

Bài đăng này được cấu trúc trong 4 phần:

  1. 1] Sự tương đồng mẫu
  2. 2] Xây dựng đồ thị
  3. 3] vẽ đồ thị với cốt truyện
  4. Phân tán âm mưu cho các nút

1] Sự tương đồng mẫu

2] Xây dựng đồ thịwe need to first calculate the similarity each sample has with every other sample.

3] vẽ đồ thị với cốt truyện. The ideia is always the same: two samples which have very similar feature vectors [in my case, embeddings], will have a similarity score close to 1. The more different these vectors are, the closer the similarity score will be to zero. For my running example, I will be using the cosine similarity.

Phân tán âm mưu cho các nút

Sơ đồ phân tán cho các cạnh

2] Xây dựng đồ thị

3] vẽ đồ thị với cốt truyệnWe simply need to input the matrix to the constructor.

Phân tán âm mưu cho các nút [each corresponding to a sample in our data, which, in my case, are words], and N*N edges, representing the similarity between every pair of words. There are N^2 because every pair of nodes has a similarity score, even if it is very close to zero. The edge weight represents the similarity score.

Sơ đồ phân tán cho các cạnh

4] Thực hiện tương tác. The first thing we could do is remove all edges which have a weight very close to zero, and visualise the graph again. This is clearly not enough insight into the similarity clusters. The next thing we could do is iteratively define an increasing threshold in the interval [0, 1], remove all edges which have a weight lower than the threshold, and visualise the graph. However, plotting these graphs iteratively in a static manner is not visually appealing at all, and can make things harder to interpret.

Cuối cùng, vẽ các cụm tương tự theo cách tương tác! in a single, interactive plot, with a similarity score slider at the bottom. Being able to freely manipulate this slider is very powerful in giving new insights about sample similarity and possible clusters.

3] vẽ đồ thị với cốt truyện

Phân tán âm mưu cho các nút

Phân tán âm mưu cho các nút

Đây là một thói quen đơn giản. Đưa ra một biểu đồ mạng, chúng tôi lặp qua tất cả các nút và thu thập vị trí X, Y, màu và văn bản của chúng [đối với thông tin di chuột trên chuột], tất cả đều được xác định trong phần sau. Sau đó, chúng tôi chỉ cần sử dụng thông tin này để tạo ra một sơ đồ phân tán với giao diện Plotly. Trong ngôn ngữ Plotly, âm mưu phân tán được gọi là một dấu vết mà chúng ta trở lại để sử dụng sau.We then simply use this information to create a scatter plot with Plotly’s interface. In Plotly’s language, the scatter plot is called a trace, which we return for later use.

Sơ đồ phân tán cho các cạnh

Mọi thứ trở nên hơi khó khăn hơn ở đây. Chúng ta cần tạo một dấu vết cho mỗi cạnh trong biểu đồ. Hãy nghĩ về một cạnh như một âm mưu phân tán duy nhất với hai điểm được liên kết bởi một đường thẳng.We need to create a trace for each and every edge in the graph. Think of an edge as a single scatter plot with two points linked by a straight line.

Vì vậy, đối với mỗi cạnh trong biểu đồ NetworkX, chúng tôi nhận được hai vị trí của nó và tạo một biểu đồ dòng kết nối hai điểm. Chúng tôi nối các dấu vết cạnh này vào Danh sách Danh sách Dấu vết cạnh và trả lại toàn bộ danh sách để sử dụng sau.

4] Thực hiện tương tác

Chúng tôi gần như ở cuối. Bây giờ chúng ta đã biết cách vẽ đồ thị bằng cách sử dụng Plotly, chúng ta có thể tạo một thanh trượt tương tác, chỉ định ngưỡng tương tự tối thiểu, sao cho các cạnh có trọng lượng thấp hơn ngưỡng không được hiển thị.we can create an interactive slider which specifies the minimum similarity threshold, such that edges with a weight lower than the threshold are not displayed.

Mặc dù việc thực hiện dài, nhưng nó rất đơn giản về mặt khái niệm. Về cơ bản, đối với mỗi giá trị thanh trượt [còn được gọi là bước], chúng tôi tạo một biểu đồ đồ thị hoàn chỉnh với các thói quen chúng tôi xác định trong phần trước. Những gì chúng tôi đang làm ở đây là việc tải trước mỗi lần cho mỗi bước thanh trượt. Do đó, không có phép thuật nào liên quan đến phần tương tác của cốt truyện: chúng tôi chỉ đơn giản là tạo ra một biểu đồ đồ thị cụ thể có thể nhìn thấy trong khi tất cả các phần khác là vô hình cho mỗi bước trượt, tạo ra ảo ảnh mà chúng tôi muốn. Cũng ở đây, chúng tôi chỉ định vị trí nút, màu và văn bản.it is conceptually very simple. Basically, for each slider value [also called step], we create a complete graph plot with the routines we defined in the previous section. What we are doing here is “preloading” every single plot for each slider step. Thus, there is no magic involved in the interaction part of the plot: we are simply making a specific graph plot visible whilst all others are invisible for each slider step, creating the illusion we want. It is also here that we specify node position, color, and text.

Cuối cùng, vẽ các cụm tương tự theo cách tương tác!

Đầu ra của đoạn mã ở trên [lặp lại từ GIF trên đầu]. Hình ảnh của tác giả.

Ngoài ra, khi di chuột qua các nút, bạn có thể dễ dàng thấy những từ nào thuộc về cụm nào. Trong ngưỡng được biểu diễn trên hình ảnh ở phía dưới, người ta có thể thấy ngay rằng thì Sharp Sharp [trên cùng bên trái] không đủ tương tự như bất kỳ từ nào khác, trong khi - Do đó kết nối với rất nhiều nút.when hovering over the nodes you can easily see which words belong to which cluster. In the represented threshold on the image at the bottom, one can immediately see that “sharp” [top left] is not similar enough to any other word, whilst “dreadful” [cluster on the bottom left] is similar to a lot of words — hence the connection with a lot of nodes.

Đồ thị vẽ với tên từ trong mỗi nút. Di chuột qua cốt truyện của bạn để xem cùng một văn bản. Hình ảnh của tác giả.

Và đây là cách bạn có thể tạo một công cụ trực quan tương tác để hiểu rõ hơn về các cụm tương tự của các mẫu dữ liệu của bạn. Trong một lưu ý kết luận, điều quan trọng cần lưu ý là điều này không được xác định rõ ràng cho sự tương đồng. Bạn có thể sử dụng công cụ này để trực quan hóa bất kỳ loại mối quan hệ nào mà bạn có giữa các thực thể, miễn là nó có ý nghĩa khi thể hiện nó với một biểu đồ. Một ví dụ đơn giản sẽ là sự xuất hiện của từ trong một kho tài liệu. Cuối cùng, cách tiếp cận chung không được áp dụng nghiêm ngặt để vẽ đồ thị: bạn có thể tạo cốt truyện tương tác với các sơ đồ phân tán, sơ đồ thanh, biểu đồ hình tròn và mọi cốt truyện khác mà bạn có thể tưởng tượng. Phần quan trọng là tính tương tác và dễ dàng giải thích mà nó cung cấp.In a concluding note, it is important to note that this is not strictly defined for similarity. You can use this tool to visualise any kind of relation that you have between entities, as long as it makes sense to represent it with a graph. One simple example would be word co-occurrence in a corpus of documents. Finally, the generic approach is not strictly applicable to plotting graphs: you can create the interactive plot with scatter plots, bar plots, pie charts, and every other plot you can imagine. The important part is the interactivity and the ease of interpretation it provides.

Bài Viết Liên Quan

Chủ Đề