()
| 162 | |
| 163 | |
| 164 | def load_fb100_dataset(): |
| 165 | mat = io.loadmat('node_raw_data/Penn94.mat') |
| 166 | A = mat['A'] |
| 167 | metadata = mat['local_info'] |
| 168 | |
| 169 | edge_index = A.nonzero() |
| 170 | metadata = metadata.astype(int) |
| 171 | label = metadata[:, 1] - 1 # gender label, -1 means unlabeled |
| 172 | |
| 173 | # make features into one-hot encodings |
| 174 | feature_vals = np.hstack((np.expand_dims(metadata[:, 0], 1), metadata[:, 2:])) |
| 175 | features = np.empty((A.shape[0], 0)) |
| 176 | for col in range(feature_vals.shape[1]): |
| 177 | feat_col = feature_vals[:, col] |
| 178 | feat_onehot = label_binarize(feat_col, classes=np.unique(feat_col)) |
| 179 | features = np.hstack((features, feat_onehot)) |
| 180 | |
| 181 | node_feat = torch.tensor(features, dtype=torch.float) |
| 182 | num_nodes = metadata.shape[0] |
| 183 | label = torch.LongTensor(label) |
| 184 | |
| 185 | g = dgl.graph((edge_index[0], edge_index[1]), num_nodes=num_nodes) |
| 186 | |
| 187 | return g, node_feat, label |
| 188 | |
| 189 | |
| 190 | def generate_node_data(dataset): |
no outgoing calls
no test coverage detected