3

 

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

from sklearn.preprocessing import StandardScaler

from sklearn.decomposition import PCA

# Load and prepare the data

iris = load_iris()

df = pd.DataFrame(data=iris.data, columns=iris.feature_names)

df['target'] = iris.target

df['target_names'] = pd.Categorical.from_codes(iris.target, iris.target_names)

# Standardize the features and perform PCA

X = df[iris.feature_names]

X_scaled = StandardScaler().fit_transform(X)

pca = PCA(n_components=2)

X_pca = pca.fit_transform(X_scaled)

# Plot PCA results

plt.figure(figsize=(10, 8))

for target, target_name in zip(sorted(df['target'].unique()), sorted(df['target_names'].unique())):

mask = df['target'] == target

plt.scatter(X_pca[mask, 0], X_pca[mask, 1], label=target_name, alpha=0.8)

plt.xlabel(f'PC1 ({pca.explained_variance_ratio_[0]:.2%} variance)')

plt.ylabel(f'PC2 ({pca.explained_variance_ratio_[1]:.2%} variance)')

plt.title('PCA of Iris Dataset')

plt.legend()

plt.grid(True, alpha=0.3)

plt.show()

# Plot cumulative explained variance

plt.figure(figsize=(10, 6))

plt.plot(np.cumsum(pca.explained_variance_ratio_), 'bo-')

plt.xlabel('Number of Components')

plt.ylabel('Cumulative Explained Variance')

plt.title('Explained Variance vs. Number of Components')

plt.grid(True, alpha=0.3)

plt.show()

Comments

Popular posts from this blog

1

2