def Knn_graph(data,edge_type,label,edge_norm,K):
时间: 2024-06-06 10:08:32 浏览: 18
import numpy as np
from sklearn.neighbors import NearestNeighbors
# Calculate the distance matrix
if edge_norm == 'euclidean':
dist_matrix = np.linalg.norm(data[:, np.newaxis, :] - data[np.newaxis, :, :], axis=-1)
else:
dist_matrix = np.sum(np.abs(data[:, np.newaxis, :] - data[np.newaxis, :, :]), axis=-1)
# Find the K nearest neighbors for each point
nbrs = NearestNeighbors(n_neighbors=K+1).fit(data)
distances, indices = nbrs.kneighbors(data)
# Create the adjacency matrix
num_nodes = len(data)
adj_matrix = np.zeros((num_nodes, num_nodes))
# Loop over each node and its K nearest neighbors
for i in range(num_nodes):
for j in range(1, K+1):
k = indices[i][j]
if edge_type == 'unweighted':
adj_matrix[i,k] = 1
adj_matrix[k,i] = 1
else:
adj_matrix[i,k] = 1/dist_matrix[i,k]
adj_matrix[k,i] = 1/dist_matrix[i,k]
# Create the edge list
edge_list = []
for i in range(num_nodes):
for j in range(i+1, num_nodes):
if adj_matrix[i,j] != 0:
edge_list.append((i,j))
# Create the label list
label_list = []
for i in range(num_nodes):
label_list.append(label[i])
return edge_list, label_list
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)