Skip to content
Snippets Groups Projects
Commit ad5d4a40 authored by Dowling_Wong's avatar Dowling_Wong
Browse files

removed file not needed

parent 3e271a54
Branches
No related tags found
No related merge requests found
import numpy as np
def initialize_centroids(data, k):
"""
Randomly initialize k centroids from the dataset.
"""
indices = np.random.choice(data.shape[0], k, replace=False)
return data[indices]
def compute_distances(data, centroids):
"""
Compute the distance from each point to each centroid.
"""
distances = np.zeros((data.shape[0], len(centroids)))
for i, centroid in enumerate(centroids):
distances[:, i] = np.linalg.norm(data - centroid, axis=1)
return distances
def assign_clusters(distances):
"""
Assign each data point to the nearest centroid.
"""
return np.argmin(distances, axis=1)
def update_centroids(data, clusters, k):
"""
Update the centroids as the mean of assigned points.
"""
new_centroids = np.zeros((k, data.shape[1]))
for i in range(k):
new_centroids[i] = data[clusters == i].mean(axis=0)
return new_centroids
def k_means(data, k, max_iterations=100, tolerance=1e-4):
"""
Perform k-means clustering on the dataset.
"""
centroids = initialize_centroids(data, k)
for _ in range(max_iterations):
distances = compute_distances(data, centroids)
clusters = assign_clusters(distances)
new_centroids = update_centroids(data, clusters, k)
# Check for convergence
if np.linalg.norm(new_centroids - centroids) < tolerance:
break
centroids = new_centroids
return clusters, centroids
# Example usage
data = np.random.rand(100, 2) # Generate some random 2D data points
k = 3 # Number of clusters
clusters, centroids = k_means(data, k)
print("Cluster assignments:", clusters)
print("Centroids:", centroids)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment