Jak używać nauki scikit do uczenia modelu na dużych danych CSV (~ 75MB) bez problemów z pamięcią?Scikit i pandy: dopasowywanie dużych danych
Używam notebooka IPython jako środowiska programistycznego, a pandy + pakiety sklearn do analizowania danych z samouczka kaggle's digital reader.
Dane są dostępne na webpage, odwołują się do my code, a tu jest error message:
KNeighborsClassifier
służy do przewidywania.
Problem:
"MemoryError" występuje podczas ładowania dużego zestawu danych przy użyciu read_csv funkcję. Aby tymczasowo ominąć ten problem, muszę zrestartować jądro , które następnie funkcja read_csv pomyślnie wczytuje plik, ale ten sam błąd występuje, gdy ponownie uruchomię tę samą komórkę.
Gdy funkcja read_csv
ładuje plik z powodzeniem, po wprowadzeniu zmian do dataframe
mogę przekazać cechy i etykiet, aby pasowały do KNeighborsClassifier za function(). W tym momencie występuje podobny błąd pamięci.
Próbowałem następujące:
iterację pliku CSV w kawałkach, i dopasować odpowiednio dane, ale problemem jest to, że model prognostyczny jest nadpisywany za każdym razem na fragmencie danych.
Co myślisz, że mogę zrobić, aby z powodzeniem ćwiczyć mój model bez problemów z pamięcią?
Twój kod + dane działa dobrze na moim laptopie. Wymaga około 1,2 GB pamięci. Ile pamięci ma twój system? – Sicco
Gotowy do pracy za pomocą loadtxt. Nawet bez pojawienia się błędu pamięci, przetwarzanie tylko ~ 75mb danych na algorytmie zajmuje ponad 1GB pamięci RAM ... Nie jestem pewien, czy robię coś złego w moim kodzie. (http://pastie.org/4354911) (notatnik ipython). Jeśli to tylko algorytm, który zajmuje tak dużo czasu, w jaki sposób ładujesz gigabajty danych na algorytmie bez konieczności tworzenia takiego modelu? –
Można użyć algorytmu, który można wyszkolić przyrostowo, przetwarzając w ten sposób tylko (małe) części danych naraz. Estymator w nauce scikit może to zrobić, jeśli implementuje metodę 'partial_fit'. – Sicco