diff env/lib/python3.9/site-packages/networkx/algorithms/node_classification/utils.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/networkx/algorithms/node_classification/utils.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,99 @@
+def _propagate(P, F, B):
+    """Propagate labels by one step
+
+    Parameters
+    ----------
+    P : scipy sparse matrix, shape = [n_samples, n_samples]
+        Propagation matrix
+    F : numpy array, shape = [n_samples, n_classes]
+        Label matrix
+    B : numpy array, shape = [n_samples, n_classes]
+        Base matrix
+
+    Returns
+    ----------
+    F_new : array, shape = [n_samples, n_classes]
+        Label matrix
+    """
+    F_new = P.dot(F) + B
+    return F_new
+
+
+def _get_label_info(G, label_name):
+    """Get and return information of labels from the input graph
+
+    Parameters
+    ----------
+    G : Network X graph
+    label_name : string
+        Name of the target label
+
+    Returns
+    ----------
+    labels : numpy array, shape = [n_labeled_samples, 2]
+        Array of pairs of labeled node ID and label ID
+    label_dict : numpy array, shape = [n_classes]
+        Array of labels
+        i-th element contains the label corresponding label ID `i`
+    """
+    import numpy as np
+
+    labels = []
+    label_to_id = {}
+    lid = 0
+    for i, n in enumerate(G.nodes(data=True)):
+        if label_name in n[1]:
+            label = n[1][label_name]
+            if label not in label_to_id:
+                label_to_id[label] = lid
+                lid += 1
+            labels.append([i, label_to_id[label]])
+    labels = np.array(labels)
+    label_dict = np.array(
+        [label for label, _ in sorted(label_to_id.items(), key=lambda x: x[1])]
+    )
+    return (labels, label_dict)
+
+
+def _init_label_matrix(n_samples, n_classes):
+    """Create and return zero matrix
+
+    Parameters
+    ----------
+    n_samples : integer
+        The number of nodes (samples) on the input graph
+    n_classes : integer
+        The number of classes (distinct labels) on the input graph
+
+    Returns
+    ----------
+    F : numpy array, shape = [n_samples, n_classes]
+        Label matrix
+    """
+    import numpy as np
+
+    F = np.zeros((n_samples, n_classes))
+    return F
+
+
+def _predict(F, label_dict):
+    """Predict labels by learnt label matrix
+
+    Parameters
+    ----------
+    F : numpy array, shape = [n_samples, n_classes]
+        Learnt (resulting) label matrix
+    label_dict : numpy array, shape = [n_classes]
+        Array of labels
+        i-th element contains the label corresponding label ID `i`
+
+    Returns
+    ----------
+    predicted : numpy array, shape = [n_samples]
+        Array of predicted labels
+    """
+    import numpy as np
+
+    predicted_label_ids = np.argmax(F, axis=1)
+    predicted = label_dict[predicted_label_ids].tolist()
+    return predicted