# Chapter 5: Unsupervised Learning

## 5.3 Evaluation Metrics for Unsupervised Learning

Evaluating the performance of unsupervised learning algorithms can be quite challenging as we don't have a ground truth to compare with the output of the algorithms. However, there are several metrics that we can use to evaluate the quality of the clusters or the dimensionality reduction. These metrics can be broadly classified into two categories - external evaluation metrics and internal evaluation metrics.

External evaluation metrics are used when we have some external knowledge about the data, such as class labels or human annotations. One commonly used external evaluation metric is the Adjusted Rand Index (ARI), which measures the similarity between the true labels and the predicted labels. Another external evaluation metric is the Normalized Mutual Information (NMI), which measures the mutual information between the true labels and the predicted labels.

Internal evaluation metrics, on the other hand, are used when we don't have any external knowledge about the data. These metrics measure the quality of the clusters or the dimensionality reduction based on the data itself. One commonly used internal evaluation metric is the Silhouette Coefficient, which measures how well each data point fits into its assigned cluster relative to other clusters.

Overall, while evaluating the performance of unsupervised learning algorithms can be challenging, the use of appropriate evaluation metrics can help us gain insights into the quality of the clusters or the dimensionality reduction, and guide us in making informed decisions about the algorithms to use for our data.

### 5.3.1 **Silhouette Score**

The silhouette score is a measure of how similar an object is to its own cluster compared to other clusters. This measure is widely used in the field of clustering and is an important tool for evaluating the quality of a clustering algorithm.

The silhouette score ranges from -1 to 1, where a score of 1 indicates that the object is very well matched to its own cluster and poorly matched to neighboring clusters. On the other hand, a score of -1 indicates that the object is poorly matched to its own cluster and well matched to neighboring clusters, while a score of 0 indicates that the object is equally matched to its own cluster and neighboring clusters.

The silhouette score is an important metric for evaluating the effectiveness of clustering algorithms and is used in a variety of applications, including image segmentation, pattern recognition, and data mining.

**Example:**

Here's a simple example of how to compute the silhouette score using Scikit-learn:

`from sklearn.metrics import silhouette_score`

# Compute the silhouette score

score = silhouette_score(X, labels)

print("Silhouette score:", score)

In this example,

is the dataset and **X**

are the cluster assignments for each data point.**labels**

**Output:**

The code imports the silhouette_score function from the sklearn.metrics module, computes the silhouette score for the data and labels, and prints the silhouette score.

The output of the code will be a float value, which represents the silhouette score. The silhouette score ranges from -1 to 1, with a score of 1 being the best and a score of -1 being the worst. A score of 0 indicates that the data points are evenly distributed between clusters.

Here is an example of the output:

`Silhouette score: 0.8`

The output shows that the silhouette score is 0.8, which is a good score. This means that the data points are well-separated into clusters.

You can change the data and labels to get a different output. For example, here is the output of the code with different data and labels:

`Silhouette score: -0.2`

The output shows that the silhouette score is -0.2, which is a bad score. This means that the data points are not well-separated into clusters.

### 5.3.2 **Davies-Bouldin Index**

The Davies-Bouldin index is a widely used metric for evaluating the effectiveness of clustering algorithms. In essence, the index measures the quality of the clusters generated by the algorithm. Specifically, the index is calculated by taking the average similarity measure of each cluster with its most similar cluster.

The measure of similarity used in the calculation is the ratio of within-cluster distances to between-cluster distances. Simply put, the index rewards clusters which are compact and well separated from other clusters. Clusters that are farther apart and less dispersed from each other are favored by the index, as they result in a better score.

The Davies-Bouldin index is a valuable tool for assessing the quality of clustering algorithms, and it is often used in combination with other metrics to determine the most effective approach for a given data set.

**Example:**

Here's a simple example of how to compute the Davies-Bouldin index using Scikit-learn:

`from sklearn.metrics import davies_bouldin_score`

# Compute the Davies-Bouldin index

dbi = davies_bouldin_score(X, labels)

print("Davies-Bouldin index:", dbi)

**Output:**

The example code imports the davies_bouldin_score function from the sklearn.metrics module, computes the Davies-Bouldin index for the data and labels, and prints the Davies-Bouldin index.

The output of the code will be a float value, which represents the Davies-Bouldin index. The Davies-Bouldin index ranges from 0 to infinity, with a lower score being better. A score of 0 indicates that the clusters are perfectly separated.

Here is an example of the output:

`Davies-Bouldin index: 0.2`

The output shows that the Davies-Bouldin index is 0.2, which is a good score. This means that the clusters are well-separated.

You can change the data and labels to get a different output. For example, here is the output of the code with different data and labels:

`Davies-Bouldin index: 1.5`

The output shows that the Davies-Bouldin index is 1.5, which is a bad score. This means that the clusters are not well-separated.

### 5.3.3 **Explained Variance Ratio for PCA**

When using PCA for dimensionality reduction, it is important to understand the explained variance ratio, which tells us how much variance is captured by each principal component. This metric is calculated by dividing the eigenvalue of each principal component by the sum of all eigenvalues.

By analyzing the explained variance ratio, we can determine the number of principal components needed to accurately represent the original data while minimizing information loss. Additionally, it is important to note that there are several other metrics used to evaluate the quality of PCA, such as the silhouette score and the elbow method.

These metrics can be used in conjunction with the explained variance ratio to ensure that the dimensionality reduction technique is effective and appropriate for the given dataset.

**Example:**

Here's a simple example of how to compute the explained variance ratio using Scikit-learn:

`# The explained variance ratio tells us how much information is compressed into the first few components`

explained_variance_ratio = pca.explained_variance_ratio_

print("Explained variance ratio:", explained_variance_ratio)

**Output:**

It imports the `explained_variance_ratio_`

attribute from the `pca`

object, which tells us how much information is compressed into the first few components. The `explained_variance_ratio_`

attribute is a NumPy array, so we can print it out using the `print()`

function.

The output of the code will be a NumPy array, where each element represents the percentage of variance explained by the corresponding principal component. For example, if the `explained_variance_ratio_`

array is `[0.9, 0.1]`

, then the first principal component explains 90% of the variance in the data, and the second principal component explains 10% of the variance in the data.

Here is an example of the output:

`Explained variance ratio: [0.9, 0.1]`

The output shows that the first principal component explains 90% of the variance in the data, and the second principal component explains 10% of the variance in the data.

Here is the full code:

`from sklearn.decomposition import PCA`

import numpy as np

# Assuming X is a defined dataset

X = np.random.rand(100, 10) # Example random dataset

# Create a PCA object

pca = PCA()

# Fit the PCA object to the data

pca.fit(X)

# Get the explained variance ratio

explained_variance_ratio = pca.explained_variance_ratio_

# Print the explained variance ratio

print("Explained variance ratio:", explained_variance_ratio)

### 5.3.4 **The Importance of Understanding Evaluation Metrics for Unsupervised Learning**

Understanding these evaluation metrics is crucial for assessing the performance of your unsupervised learning models. Each metric provides a different perspective on the model's performance, and it's important to understand the strengths and weaknesses of each.

For example, the silhouette score is a measure of how similar an object is to its own cluster compared to other clusters. A high silhouette score indicates that the object is well matched to its own cluster and poorly matched to neighboring clusters. However, the silhouette score assumes that clusters are convex and isotropic, which is not always the case.

The Davies-Bouldin index is a measure of the average similarity of each cluster with its most similar cluster. A lower Davies-Bouldin index relates to a model with better separation between the clusters. However, like the silhouette score, the Davies-Bouldin index assumes that clusters are convex and isotropic.

When using PCA for dimensionality reduction, the explained variance ratio tells us how much variance is captured by each principal component. This can help us understand how much information is being preserved and how much is being lost in the dimensionality reduction process.

In addition to understanding these metrics, it's also important to know how to compute them using tools like Scikit-learn. This includes understanding the output of these metrics and how to interpret them.

## 5.3 Evaluation Metrics for Unsupervised Learning

Evaluating the performance of unsupervised learning algorithms can be quite challenging as we don't have a ground truth to compare with the output of the algorithms. However, there are several metrics that we can use to evaluate the quality of the clusters or the dimensionality reduction. These metrics can be broadly classified into two categories - external evaluation metrics and internal evaluation metrics.

External evaluation metrics are used when we have some external knowledge about the data, such as class labels or human annotations. One commonly used external evaluation metric is the Adjusted Rand Index (ARI), which measures the similarity between the true labels and the predicted labels. Another external evaluation metric is the Normalized Mutual Information (NMI), which measures the mutual information between the true labels and the predicted labels.

Internal evaluation metrics, on the other hand, are used when we don't have any external knowledge about the data. These metrics measure the quality of the clusters or the dimensionality reduction based on the data itself. One commonly used internal evaluation metric is the Silhouette Coefficient, which measures how well each data point fits into its assigned cluster relative to other clusters.

Overall, while evaluating the performance of unsupervised learning algorithms can be challenging, the use of appropriate evaluation metrics can help us gain insights into the quality of the clusters or the dimensionality reduction, and guide us in making informed decisions about the algorithms to use for our data.

### 5.3.1 **Silhouette Score**

The silhouette score is a measure of how similar an object is to its own cluster compared to other clusters. This measure is widely used in the field of clustering and is an important tool for evaluating the quality of a clustering algorithm.

The silhouette score ranges from -1 to 1, where a score of 1 indicates that the object is very well matched to its own cluster and poorly matched to neighboring clusters. On the other hand, a score of -1 indicates that the object is poorly matched to its own cluster and well matched to neighboring clusters, while a score of 0 indicates that the object is equally matched to its own cluster and neighboring clusters.

The silhouette score is an important metric for evaluating the effectiveness of clustering algorithms and is used in a variety of applications, including image segmentation, pattern recognition, and data mining.

**Example:**

Here's a simple example of how to compute the silhouette score using Scikit-learn:

`from sklearn.metrics import silhouette_score`

# Compute the silhouette score

score = silhouette_score(X, labels)

print("Silhouette score:", score)

In this example,

is the dataset and **X**

are the cluster assignments for each data point.**labels**

**Output:**

The code imports the silhouette_score function from the sklearn.metrics module, computes the silhouette score for the data and labels, and prints the silhouette score.

The output of the code will be a float value, which represents the silhouette score. The silhouette score ranges from -1 to 1, with a score of 1 being the best and a score of -1 being the worst. A score of 0 indicates that the data points are evenly distributed between clusters.

Here is an example of the output:

`Silhouette score: 0.8`

The output shows that the silhouette score is 0.8, which is a good score. This means that the data points are well-separated into clusters.

You can change the data and labels to get a different output. For example, here is the output of the code with different data and labels:

`Silhouette score: -0.2`

The output shows that the silhouette score is -0.2, which is a bad score. This means that the data points are not well-separated into clusters.

### 5.3.2 **Davies-Bouldin Index**

The Davies-Bouldin index is a widely used metric for evaluating the effectiveness of clustering algorithms. In essence, the index measures the quality of the clusters generated by the algorithm. Specifically, the index is calculated by taking the average similarity measure of each cluster with its most similar cluster.

The measure of similarity used in the calculation is the ratio of within-cluster distances to between-cluster distances. Simply put, the index rewards clusters which are compact and well separated from other clusters. Clusters that are farther apart and less dispersed from each other are favored by the index, as they result in a better score.

The Davies-Bouldin index is a valuable tool for assessing the quality of clustering algorithms, and it is often used in combination with other metrics to determine the most effective approach for a given data set.

**Example:**

Here's a simple example of how to compute the Davies-Bouldin index using Scikit-learn:

`from sklearn.metrics import davies_bouldin_score`

# Compute the Davies-Bouldin index

dbi = davies_bouldin_score(X, labels)

print("Davies-Bouldin index:", dbi)

**Output:**

The example code imports the davies_bouldin_score function from the sklearn.metrics module, computes the Davies-Bouldin index for the data and labels, and prints the Davies-Bouldin index.

The output of the code will be a float value, which represents the Davies-Bouldin index. The Davies-Bouldin index ranges from 0 to infinity, with a lower score being better. A score of 0 indicates that the clusters are perfectly separated.

Here is an example of the output:

`Davies-Bouldin index: 0.2`

The output shows that the Davies-Bouldin index is 0.2, which is a good score. This means that the clusters are well-separated.

`Davies-Bouldin index: 1.5`

The output shows that the Davies-Bouldin index is 1.5, which is a bad score. This means that the clusters are not well-separated.

### 5.3.3 **Explained Variance Ratio for PCA**

When using PCA for dimensionality reduction, it is important to understand the explained variance ratio, which tells us how much variance is captured by each principal component. This metric is calculated by dividing the eigenvalue of each principal component by the sum of all eigenvalues.

By analyzing the explained variance ratio, we can determine the number of principal components needed to accurately represent the original data while minimizing information loss. Additionally, it is important to note that there are several other metrics used to evaluate the quality of PCA, such as the silhouette score and the elbow method.

These metrics can be used in conjunction with the explained variance ratio to ensure that the dimensionality reduction technique is effective and appropriate for the given dataset.

**Example:**

Here's a simple example of how to compute the explained variance ratio using Scikit-learn:

`# The explained variance ratio tells us how much information is compressed into the first few components`

explained_variance_ratio = pca.explained_variance_ratio_

print("Explained variance ratio:", explained_variance_ratio)

**Output:**

It imports the `explained_variance_ratio_`

attribute from the `pca`

object, which tells us how much information is compressed into the first few components. The `explained_variance_ratio_`

attribute is a NumPy array, so we can print it out using the `print()`

function.

The output of the code will be a NumPy array, where each element represents the percentage of variance explained by the corresponding principal component. For example, if the `explained_variance_ratio_`

array is `[0.9, 0.1]`

, then the first principal component explains 90% of the variance in the data, and the second principal component explains 10% of the variance in the data.

Here is an example of the output:

`Explained variance ratio: [0.9, 0.1]`

The output shows that the first principal component explains 90% of the variance in the data, and the second principal component explains 10% of the variance in the data.

Here is the full code:

`from sklearn.decomposition import PCA`

import numpy as np

# Assuming X is a defined dataset

X = np.random.rand(100, 10) # Example random dataset

# Create a PCA object

pca = PCA()

# Fit the PCA object to the data

pca.fit(X)

# Get the explained variance ratio

explained_variance_ratio = pca.explained_variance_ratio_

# Print the explained variance ratio

print("Explained variance ratio:", explained_variance_ratio)

### 5.3.4 **The Importance of Understanding Evaluation Metrics for Unsupervised Learning**

Understanding these evaluation metrics is crucial for assessing the performance of your unsupervised learning models. Each metric provides a different perspective on the model's performance, and it's important to understand the strengths and weaknesses of each.

For example, the silhouette score is a measure of how similar an object is to its own cluster compared to other clusters. A high silhouette score indicates that the object is well matched to its own cluster and poorly matched to neighboring clusters. However, the silhouette score assumes that clusters are convex and isotropic, which is not always the case.

The Davies-Bouldin index is a measure of the average similarity of each cluster with its most similar cluster. A lower Davies-Bouldin index relates to a model with better separation between the clusters. However, like the silhouette score, the Davies-Bouldin index assumes that clusters are convex and isotropic.

When using PCA for dimensionality reduction, the explained variance ratio tells us how much variance is captured by each principal component. This can help us understand how much information is being preserved and how much is being lost in the dimensionality reduction process.

In addition to understanding these metrics, it's also important to know how to compute them using tools like Scikit-learn. This includes understanding the output of these metrics and how to interpret them.

## 5.3 Evaluation Metrics for Unsupervised Learning

Evaluating the performance of unsupervised learning algorithms can be quite challenging as we don't have a ground truth to compare with the output of the algorithms. However, there are several metrics that we can use to evaluate the quality of the clusters or the dimensionality reduction. These metrics can be broadly classified into two categories - external evaluation metrics and internal evaluation metrics.

External evaluation metrics are used when we have some external knowledge about the data, such as class labels or human annotations. One commonly used external evaluation metric is the Adjusted Rand Index (ARI), which measures the similarity between the true labels and the predicted labels. Another external evaluation metric is the Normalized Mutual Information (NMI), which measures the mutual information between the true labels and the predicted labels.

Internal evaluation metrics, on the other hand, are used when we don't have any external knowledge about the data. These metrics measure the quality of the clusters or the dimensionality reduction based on the data itself. One commonly used internal evaluation metric is the Silhouette Coefficient, which measures how well each data point fits into its assigned cluster relative to other clusters.

Overall, while evaluating the performance of unsupervised learning algorithms can be challenging, the use of appropriate evaluation metrics can help us gain insights into the quality of the clusters or the dimensionality reduction, and guide us in making informed decisions about the algorithms to use for our data.

### 5.3.1 **Silhouette Score**

The silhouette score is a measure of how similar an object is to its own cluster compared to other clusters. This measure is widely used in the field of clustering and is an important tool for evaluating the quality of a clustering algorithm.

The silhouette score ranges from -1 to 1, where a score of 1 indicates that the object is very well matched to its own cluster and poorly matched to neighboring clusters. On the other hand, a score of -1 indicates that the object is poorly matched to its own cluster and well matched to neighboring clusters, while a score of 0 indicates that the object is equally matched to its own cluster and neighboring clusters.

The silhouette score is an important metric for evaluating the effectiveness of clustering algorithms and is used in a variety of applications, including image segmentation, pattern recognition, and data mining.

**Example:**

Here's a simple example of how to compute the silhouette score using Scikit-learn:

`from sklearn.metrics import silhouette_score`

# Compute the silhouette score

score = silhouette_score(X, labels)

print("Silhouette score:", score)

In this example,

is the dataset and **X**

are the cluster assignments for each data point.**labels**

**Output:**

The code imports the silhouette_score function from the sklearn.metrics module, computes the silhouette score for the data and labels, and prints the silhouette score.

The output of the code will be a float value, which represents the silhouette score. The silhouette score ranges from -1 to 1, with a score of 1 being the best and a score of -1 being the worst. A score of 0 indicates that the data points are evenly distributed between clusters.

Here is an example of the output:

`Silhouette score: 0.8`

The output shows that the silhouette score is 0.8, which is a good score. This means that the data points are well-separated into clusters.

`Silhouette score: -0.2`

The output shows that the silhouette score is -0.2, which is a bad score. This means that the data points are not well-separated into clusters.

### 5.3.2 **Davies-Bouldin Index**

The Davies-Bouldin index is a widely used metric for evaluating the effectiveness of clustering algorithms. In essence, the index measures the quality of the clusters generated by the algorithm. Specifically, the index is calculated by taking the average similarity measure of each cluster with its most similar cluster.

The measure of similarity used in the calculation is the ratio of within-cluster distances to between-cluster distances. Simply put, the index rewards clusters which are compact and well separated from other clusters. Clusters that are farther apart and less dispersed from each other are favored by the index, as they result in a better score.

The Davies-Bouldin index is a valuable tool for assessing the quality of clustering algorithms, and it is often used in combination with other metrics to determine the most effective approach for a given data set.

**Example:**

Here's a simple example of how to compute the Davies-Bouldin index using Scikit-learn:

`from sklearn.metrics import davies_bouldin_score`

# Compute the Davies-Bouldin index

dbi = davies_bouldin_score(X, labels)

print("Davies-Bouldin index:", dbi)

**Output:**

The example code imports the davies_bouldin_score function from the sklearn.metrics module, computes the Davies-Bouldin index for the data and labels, and prints the Davies-Bouldin index.

The output of the code will be a float value, which represents the Davies-Bouldin index. The Davies-Bouldin index ranges from 0 to infinity, with a lower score being better. A score of 0 indicates that the clusters are perfectly separated.

Here is an example of the output:

`Davies-Bouldin index: 0.2`

The output shows that the Davies-Bouldin index is 0.2, which is a good score. This means that the clusters are well-separated.

`Davies-Bouldin index: 1.5`

The output shows that the Davies-Bouldin index is 1.5, which is a bad score. This means that the clusters are not well-separated.

### 5.3.3 **Explained Variance Ratio for PCA**

When using PCA for dimensionality reduction, it is important to understand the explained variance ratio, which tells us how much variance is captured by each principal component. This metric is calculated by dividing the eigenvalue of each principal component by the sum of all eigenvalues.

By analyzing the explained variance ratio, we can determine the number of principal components needed to accurately represent the original data while minimizing information loss. Additionally, it is important to note that there are several other metrics used to evaluate the quality of PCA, such as the silhouette score and the elbow method.

These metrics can be used in conjunction with the explained variance ratio to ensure that the dimensionality reduction technique is effective and appropriate for the given dataset.

**Example:**

Here's a simple example of how to compute the explained variance ratio using Scikit-learn:

`# The explained variance ratio tells us how much information is compressed into the first few components`

explained_variance_ratio = pca.explained_variance_ratio_

print("Explained variance ratio:", explained_variance_ratio)

**Output:**

It imports the `explained_variance_ratio_`

attribute from the `pca`

object, which tells us how much information is compressed into the first few components. The `explained_variance_ratio_`

attribute is a NumPy array, so we can print it out using the `print()`

function.

The output of the code will be a NumPy array, where each element represents the percentage of variance explained by the corresponding principal component. For example, if the `explained_variance_ratio_`

array is `[0.9, 0.1]`

, then the first principal component explains 90% of the variance in the data, and the second principal component explains 10% of the variance in the data.

Here is an example of the output:

`Explained variance ratio: [0.9, 0.1]`

The output shows that the first principal component explains 90% of the variance in the data, and the second principal component explains 10% of the variance in the data.

Here is the full code:

`from sklearn.decomposition import PCA`

import numpy as np

# Assuming X is a defined dataset

X = np.random.rand(100, 10) # Example random dataset

# Create a PCA object

pca = PCA()

# Fit the PCA object to the data

pca.fit(X)

# Get the explained variance ratio

explained_variance_ratio = pca.explained_variance_ratio_

# Print the explained variance ratio

print("Explained variance ratio:", explained_variance_ratio)

### 5.3.4 **The Importance of Understanding Evaluation Metrics for Unsupervised Learning**

Understanding these evaluation metrics is crucial for assessing the performance of your unsupervised learning models. Each metric provides a different perspective on the model's performance, and it's important to understand the strengths and weaknesses of each.

For example, the silhouette score is a measure of how similar an object is to its own cluster compared to other clusters. A high silhouette score indicates that the object is well matched to its own cluster and poorly matched to neighboring clusters. However, the silhouette score assumes that clusters are convex and isotropic, which is not always the case.

The Davies-Bouldin index is a measure of the average similarity of each cluster with its most similar cluster. A lower Davies-Bouldin index relates to a model with better separation between the clusters. However, like the silhouette score, the Davies-Bouldin index assumes that clusters are convex and isotropic.

When using PCA for dimensionality reduction, the explained variance ratio tells us how much variance is captured by each principal component. This can help us understand how much information is being preserved and how much is being lost in the dimensionality reduction process.

In addition to understanding these metrics, it's also important to know how to compute them using tools like Scikit-learn. This includes understanding the output of these metrics and how to interpret them.

## 5.3 Evaluation Metrics for Unsupervised Learning

### 5.3.1 **Silhouette Score**

**Example:**

Here's a simple example of how to compute the silhouette score using Scikit-learn:

`from sklearn.metrics import silhouette_score`

# Compute the silhouette score

score = silhouette_score(X, labels)

print("Silhouette score:", score)

In this example,

is the dataset and **X**

are the cluster assignments for each data point.**labels**

**Output:**

Here is an example of the output:

`Silhouette score: 0.8`

`Silhouette score: -0.2`

### 5.3.2 **Davies-Bouldin Index**

**Example:**

Here's a simple example of how to compute the Davies-Bouldin index using Scikit-learn:

`from sklearn.metrics import davies_bouldin_score`

# Compute the Davies-Bouldin index

dbi = davies_bouldin_score(X, labels)

print("Davies-Bouldin index:", dbi)

**Output:**

Here is an example of the output:

`Davies-Bouldin index: 0.2`

`Davies-Bouldin index: 1.5`

### 5.3.3 **Explained Variance Ratio for PCA**

**Example:**

Here's a simple example of how to compute the explained variance ratio using Scikit-learn:

`# The explained variance ratio tells us how much information is compressed into the first few components`

explained_variance_ratio = pca.explained_variance_ratio_

print("Explained variance ratio:", explained_variance_ratio)

**Output:**

`explained_variance_ratio_`

attribute from the `pca`

object, which tells us how much information is compressed into the first few components. The `explained_variance_ratio_`

attribute is a NumPy array, so we can print it out using the `print()`

function.

`explained_variance_ratio_`

array is `[0.9, 0.1]`

, then the first principal component explains 90% of the variance in the data, and the second principal component explains 10% of the variance in the data.

Here is an example of the output:

`Explained variance ratio: [0.9, 0.1]`

Here is the full code:

`from sklearn.decomposition import PCA`

import numpy as np

# Assuming X is a defined dataset

X = np.random.rand(100, 10) # Example random dataset

# Create a PCA object

pca = PCA()

# Fit the PCA object to the data

pca.fit(X)

# Get the explained variance ratio

explained_variance_ratio = pca.explained_variance_ratio_

# Print the explained variance ratio

print("Explained variance ratio:", explained_variance_ratio)