• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python - problem z importem biblioteki collections, pomimo jej braku

Object Storage Arubacloud
0 głosów
219 wizyt
pytanie zadane 28 maja 2023 w Python przez wolfee_21 Nowicjusz (170 p.)

Witam

Mam kod z zajęć ze Sztucznej Inteligencji. Na zajęciach na komputerach z uczelni wszystko działało sprawnie. A teraz na moim prywatnym nie chce działać. Wyskakuje mi błąd:

"ImportError: cannot import name 'MutableSet' from 'collections'"

lub

"ImportError: cannot import name 'MutableMapping' from 'collections'"

Szukając w internecie rozwiązania dowiedziałam się, ze powinnam zmienić import collections na import collections.abc.

Problemem jest to, że w nie importuje tej biblioteki w kodzie

import numpy as np
from neupy import algorithms
import hickle as hkl
from sklearn.model_selection import StratifiedKFold
 
x,y_t,x_norm,x_n_s,y_t_s = hkl.load('iris.hkl')
y_t -= 1
x=x.T
y_t = np.squeeze(y_t)
lvqnet = algorithms.LVQ(n_inputs=x.shape[0], n_classes=np.unique(y_t).shape[0],step=0.001)
#lvqnet = algorithms.LVQ2(n_inputs=x.shape[0], n_classes=np.unique(y_t).shape[0],step=0.001)
# lvqnet = algorithms.LVQ21(n_inputs=x.shape[0], n_classes=np.unique(y_t).shape[0],step=0.001)
# http://neupy.com/modules/generated/neupy.algorithms.LVQ3.html
# lvqnet = algorithms.LVQ3(n_inputs=x.shape[0], n_classes=np.unique(y_t).shape[0],step=0.001)
lvqnet.train(x, y_t, epochs=100)
y=lvqnet.predict(x)
e = y_t - y
PK = (1 - sum(abs(e)>=0.5)/e.shape[0] ) * 100
print("\nPK = %5d" % PK)
 
data = x
target = y_t
 
CVN = 10
skfold = StratifiedKFold(n_splits=CVN)
PK_vec = np.zeros(CVN)
 
for i, (train, test) in enumerate(skfold.split(data, target), start=0):
    x_train, x_test = data[train], data[test]
    y_train, y_test = target[train], target[test]
    # print(i,train,test)
    lvqnet = algorithms.LVQ(n_inputs=x_train.shape[1], n_classes=np.unique(y_train).shape[0],step=0.001)
    #lvqnet = algorithms.LVQ2(n_inputs=x.shape[1], n_classes=np.unique(y_t).shape[0],step=0.001)
    # lvqnet = algorithms.LVQ21(n_inputs=x.shape[1], n_classes=np.unique(y_t).shape[0],step=0.001)
    # http://neupy.com/modules/generated/neupy.algorithms.LVQ3.html
    # lvqnet = algorithms.LVQ3(n_inputs=x.shape[1], n_classes=np.unique(y_t).shape[0],step=0.001)
    lvqnet.train(x_train, y_train, epochs=100)
    result = lvqnet.predict(x_test)
 
    n_test_samples = test.size
    PK_vec[i] = np.sum(result == y_test) / n_test_samples
     
    print("Test #{:<2}: PK_vec {} test_size {}".format(i, PK_vec[i], n_test_samples))
 
PK = np.mean(PK_vec)
print("PK {}".format(PK))

 

Z góry dziękuję za pomoc.

1 odpowiedź

+1 głos
odpowiedź 28 maja 2023 przez adrian17 Ekspert (344,860 p.)

Ten kod jest po prostu przestarzały.

Nawet w tym co wrzuciłaś:

from neupy import algorithms

Na githubie biblioteki numpy widać że nie była aktualizowana od lat, plus na samej górze jest napisane:

The library is no longer being actively maintained, please consider this before using it for your project

W każdym razie, domyślam się że któraś z pośrednich zależności jednej z tych starych bibliotek importuje MutableSet "po staremu". Musisz spojrzeć w pełny traceback żeby zobaczyć która. Ale łatwo w zależnej bibliotece tego nie naprawisz.

Jeśli koniecznie musisz używać ten stary kod, to jedyną sensowną opcją jest zainstalowanie starego Pythona. (plus, poinformuj profesora że ten kod jest na śmietnik :/ )

komentarz 28 maja 2023 przez wolfee_21 Nowicjusz (170 p.)
A jak i czy w ogóle można zmienić wersję pythona tak, żebym w Spyderze miała np. Python 3.8?

Podobne pytania

0 głosów
0 odpowiedzi 285 wizyt
pytanie zadane 1 lipca 2019 w Python przez Ventre90 Obywatel (1,170 p.)
0 głosów
1 odpowiedź 211 wizyt
0 głosów
0 odpowiedzi 213 wizyt
pytanie zadane 31 lipca 2021 w Python przez HGH Początkujący (430 p.)

92,536 zapytań

141,377 odpowiedzi

319,454 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...