
# Dados completos sobre valores de p, suas colunas e posições
dados = [
(2, 1, 1), (3, 1, 2), (5, 2, 1), (7, 3, 1), (11, 4, 1), (13, 1, 6), (17, 2, 2),
(19, 3, 2), (31, 3, 3), (61, 1, 7), (89, 2, 8), (107, 4, 9), (127, 3, 11),
(521, 2, 44), (607, 3, 51), (1279, 3, 107), (2203, 3, 184), (2281, 1, 191),
(3217, 1, 269), (4253, 2, 355), (4423, 3, 369), (9689, 2, 808), (9941, 2, 829),
(11213, 2, 935), (19937, 2, 1662), (21701, 2, 1809), (23209, 1, 1935), (44497, 1,
3709),
(86243, 4, 7187), (110503, 3, 9209), (132049, 1, 11005), (216091, 3, 18008),
(756839, 4, 63070),
(859433, 2, 71620), (1398269, 2, 116523), (2976221, 2, 248019), (3021377, 2,
251782),
(6972593, 2, 581050), (13466917, 1, 1122244), (20996011, 3, 1749668), (24036583,
3, 2003049),
(25964951, 4, 2163746), (30402457, 1, 2533539), (32582657, 2, 2715222),
(37156667, 4, 3096389),
(42643801, 1, 3553651), (43112609, 2, 3592718), (57885161, 2, 4823764),
(74207281, 1, 6183941),
(77232917, 2, 6436077), (82589933, 2, 6882495)
]
# Convertendo os dados em uma matriz numpy para clustering
data = np.array([(p, col, pos) for p, col, pos in dados])
# Aplicando K-Means aos dados
kmeans = KMeans(n_clusters=3, random_state=0).fit(data)
clusters = kmeans.labels_
# Visualização dos Clusters
plt.figure(figsize=(12, 8))
scatter = plt.scatter(data[:, 0], np.zeros_like(data[:, 0]), c=clusters, cmap='viridis', s=100,
marker='o')
plt.xlabel('Valores de p')
plt.xticks(rotation=90)
plt.title('Clusterização dos Valores de p com Colunas e Posições')
plt.yticks([])
plt.colorbar(scatter, label='Cluster ID')
plt.show()
# Imprimir os rótulos dos clusters para cada valor de p com suas colunas e posições
for idx, (p, col, pos) in enumerate(dados):
print(f"Valor de p: {p}, Coluna: {col}, Posição: {pos}, Cluster: {clusters[idx]}")
### Descrição do Código:
- Preparação dos Dados: Todos os dados fornecidos são formatados em uma matriz onde
cada linha contém um valor de \( p \), a coluna e a posição associadas.
- Clusterização: Utilizo o K-Means para agrup