Project 2
Hi,
The code for the above question is mentioned below:
#Importing library
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans, AgglomerativeClustering
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
# Load the data
data = pd.read_csv('Country-data.csv')
# Extract features
features = data.drop('country', axis=1)
features
# Data Preprocessing
# Handle missing values
features = features.dropna()
# Standardize the data
scaler = StandardScaler()
scaled_data = scaler.fit_transform(features)
# Principal Component Analysis (PCA)
pca = PCA(n_components=2)
pca_result = pca.fit_transform(scaled_data)
# K-Means Clustering
kmeans = KMeans(n_clusters=3, random_state=42) # Adjust the number of clusters as needed
kmeans_labels = kmeans.fit_predict(scaled_data)
# Hierarchical Clustering
hierarchical_clusters = AgglomerativeClustering(n_clusters=3, linkage='ward')
hierarchical_labels = hierarchical_clusters.fit_predict(scaled_data)
# Visualization (2D PCA plot)
plt.figure(figsize=(12, 5))
# K-Means Clustering
plt.subplot(1, 2, 1)
plt.scatter(pca_result[:, 0], pca_result[:, 1], c=kmeans_labels, cmap='viridis')
plt.title('K-Means Clustering')
# Hierarchical Clustering
plt.subplot(1, 2, 2)
linkage_matrix = linkage(scaled_data, method='ward')
dendrogram(linkage_matrix)
plt.title('Hierarchical Clustering')
plt.tight_layout()
plt.show()
# Combine results with the original data
data['KMeans_Cluster'] = kmeans_labels
data['Hierarchical_Cluster'] = hierarchical_labels
# Analyze the results and recommend countries for aid
cluster_0_countries = data[data['KMeans_Cluster'] == 0]['country']
# Display the countries in Cluster 0
print("Countries in Cluster 0 (K-Means):")
print(cluster_0_countries)
# Save the results to a CSV file
data.to_csv('clustered_countries_results.csv', index=False)