<jupyter_start><jupyter_text>aprendizado nao supervisionado filme  utilizando pandas<jupyter_code>pip install seaborn
import pandas as pd 
url_filmes ='/content/movies.csv';
filmes = pd.read_csv(url_filmes) 

#fazendo a mudança das coluna pa pr

filmes.columns = ['filme_id','titulo','generos']

filmes.head(5)

# pegando coluna expesificas e retornando um nam
generos = filmes.generos.str.get_dummies()

#mandando o data frame concatenar os filmes e gereros
#para manda o panda concatenar um do lado do outro 
dados_dos_filmes = pd.concat([filmes,generos], axis=1)
#importando sklearn para prepocessamento
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# ele vai aprender os gereros e vai transfroma eles
generos_escalados = scaler.fit_transform(generos)

generos_escalados
#importanod o KMeans
from sklearn.cluster import KMeans

modelo = KMeans(n_clusters = 3)

#mandando o modelo agrupar
modelo.fit(generos_escalados)

print(f'Grupo {modelo.labels_}')
print(generos.columns)
print(modelo.cluster_centers_)

# para trasforma linha em coluna 

#TSNE 
#augoritmo para redução de dados 
from sklearn.manifold import TSNE

tsne = TSNE()
# comverteu para 2 dimenção
visualizacao = tsne.fit_transform(generos_escalados)
visualizacao

#bibioteca de grafico seaborn
import seaborn as sns

sns.set(rc={'figure.figsize': (13, 13)})

sns.scatterplot(x=visualizacao[:, 0],
                y=visualizacao[:,1],
                hue=modelo.labels_,
                palette=sns.color_palette('Set1', 3))
# pasando os 20 cluster no camis 

#importanod o KMeans
from sklearn.cluster import KMeans

modelo = KMeans(n_clusters = 20)

#mandando o modelo agrupar
modelo.fit(generos_escalados)

grupos = pd.DataFrame(modelo.cluster_centers_, columns=generos.columns)

grupos.transpose().plot.bar(subplots=True,
                            figsize=(25,50),
                            sharex=False,
                            rot=0)
grupo = 2

filtro = modelo.labels_ == grupo
dados_dos_filmes[filtro].sample(10)
def Kmeans(numero_de_clusters, generos):
  modelo = KMeans(n_clusters=numero_de_clusters)
  modelo.fit(generos)
  return [numero_de_clusters, modelo.inertia_]
Kmeans(20, generos_escalados)
resultado = [Kmeans(numero_de_grupos, generos_escalados) for numero_de_grupos in range(1,41)]
resultado

resultado = pd.DataFrame(resultado,
             columns=['grupos','inertia'])

resultado.inertia.plot(xticks=resultado.grupos)
modelo = KMeans(n_clusters=17)
modelo.fit(generos_escalados)

grupos = pd.DataFrame(modelo.cluster_centers_, columns=generos.columns)

grupos.transpose().plot.bar(subplots=True,
                            figsize=(25,50),
                            sharex=False,
                            rot=0)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09487734487734488, 'fraction_numerical': 0.012987012987012988, 'mean_word_length': 4.06946983546618, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, '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': '648672', 'license': 'Apache-2.0', 'n_tokens_mistral': 1056, 'n_tokens_neox': 1017, 'n_words': 206, 'path': '20_cluster_no_camis_.ipynb', 'repo_name': 'gabrielxbox/projeto-com-python', 'size': '2772'}