<｜begin▁of▁sentence｜>### Instruction:
Imagine a cartographer who has collected a trove of data from geographic surveys, resulting in a comprehensive matrix that holds 100 distinct observations across 50 varied topographical features. In the realm of cartography, such extensive data can be overwhelming to present or analyze succinctly. To this end, the cartographer contemplates employing a scree plot, a tool akin to a topographical profile, which depicts the landscape of singular values derived from the matrix. This visualization serves as a guide to discern the predominant features — much like identifying the prominent peaks in a mountain range — that are integral in representing the data's underlying structure. By scrutinizing the scree plot, the cartographer seeks to pinpoint the number of pivotal components that would best reduce the complexity of the data matrix without losing the essence of the geographical information — retaining clarity while simplifying the map for practical use.
### Response:
import numpy as np
import matplotlib.pyplot as plt
from graspologic.plot import screeplot
from sklearn.decomposition import PCA

# Create a random matrix with more rows than columns
X = np.random.rand(100, 50)

# Run PCA on the matrix and get the singular values
pca = PCA()
pca.fit(X)
singular_values = pca.singular_values_

# Plot the scree plot
fig, ax = plt.subplots()
screeplot(X=singular_values, title='Scree Plot', context='talk',
          font_scale=1.5, figsize=(12, 6), cumulative=False,
          show_first=10, show_elbow=True, ax=ax)
plt.show()
<|EOT|>
