Рубрики
Без рубрики

Artrendizado Não SuperizeDo Com k-означает

Este Artigo Trata Sobre Artrendizado Não Superizeaado, O Método de Artrendizado de Máquina SEM Precis … Теги с машинным обучением, Python.

Este Artigo Trata Sobre Artrendizado Não Superizeaado, O Método de Arrenendizado de Máquina SEM Precisar de Dados Pré-Rotulados. NO APRENDIZADO NãO SUPERISPINCIDADO USTEE UMA TÉCNICA CHAMADA Кластеризация (OU Aglomeração) Que Служить Exatamente Para Agrupar Dados Que Tenham Algumas Características Parecidas. Muitas Vezes Essas Técnicas São Usadas Justamente Para Rotouroul Dados Para Que Seja Assível Utilizá-Los Em Artrendizado SuperizedaDo. O Agrupamento Dos Dados Podem Ser Calculados de Muitos Modos. Aqui Excepho Um Deles, O Algoritmo de K-означает.

ESTE EM DOS MAIS STRPERS E Mais Rápidos Métodos de Clustering. ELE TENTA SEARAR OS DADOS EM K (UM NúMERORE ODEFINIDO) Clusters, de Acordo Com A astância de Cada Ponto Até Algo Chamado de Controide. UM Centroide é Como UM Protótipo Para Truster Cluster. Na Maioria DAS Técnicas, K Pontos Aleatórios DataSet São Escolhidos Para Serme As Conceenadas Dos CentreRyides INICIAIS. Então Cada Instância Desses Dados é Atribuída Ao Centroide Mais Próximo. NAS Demais iterações a posição dos controides é calculada Através da distancia Média Entre Todos OS Pontos Atribuídos àquele Центроид Na última iteração. O algoritmo termina quando posição dos controides não é mais modifidada Ou distancia dessa dessa mudança é menor que que que repistold redefinido.

КРИАР КЛУСТЕРЫ COM k-означает EM Python é Muito Smples Também. Vejamos o Código:

import numpy as np
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=5)
kmeans.fit(data)

MAS, COMO Escolher O Número Correto de Clusters? Республика Para Essa Pergunta é Bastante Subjeetiva, Entretanto, eustem Muitos Métodos Para Калькулярный o Melhor Número E DOIS DELES EXCHENO ABAIXO, ELOWE E средний силуэт Métodos.

Neste Método é Preciso Rodar Seu Algoritmo de Clustering Com Alguns Valores, Por Exemplo, de 1 A 10. Calcular а função де Custo, а сома дос quadrados дас distâncias internas дос кластеры, д traçá-ла-эм эм Gráfico. О Melhor número пункт quantidade де кластеры é Quando adição де гм Novo кластера não муда significativamente função де Custo. Isso geralmente acontece Нет “Cotovelo” da linha.

Análise Por Силуэт Мид о quão бьет гм Понто себе encaixa эм эм кластер. Neste Metodo гм Gráfico é feito medindo quão perto ОС Понт-де-эм кластера estão дос Понт де аутро кластера Маис PROXIMO. O Coefinee de Silhouette Quanto Próximo de +1, индика que os pontos estão muito longe dos pontos do outro cluster, e queno próximo de 0, inde que os pontos então muito perto outé até intertersccionando um outro кластер.

PARA CALKUSTO COEECCEECTE DE SILHOUTTEE É Preciso defire a distância média de dum ponto para todos os out poonos em seu кластер (A (I)) E Também Defire A a Distância Média Até Os Pontos Do Cluster Mais Próximo (B (I)) . Então, O Coefinee De Silhouette É Calculado Assim:

S (I) = (b (i) – a (i))/max (b (i), a (i))

Para Visualizar Alise Feita Com Silhouette, Vamos Olhar Пара o кластер Inteiro. Para Isso Podemos Calcular O Ball Médio Do Silhouette Pegando A Média de Todos OS Exemplos Нет данных.

Agora, Vamos Ver o K-означает E OS Métodos Para Avaliar O Número de Clusters Utilizados Em DataSet Real. ОС Dados Usado Aqui São Sobre em E-Temberes de Clients Brasileiros. Abaixo Está o Código Para Normalizar ОС Dados E CRAR OS Gráficos:

mms = MinMaxScaler()
mms.fit(costumers_dataset)
data_transformed = mms.transform(costumers_dataset)
def plot_clustering(data, labels, title=None):
    x_min, x_max = np.min(data, axis=0), np.max(data, axis=0)
    data = (data - x_min) / (x_max - x_min)
    fig = plt.figure(1, figsize=(4, 3))
    plt.figure(figsize=(6, 4))
    plt.scatter(data[:, 0], data[:, 1],
                 c=labels.astype(np.float))
    plt.xticks([])
    plt.yticks([])
    if title is not None:
        plt.title(title, size=17)
    plt.axis('off')
    plt.tight_layout(rect=[0, 0.03, 1, 0.95]) 

Agora, Vamos Tentar Usar o K-означает COM 5 кластеров:

kmeans = KMeans(n_clusters=5)
kmeans.fit(data_transformed)
labels = kmeans.labels_
plot_clustering(data_transformed, labels)
plt.show()

Então, Essa separação parece гм pouco estranha, não? Temos 5 Clusters Mas Temos Muita Ocorrencia de InterseCções. Vamos Avaliar O DataSet Com O Método Локоть:

Sum_of_squared_distances = []
K = range(1,15)
for k in K:
    km = KMeans(n_clusters=k)
    km = km.fit(data_transformed)
    Sum_of_squared_distances.append(km.inertia_)
plt.plot(K, Sum_of_squared_distances, 'bx-')
plt.xlabel('k')
plt.ylabel('Sum_of_squared_distances')
plt.title('Elbow Method For Optimal k')
plt.show()

O Gráfico Mostra Que Esse DataSet Não Tossui Exatamente UM “Cotovelo”. Talvez o Número Correto de Clusters Esteja Entre 4 E 6. MAS TALVEZ ESTE DataSet que Construímos Não Ser Ser Southado Com Essa Configuração … Vamos Vero Coefinee De Silhouette Sobre Alguns Valores Para Ackidade de Clusters.

range_n_clusters = [2, 3, 4, 5, 6]
for n_clusters in range_n_clusters:
    # Create a subplot with 1 row and 2 columns
    fig, (ax1, ax2) = plt.subplots(1, 2)
    fig.set_size_inches(18, 7)
    # The 1st subplot is the silhouette plot
    # The silhouette coefficient can range from -1, 1 but in this example all
    # lie within [-0.1, 1]
    ax1.set_xlim([-0.1, 1])
    # The (n_clusters+1)*10 is for inserting blank space between silhouette
    # plots of individual clusters, to demarcate them clearly.
    ax1.set_ylim([0, len(data_transformed) + (n_clusters + 1) * 10])
    # Initialize the clusterer with n_clusters value and a random generator
    # seed of 10 for reproducibility.
    clusterer = KMeans(n_clusters=n_clusters, random_state=10)
    cluster_labels = clusterer.fit_predict(data_transformed)
# The silhouette_score gives the average value for all the samples.
    # This gives a perspective into the density and separation of the formed
    # clusters
    silhouette_avg = silhouette_score(data_transformed, cluster_labels)
    print("Para n_clusters =", n_clusters,
          "O score_silhouette médio é :", silhouette_avg)
    # Compute the silhouette scores for each sample
    sample_silhouette_values = silhouette_samples(data_transformed, cluster_labels)
    y_lower = 10
    for i in range(n_clusters):
        # Aggregate the silhouette scores for samples belonging to
        # cluster i, and sort them
        ith_cluster_silhouette_values = \
            sample_silhouette_values[cluster_labels == i]
        ith_cluster_silhouette_values.sort()
        size_cluster_i = ith_cluster_silhouette_values.shape[0]
        y_upper = y_lower + size_cluster_i
        color = cm.nipy_spectral(float(i) / n_clusters)
        ax1.fill_betweenx(np.arange(y_lower, y_upper),
                          0, ith_cluster_silhouette_values,
                          facecolor=color, edgecolor=color,       alpha=0.7)
        # Label the silhouette plots with their cluster numbers at the middle
        ax1.text(-0.05, y_lower + 0.5 * size_cluster_i, str(i))
        # Compute the new y_lower for next plot
        y_lower = y_upper + 10  # 10 for the 0 samples
    ax1.set_title("The silhouette plot for the various clusters.")
    ax1.set_xlabel("The silhouette coefficient values")
    ax1.set_ylabel("Cluster label")
    # The vertical line for average silhouette score of all the values
    ax1.axvline(x=silhouette_avg, color="red", linestyle="--")
    ax1.set_yticks([])  # Clear the yaxis labels / ticks
    ax1.set_xticks([-0.1, 0, 0.2, 0.4, 0.6, 0.8, 1])
    # 2nd Plot showing the actual clusters formed
    colors = cm.nipy_spectral(cluster_labels.astype(float) / n_clusters)
    ax2.scatter(data_transformed[:, 0], data_transformed[:, 1], marker='.', s=30, lw=0, alpha=0.7,
                c=colors, edgecolor='k')
    # Labeling the clusters
    centers = clusterer.cluster_centers_
    # Draw white circles at cluster centers
    ax2.scatter(centers[:, 0], centers[:, 1], marker='o',
                c="white", alpha=1, s=200, edgecolor='k')
    for i, c in enumerate(centers):
        ax2.scatter(c[0], c[1], marker='$%d$' % i, alpha=1,
                    s=50, edgecolor='k')
    ax2.set_title("The visualization of the clustered data.")
    ax2.set_xlabel("Feature space for the 1st feature")
    ax2.set_ylabel("Feature space for the 2nd feature")
    plt.suptitle(("Silhouette analysis for KMeans clustering on sample data "
                  "with n_clusters = %d" % n_clusters),
                 fontsize=14, fontweight='bold')
plt.show()

Abaixo Temos Reposta Desse Algoritmo. OS Gráficos Estão Selectos POR quantidade de Clusters Utilizados. ОС Gráficos da esquerda nos masteram o Оценка da Análise Com Silhouette E Da Direita UMA Visualização Dos Clusters.

Para o balce_silhouette médio é: 0.24604273339845253 Para o ball_silhouette médio é: 0.20670607133321856 Para O Ball_silhouette Médio é: 0.188444914764597 Para O Ball_silhouette Médio é: 0.19090629903451375 Para O Ball_silhouette Médio é: 0.18047082769472864

COMO PODEM VER, ОС Коуэфэфитес де Силуэт NãO NOS MOSTRARAM NúMEROS MUITO BONS SOBRE NENHUM DOS CENARIOS APRESENTADOS. O Мельхор Квер Подемос Fazer Aqui É Remontar o DataSet Com Artras Informações. Удаление Talvez Algumas DAS Informações Poore Melehorar OS RestuteDos.

O Artrendizado NãO SuperizeAdo Usando Análise COM Cluster Pode Ser Muito Fácil de Produzir e Ao Mesmo Tempo Muito útil E Geate Para Muitas áreas Do Conhecimento, POR Exemplo, Quais Tipos de Cliente UMA EMPRESA TEM, PARA TER CONHECIMENTO SOBRE QUAL O JEITO CERTO PARA FAZER PROPAGANDAS OU PARA CRAIR PRODUTOS MELHORS PARA CADA TEPO DE CLIELLET, ALÉM DIPO, OUTRO EXEMPLO E Entender Sobre Algumas Espécies Na Biologia, O Pesquisador Поде Agrupar Animais, Células, OU Qualkquer Outra Coisa de Acordo Com Suas Caracteristicas.

ЭТО ГАЕТЕНТ ЛЕМБРАР КУП К-СМОТРЕТЬ NãAO é única Técnica de Clustering. Existem Outras métodos Muito úteis Como о Hierárquico, дие também é Muito Simples де Aprender, НУ Expectation Максимизация, дие é Muito utilizado Pelos Cientístas де Dados.

Вывода ОС códigos completos usados пункт, как Experiencias Nesse ARTiGO estão Несс repositório сделать Github.

Методы к определению оптимального количества кластеров Как определить оптимальное количество кластеров для K-средних Участок силуэт анализ Силуэт анализ Dataset USADO Нет artigo

Оригинал: “https://dev.to/giselyalves13/aprendizado-nao-supervisionado-com-k-means-106f”