Menu
CoddyTech

Centros em unidades reais

Parte da seção Aprendizado não supervisionado do Journey de Machine Learning da Coddy. Lição 12 de 51.

O centro de um cluster é seu membro típico. O K-means encontrou os centros do parque nos dados escalados, então eles são expressos como escores z. Os mesmos centros, antes e depois:

Dois gráficos dos visitantes do parque temático com os 3 centros dos clusters marcados com cruzes. À esquerda, eixos escalados: os centros ficam em números como 0.8, 1.3. À direita, unidades reais: os mesmos centros em 6.8 horas e 13.9 atrações, 6.0 e 6.2, 2.4 e 3.0

Mantenha o escalonador: ele memoriza a média e a dispersão de cada característica, e inverse_transform desfaz o escalonamento:

scaler = StandardScaler()
km.fit(scaler.fit_transform(park))
centers = scaler.inverse_transform(km.cluster_centers_)
print(centers.round(1))

Isso imprime horas, passeios e idade, uma linha por cluster:

[[ 6.   6.2 38.4]
 [ 2.4  3.  45.8]
 [ 6.8 13.9 20.7]]

O centro do cluster 2 era 0.8 e 1.3. Agora ele indica 6.8 horas e 13.9 viagens: o mesmo ponto, em unidades que uma pessoa pode usar.

challenge icon

Desafio

Médio

Um fabricante de luvas transforma agrupamentos de mãos em 4 tamanhos de luva. O código inicial dimensiona 150 mãos, agrupa-as e lê a mão de um cliente em new_hand.

  1. Encontre o agrupamento ao qual a nova mão pertence: primeiro, dimensione-a.
  2. Converta os centros de volta para cm.
  3. Imprima o centro desse agrupamento, com 1 casa decimal, como abaixo.

Para outro fabricante de luvas:

Your glove size: hand 20.3 cm, palm 8.9 cm, finger 8.6 cm

Experimente você mesmo

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 150 mãos medidas por um fabricante de luvas, em cm: comprimento da mão, largura da palma, dedo médio
hands = pd.read_csv("hands.csv")
scaler = StandardScaler()
scaled = scaler.fit_transform(hands)
# Um grupo para cada tamanho de luva
km = KMeans(n_clusters=4, n_init=10, random_state=0)
km.fit(scaled)

# A mão de um novo cliente, em uma tabela de uma linha com as mesmas colunas
new_hand = pd.DataFrame({
    "hand_cm": [float(input())],
    "palm_cm": [float(input())],
    "finger_cm": [float(input())],
})

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado não supervisionado

Pratique por conta própria: Compilador de Python online