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

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

VPS Starter Arubacloud
0 głosów
203 wizyt
pytanie zadane 27 maja 2023 w Python przez wolfee_21 Nowicjusz (170 p.)

Witam, potrzebuję pomocy, 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'"

Po szukaniu w internecie znalazłam informację, że jest to związane z tym, że od wersji 3.9 Pythona zamiast 

from collections import MutableMapping

powinno się pisać 

from collections.abc import MutableMapping

więc zgaduję, że na komputerach na studiach jest po prostu starsza wersja Pythona, ja używam Spydera z Pythonem 3.10.

Gdyby zależało to tylko od dopisania tego, to bym sobie poradziła, niestety program, który mam z zajęć nie odwołuje się do tej biblioteki. 

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

komentarz 27 maja 2023 przez Wiciorny Ekspert (269,120 p.)

1 odpowiedź

+1 głos
odpowiedź 27 maja 2023 przez Wiciorny Ekspert (269,120 p.)

A z racji przeniesienia pakietu dodanie importu : 
Upewnij się, że używasz Pythona w wersji 3.10 lub nowszej, ponieważ typ MutableSet został przeniesiony do collections.abc

from collections.abc import MutableSet

nie zalatwia sprawy? Bo nie rozumiem koncówki wypwoiedzy, że gdyby to tylko od tego zależało. 
Upewnij się w takim razie o WERSJI PYTHONA, bo to oznacza, że w  twoja kolekcja jestt w innym pakiecie. 

sprawdz: 

from typing import MutableSet

dla wcześniejszych wersji. 
Sprawdz tez czy jesli masz 3.10 pyhtona, to czy biblioteka taka istnieje i jest kompatybilna
 

komentarz 28 maja 2023 przez wolfee_21 Nowicjusz (170 p.)

Mam pythona w wersji 3.10

Bardziej nie rozumiem dlaczego pojawia mi się taki błąd:

from collections import OrderedDict, MutableMapping as DictMixin

ImportError: cannot import name 'MutableMapping' from 'collections' (C:\Users\Ja\anaconda3\lib\collections\__init__.py)

skoro w kodzie nie ma czegoś takiego jak:

from collections import MutableMapping

i w sumie też zastanawia mnie to dlaczego raz w błędzie jest MutableMapping a raz MutableSet

komentarz 28 maja 2023 przez wolfee_21 Nowicjusz (170 p.)

@Wiciorny, Nie wiem jak to naprawić, a potrzebuje żeby program zadziałał, żeby napisać cały projekt i we wtorek przedstawić.

Podobne pytania

0 głosów
1 odpowiedź 212 wizyt
0 głosów
1 odpowiedź 500 wizyt
0 głosów
1 odpowiedź 432 wizyt

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...