<｜begin▁of▁sentence｜>### Instruction:
Imagine you're a forensic anthropologist who has gathered data from a recent case, consisting of 100 records, each detailing the measurements of 3 distinct characteristics of unearthed bone fragments. This array of measurements, collected in your research, is diverse, encompassing a variety of unidentified individuals. Your task, utilizing your expertise in anthropology combined with computational methods, is to organize these bone fragments into distinct groups that likely correspond to individual persons. To achieve this, you're considering employing a sophisticated analysis method that segments this dataset into clusters.

Your approach involves a cutting-edge, recursive clustering technique known as DivisiveCluster, specifically leveraging the power of Gaussian Mixture Models (GMMs). In this scenario, you plan to start with the entire dataset as a single, broad category and iteratively divide it into increasingly specific subgroups. To maintain a balance between detail and manageability, you decide to set parameters: each subgroup can be further split into a minimum of 1 and a maximum of 5 more specific categories, reflecting the possible variation within human bone measurements. Moreover, you limit the depth of this recursive clustering to 4 levels, ensuring the final categories remain both meaningful and analyzable within the scope of your investigative procedures.

This analytical strategy, guided by principles from both anthropology and data science, essentially translates to segmenting your dataset in a manner that reflects the unique yet overlapping variations in human bone structure, facilitating your ultimate goal of identifying and analyzing human remains in a forensic context. How would you execute this sophisticated clustering technique on your dataset, housed in a Numpy array of random values, to categorize the bone fragments effectively?
### Response:
import numpy as np
from graspologic.cluster import DivisiveCluster

# Generate random data
X = np.random.rand(100, 3)

# Create a DivisiveCluster instance
cluster = DivisiveCluster(cluster_method='gmm', min_components=1, max_components=5, max_level=4)

# Fit the model and predict labels
labels = cluster.fit_predict(X)

print(labels)
<|EOT|>
