2
respostas

Erro ao rodar o código

Olá. Ao rodar exatamente como na aula, recebo o seguinte código de erro:

ValueError: Found input variables with inconsistent numbers of samples: [2984, 8950]

Poderiam me ajudar?

Segue o código:

set1, set2, set3 = np.array_split(values, 3) s1, dbs1, calinski1 = clustering_algorithm(5, set1) s2, dbs2, calinski2 = clustering_algorithm(5, set2) s3, dbs3, calinski3 = clustering_algorithm(5, set3) print(s1, dbs1, calinski1) print(s2, dbs2, calinski2) print(s3, dbs3, calinski3)

2 respostas

Olá. Eu consegui achar o problema e acredito que seria bom corrigir no material.

No vídeo a instrutora coloca o código da seguinte maneira:

def clustering_algorithm (clusters, dataset):
    kmeans = KMeans(n_clusters = clusters, n_init = 10, max_iter = 300)
    y_pred = kmeans.fit_predict(dataset)
    s = metrics.silhouette_score(dataset, labels, metric = 'euclidean')
    dbs = metrics.davies_bouldin_score(dataset, labels)
    calinski = metrics.calinski_harabasz_score(dataset, labels)
    return s, dbs, calinski

Sem definir a variável labels novamente. Então a função fica usando o labels definido em outra parte da aula e portanto o labels fica fixo com 8950 componentes. Já ao olhar a descrição, o código da função está correto. Da seguinte forma:

def clustering_algorithm(n_clusters, dataset):
    kmeans = KMeans(n_clusters=n_clusters, n_init=10, max_iter=300)
    labels = kmeans.fit_predict(dataset)
    s = metrics.silhouette_score(dataset, labels, metric='euclidean')
    dbs = metrics.davies_bouldin_score(dataset, labels)
    calinski = metrics.calinski_harabasz_score(dataset, labels)
    return s, dbs, calinski

Mais uma correção feita na transcrição e não citada no vídeo> Por favor se atentem para atualizar os vídeos também.

Obrigada!

Oi, Claudia! Tudo bem com você?

De fato é uma incoerência que pode gerar um erro bem chato no código, então muito obrigada pelo seu alerta aqui no fórum.

Vou levar a demanda de ajuste para o time de conteúdo e logo será feito alguma correção quanto a isso.

Bons estudos!