<｜begin▁of▁sentence｜>### Instruction:
Imagine we're in the studio contemplating a canvas representing a complex network, fashioned by the unpredictable brushstrokes of a Stochastic Block Model. Each cluster of nodes is akin to a distinct color palette, with the shades within those palettes blending based on the varying connection likelihoods as if mixed on an artist's palette. 

Our task, akin to that of restoring an aged fresco to reveal the original intent of the master artist, is to meticulously apply the SBMEstimator, as though it were our finest sable brush, to discern the intricate matrix of these connection probabilities. It's through this process we aim to unveil the grand design - the original block probabilities that were the artist's initial vision. 

Furthermore, in this artistic exploration, we are not just recovering the palette but also seeking to understand how each brushstroke, each node, belongs to its rightful color grouping. Can the SBMEstimator, with its precise and technical capabilities, help us in this creative endeavor, bringing clarity to the canvas that is this network graph?

As we consider the use of the SBMEstimator, let us remember that it is more than just a tool—it is a bridge between our current interpretation and the true essence of the underlying structure within the artwork that is our graph.
### Response:
import numpy as np
from graspologic.models import SBMEstimator
from graspologic.simulations import sbm

# Define the sizes of 3 blocks
block_sizes = [50, 50, 50]
# Define the probability matrix for 3 blocks
block_probs = np.array([[0.5, 0.1, 0.05],
                         [0.1, 0.7, 0.1],
                         [0.05, 0.1, 0.8]])

# Sample a graph using the stochastic block model
G = sbm(block_sizes, block_probs)

# Fit the SBMEstimator to the generated graph
sbm_estimator = SBMEstimator(loops=False)
sbm_estimator.fit(G)

# Print the estimated block probability matrix
print('Estimated block probability matrix:')
print(sbm_estimator.block_p_)

# Print the estimated vertex assignments to blocks
print('Vertex assignments to blocks:')
print(sbm_estimator.vertex_assignments_)
<|EOT|>
