<jupyter_start><jupyter_text>Wine activities*normalização, metrica e algoritmos**Author: <NAME>**link->https://archive.ics.uci.edu/ml/datasets/wine em conclusão, á melhor* tecnica é a AgglomerativeClustering* que melhor mostra que são necessarias *3 clusters* de *metrica calinski_harabasz_score*, como mostra no grafico<jupyter_code>import pandas as pd
import numpy as np
import matplotlib.pyplot as plt # graficos

from sklearn import datasets

%matplotlib inline

# pegando os dados da tabela de vinhos
vinhos = datasets.load_wine()
# lendo os dados e as separando em dados e nome de cada coluna
df = pd.DataFrame(vinhos['data'], columns=vinhos['feature_names'])  
# renderizar com as seguintes dimenções altura e largura
df.hist( figsize=(15,10) );
# tecnica de K-Means, com normalização e com metrica silhouette_score
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.metrics import silhouette_score

X = pd.DataFrame(datasets.load_wine()['data'])
scaler = MinMaxScaler()
X_norm = scaler.fit_transform(X)

k_range = range(2, 11) 
sil_norm = []
 
for k in k_range:
     
  model = KMeans( n_clusters=k )
  model = model.fit(X_norm)
  sil_norm.append( silhouette_score(X_norm, model.labels_) )
   
f, (ax2) = plt.subplots(1, figsize=(10, 6))

ax2.plot(k_range, sil_norm)
ax2.set_title('K-Means Normalizado com metrica silhouette_score');
ax2.set_ylim(0,1)
# tecnica de K-Means com normalização com metrica calinski_harabasz_score
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.metrics import calinski_harabasz_score

X = pd.DataFrame(datasets.load_wine()['data'])
scaler = MinMaxScaler()
X_norm = scaler.fit_transform(X)

maiorValor = 0
cont = 0
k_range = range(2, 11) 
ch_norm = []

for k in k_range:
  
  cont = cont+1 
  model = KMeans(n_clusters=k)
  model = model.fit(X_norm)
  ch_norm.append(calinski_harabasz_score(X_norm, model.labels_))
     
# terei que normalizar os dados dele para que eu possa realizar á comparação de metricas do grafico abaixo    
# transformação de dados em array    
a = np.asarray(ch_norm)
# dividindo o total de resultados pelo valor maximo
resultado = a/np.max(a)  

f, (ax2) = plt.subplots(1, figsize=(10, 6))

ax2.plot(k_range, resultado)
ax2.set_title('K-Means Normalizado com metrica calinski_harabasz_score'); 
# tecnica de K-Means com normalização com metrica calinski_harabasz_score
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.metrics import calinski_harabasz_score
from sklearn.metrics import silhouette_score

# com a normalização dos dados de ch_norm, ai consigo fazer a comparação dos dados com a metrica sil_norm
#pos antes ele tinha valores muito altos para serem considerados, mais dessa forma fica mais facil de visualizar
f, (ax2) = plt.subplots(1, figsize=(10, 6) )
 
ax2.plot(k_range, resultado, label='ch_norm')
ax2.plot(k_range, sil_norm, label='sil_norm')
ax2.set_title('ch_norm X sil_norm');
ax2.legend()

# tecnica de aglutinação com normalização com metrica calinski_harabasz_score
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.metrics import calinski_harabasz_score

X = pd.DataFrame(datasets.load_wine()['data'])
scaler = MinMaxScaler()
X_norm = scaler.fit_transform(X)

k_range = range(2, 11) 
ch_norm = []
ch_norm_kmeans = []

for k in k_range:
   
  model = AgglomerativeClustering(n_clusters=k, linkage='ward')
  model = model.fit(X_norm)
  ch_norm.append(calinski_harabasz_score(X_norm, model.labels_))
  
  
f, ( ax2) = plt.subplots(1, figsize=(10, 6))

ax2.plot(k_range, ch_norm, label='Agglomerative') 
ax2.set_title('Normalizado Agglomerative metrica calinski_harabasz_score')
ax2.legend()
# tecnica de aglutinação com normalização com metrica calinski_harabasz_score
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.metrics import calinski_harabasz_score

f, ( ax2) = plt.subplots(1, figsize=(10, 6))

ax2.plot(k_range, ch_norm, label='Agglomerative')
ax2.plot(k_range, ch_norm_kmeans, label='Kmeans')
ax2.set_title('Agglomerative X k-means Normalizado uzando metrica calinski_harabasz_score')
ax2.legend()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09209621993127148, 'fraction_numerical': 0.013745704467353952, 'mean_word_length': 5.9411764705882355, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 7, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '115059', 'license': 'MIT', 'n_tokens_mistral': 1638, 'n_tokens_neox': 1581, 'n_words': 405, 'path': 'Kmean-Wines.ipynb', 'repo_name': 'iamjandson/workondata', 'size': '4373'}