Question: import numpy as np # Sample data points data _ points = { ' P 1 ' : [ 5 . 1 , 3 .
import numpy as np
# Sample data points
datapoints
P:
P:
P:
P:
P:
P:
# Calculate Euclidean distance between two points
def euclideandistancepoint point:
return npsqrtnpsumnparraypoint nparraypoint
# Create initial distance matrix
labels listdatapoints.keys
numpoints lenlabels
distancematrix npzerosnumpoints, numpoints
for i in rangenumpoints:
for j in rangei numpoints:
distancematrixi j euclideandistancedatapointslabelsi datapointslabelsj
distancematrixj i distancematrixi j # Distance matrix is symmetric
# Display initial distance matrix
printInitial Distance Matrix:"
printdistancematrix
# Single linkage clustering and updating distance matrix
clusters label: label for label in labels
while lenclusters:
# Find the minimum distance in the current matrix
mindistance npmindistancematrixnpnonzerodistancematrix
# Find indices of the minimum distance
indices npwheredistancematrix mindistance
idx idx indices indices
# Merge the clusters by updating the distance matrix
newcluster labelsidx labelsidx
clustersnewcluster clusters.poplabelsidx clusters.poplabelsidx
# Update the distance matrix for merged clusters
for i in rangenumpoints:
if labelsi in clustersnewcluster:
for j in rangenumpoints:
if labelsj not in clustersnewcluster:
mindist mindistancematrixi j distancematrixidx j distancematrixidx j
distancematrixi j mindist
distancematrixj i mindist
# Display updated distance matrix
printf
Clusters Formed: listclusterskeys
printUpdated Distance Matrix:"
printdistancematrix
# Print the final cluster
printf
Final Cluster: listclusterskeys
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
