Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Erro no código K-means

Não sei o que estou escrevendo errado no codigo abaixo. Alguém pode me dar um help?!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

6 respostas

Olá, Natalia, tudo belezinha?

Pelo print, aparentemente está tudo certo com seu código, mas para que eu possa identificar o erro melhor, você poderia mandar um print do erro completo ou colocar o erro aqui, para eu entender melhor a situação?

Analisando parte do print, pode ser que necessite uma atualização do threadpoolctl, caso seja isso, você pode resolver passando o seguinte comando no terminal:

conda install threadpoolctl

Esse pacote pode estar desatualizado.

De qualquer forma fico no aguardo do erro completo, mas se tiver alguma dúvida, estou por aqui!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá Paulo, tudo certo!

Eu fiz a atualização como sugerido mas o erro persiste!

Initialization complete

AttributeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_13148/2363751706.py in 1 kmeans_pca = KMeans(n_clusters=5, verbose=True, random_state=SEED) 2 ----> 3 kmeans_pca.fit(projection) 4 5 dados_generos['cluste_pca'] = kmeans_pca.predict(projection)

~\anaconda3\lib\site-packages\sklearn\cluster_kmeans.py in fit(self, X, y, sample_weight) 1413 1414 # run a k-means once -> 1415 labels, inertia, centers, n_iter_ = kmeans_single( 1416 X, 1417 sample_weight,

~\anaconda3\lib\site-packages\sklearn\cluster_kmeans.py in kmeanssingle_lloyd(X, sample_weight, centers_init, max_iter, verbose, x_squared_norms, tol, n_threads) 644 # Threadpoolctl context to limit the number of threads in second level of 645 # nested parallelism (i.e. BLAS) to avoid oversubsciption. --> 646 with threadpool_limits(limits=1, user_api="blas"): 647 for i in range(max_iter): 648 lloyd_iter(

~\anaconda3\lib\site-packages\sklearn\utils\fixes.py in threadpool_limits(limits, user_api) 149 return controller.limit(limits=limits, user_api=user_api) 150 else: --> 151 return threadpoolctl.threadpool_limits(limits=limits, user_api=user_api) 152 153

~\anaconda3\lib\site-packages\threadpoolctl.py in init(self, limits, user_api) 169 self.checkparams(limits, user_api) 170 --> 171 self.originalinfo = self.setthreadpool_limits() 172 173 def enter(self):

~\anaconda3\lib\site-packages\threadpoolctl.py in setthreadpool_limits(self) 266 return None 267 --> 268 modules = ThreadpoolInfo(prefixes=self.prefixes, 269 user_api=self.userapi) 270 for module in modules:

~\anaconda3\lib\site-packages\threadpoolctl.py in init(self, user_api, prefixes, modules) 338 339 self.modules = [] --> 340 self.loadmodules() 341 self.warnif_incompatible_openmp() 342 else:

~\anaconda3\lib\site-packages\threadpoolctl.py in loadmodules(self) 371 self.findmodules_with_dyld() 372 elif sys.platform == "win32": --> 373 self.findmodules_with_enum_process_module_ex() 374 else: 375 self.findmodules_with_dl_iterate_phdr()

~\anaconda3\lib\site-packages\threadpoolctl.py in findmodules_with_enum_process_module_ex(self) 483 484 # Store the module if it is supported and selected --> 485 self.makemodule_from_path(filepath) 486 finally: 487 kernel_32.CloseHandle(h_process)

~\anaconda3\lib\site-packages\threadpoolctl.py in makemodule_from_path(self, filepath) 513 if prefix in self.prefixes or user_api in self.user_api: 514 module_class = globals()[module_class] --> 515 module = module_class(filepath, prefix, user_api, internal_api) 516 self.modules.append(module) 517

~\anaconda3\lib\site-packages\threadpoolctl.py in init(self, filepath, prefix, user_api, internal_api) 604 self.internal_api = internal_api 605 self.dynlib = ctypes.CDLL(filepath, mode=RTLD_NOLOAD) --> 606 self.version = self.get_version() 607 self.num_threads = self.get_num_threads() 608 self.getextra_info()

~\anaconda3\lib\site-packages\threadpoolctl.py in get_version(self) 644 lambda: None) 645 get_config.restype = ctypes.c_char_p --> 646 config = get_config().split() 647 if config[0] == b"OpenBLAS": 648 return config[1].decode("utf-8")

AttributeError: 'NoneType' object has no attribute 'split'

Olá, Natalia!

Com a atualização do threadpoolctl , esperava ter funcionado. Você pode verificar as versões dos pacotes desse ambiente anaconda e enviar aqui?

Podemos fazer isso executando o seguinte comando no seu notebook:

!conda list

Ou se preferir executar o comando abaixo, para ver somente os pacotes usados no notebook:

import threadpoolctl
import numpy
import sklearn
print('\n'.join(f'{m.__name__}=={m.__version__}' for m in globals().values() if getattr(m, '__version__', None)))

A ideia que o threadpoolctl esteja na versão 3.1.0 e que o numpy e o sklearn também esteja atualizado

Podemos ter atualizado um outro ambiente ou ter deixado algo passar.

Claro Paulo, segue as versões dos pacotes no ambiente anaconda. O único que não está atualizado é threadpoolctl, eu faço o pip install mas não atualiza a versão.

pandas==1.5.1 seaborn==0.12.1 numpy==1.23.4 threadpoolctl==2.2.0 sklearn==1.1.1

solução!

Beleza então, aparentemente mesmo atualizando no terminal o threadpoolctl não ficou na ultima versão. Então vamos fazer isso acontecer pelo anaconda beleza?

Vamos lá!

1- Abra o terminal e passe o seguinte comando:

conda activate {nome-do-ambiente}

Caso você não saiba o nome do ambiente, você pode abrir o anaconda e ver o nome do mesmo. Ou se preferir, você pode abrir o anaconda e abrir o terminal com já ambiente ativado, desta forma

Captura de tela do ambiente anaconda, no canto esquerdo temos as opções de ambientes, base e fórum, onde está selecionado o "play" do ambiente base em vermelho, a direita as opções do menu, onde esta selecionado e vermelho a opção, open terminal

2- Após isso o terminal do seu ambiente irá abrir, então vamos atualizar o threadpoolctl para versão atual, passando o seguinte comando:

conda install -c conda-forge threadpoolctl

Agora esperamos que o threadpoolctl seja atualizado para versão 3.1.0.

Ao finalizar reinicie o kernel do seu notebook e execute novamente, caso o erro persistir, estou por aqui!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Paulo o pacote atualizou e o código funcionou! Mto obrigada pela ajuda!