Title
No category Today 8:07 PM
import numpy as np
import pandas as pd
from sklearn import datasets
from [Link] import
PCA
# Load the Iris dataset
iris = datasets.load_iris()
data, columns = [Link],
iris.feature_names
# Create a Pandas DataFrame from
the Iris dataset
df = [Link](data,
columns=columns)
# Step 1: Mean normalize the features
normalized_data = (df - [Link]()) /
[Link]()
# Step 2: Find the covariance matrix
covariance_matrix =
[Link](normalized_data,
rowvar=False)
# Step 3: Find eigenvalues and
eigenvectors of the covariance matrix
eigenvalues, eigenvectors =
[Link](covariance_matrix)
# Step 4: Arrange eigenvalues in
descending order
sorted_indices =
[Link](eigenvalues)[::-1]
sorted_eigenvalues =
eigenvalues[sorted_indices]
sorted_eigenvectors = eigenvectors[:,
sorted_indices]
# Step 5: Select eigenvalues that
retain the required variance
total_variance =
[Link](sorted_eigenvalues)
variance_to_retain = 0.95
cumulative_variance =
[Link](sorted_eigenvalues) /
total_variance
num_components_to_retain =
[Link](cumulative_variance >=
variance_to_retain) + 1
selected_eigenvalues =
sorted_eigenvalues[:num_component
s_to_retain]
selected_eigenvectors =
sorted_eigenvectors[:, :num_compone
nts_to_retain]
# Step 6: Transform original data
using eigen vectors corresponding to
selected eigenvalues
transformed_data =
[Link](normalized_data,
selected_eigenvectors)
# Print the results
print(f"Number of components to
retain {variance_to_retain * 100}%
variance:
{num_components_to_retain}")
print("Explained variance ratio:",
selected_eigenvalues /
total_variance)
# Interpret which features influenced
the principal components the most
feature_contributions =
[Link](selected_eigenvectors) /
[Link]([Link](selected_eigenvectors
), axis=0)
feature_contributions_df =
[Link](feature_contributions,
index=columns,
columns=[f'PC{i + 1}' for i in
range(num_components_to_retain)])
print("\nFeature contributions to
Principal Components:")
print(feature_contributions_df)
Code 02
import numpy as np
import [Link] as plt
import pandas as pd
from sklearn import datasets
from [Link] import
PCA
def load_iris_data():
iris = datasets.load_iris()
data, columns = [Link],
iris.feature_names
return [Link](data,
columns=columns), [Link]
def display_correlation_matrix(df):
correlation_matrix = [Link]()
print("Correlation Matrix:")
print(correlation_matrix)
def normalize_features(df):
return (df - [Link]()) / [Link]()
def perform_pca(data, target):
pca = PCA(n_components=0.95)
transformed_data =
pca.fit_transform(data)
plot_before_after_pca(data,
transformed_data, target)
display_pca_info(pca)
display_feature_contributions([Link]
mponents_, [Link])
def
plot_before_after_pca(original_data,
transformed_data, target):
plt.figure(figsize=(12, 6))
# Original Data
[Link](1, 2, 1)
[Link](original_data.iloc[:, 0],
original_data.iloc[:, 1], c=target,
cmap='Set1')
[Link]('Original Data')
[Link]('Feature 01')
[Link]('Feature 02')
# Data after PCA
[Link](1, 2, 2)
[Link](transformed_data[:, 0],
transformed_data[:, 1], c=target,
cmap='Set1')
[Link]('Data after PCA')
[Link]('Principal Component 01')
[Link]('Principal Component 02')
[Link]fig('output_plot.png')
[Link]()
def display_pca_info(pca):
print(f"\nNumber of components to
retain 95% variance:
{pca.n_components_}")
print("Explained variance ratio:",
pca.explained_variance_ratio_)
def
display_feature_contributions(compo
nents, columns):
feature_contributions =
[Link](components) /
[Link]([Link](components), axis=1)
[:, [Link]]
feature_contributions_df =
[Link](feature_contributions.T
, index=columns,
columns=[f'PC{i + 1}' for i in
range([Link][0])])
print("\nFeature contributions to
Principal Components:")
print(feature_contributions_df)
# Plotting the feature contributions
plt.figure(figsize=(12, 6))
for i in
range([Link][0]):
[Link](1,
[Link][0], i + 1)
[Link](columns,
feature_contributions_df.iloc[:, i])
[Link](f'PC{i + 1} Feature
Contributions')
[Link]('Original Features')
[Link]('Contribution')
[Link]fig('output_plot_feature_contri
[Link]')
[Link]()
def main():
iris_data, target = load_iris_data()
display_correlation_matrix(iris_data)
normalized_data =
normalize_features(iris_data)
perform_pca(normalized_data,
target)
if __name__ == "__main__":
main()
Code 03
import numpy as np
import [Link] as plt
import pandas as pd
from sklearn import datasets
from [Link] import
PCA
# Load the Iris dataset
iris = datasets.load_iris()
data, columns = [Link],
iris.feature_names
# Create a Pandas DataFrame from
the Iris dataset
df = [Link](data,
columns=columns)
# Display the correlation matrix
correlation_matrix = [Link]()
print("Correlation Matrix:")
print(correlation_matrix)
# Mean normalize the features
normalized_data = (df - [Link]()) /
[Link]()
# Perform PCA using Scikit-learn
pca = PCA(n_components=0.95) #
Retain 95% variance
transformed_data =
pca.fit_transform(normalized_data)
# Plotting the data before and after
PCA
plt.figure(figsize=(12, 6))
# Original Data
[Link](1, 2, 1)
[Link](normalized_data.iloc[:, 0],
normalized_data.iloc[:, 1],
c=[Link], cmap='Set1')
[Link]('Original Data')
[Link]('Feature 01')
[Link]('Feature 02')
# Data after PCA
[Link](1, 2, 2)
[Link](transformed_data[:, 0],
transformed_data[:, 1], c=[Link],
cmap='Set1')
[Link]('Data after PCA')
[Link]('Principal Component 01')
[Link]('Principal Component 02')
[Link]fig('output_plot.png')
[Link]()
# Display the number of components
and explained variance ratio
print(f"\nNumber of components to
retain 95% variance:
{pca.n_components_}")
print("Explained variance ratio:",
pca.explained_variance_ratio_)
# Interpreting which features
influenced the principal components
the most
feature_contributions =
[Link](pca.components_) /
[Link]([Link](pca.components_),
axis=1)[:, [Link]]
feature_contributions_df =
[Link](feature_contributions.T
, index=columns,
columns=[f'PC{i + 1}' for i in
range(pca.n_components_)])
print("\nFeature contributions to
Principal Components:")
print(feature_contributions_df)
# Plotting the feature contributions
plt.figure(figsize=(12, 6))
for i in range(pca.n_components_):
[Link](1, pca.n_components_, i
+ 1)
[Link](columns,
feature_contributions_df.iloc[:, i])
[Link](f'PC{i + 1} Feature
Contributions')
[Link]('Original Features')
[Link]('Contribution')
[Link]fig('output_plot_feature_contri
[Link]')
[Link]()