Làm cách nào để sử dụng tính năng tìm hiểu để đào tạo mô hình trên dữ liệu csv lớn (~ 75MB) mà không gặp sự cố về bộ nhớ?Scikit và Pandas: Lắp dữ liệu lớn
Tôi đang sử dụng máy tính xách tay IPython làm môi trường lập trình và các gói gấu trúc + sklearn để phân tích dữ liệu từ hướng dẫn nhận dạng chữ số của kaggle.
Các dữ liệu có sẵn trên webpage, liên kết đến my code, và đây là error message:
KNeighborsClassifier
được sử dụng để dự đoán.
Vấn đề:
"MemoryError" xảy ra khi tải dữ liệu lớn sử dụng read_csv chức năng. Để tạm thời bỏ qua vấn đề này, tôi phải khởi động lại hạt nhân , sau đó hàm read_csv tải thành công tệp, nhưng cùng một lỗi xảy ra khi tôi chạy lại cùng một ô.
Khi read_csv
chức năng tải các tập tin thành công, sau khi thực hiện thay đổi đối với dataframe
, tôi có thể vượt qua các tính năng và nhãn để phù hợp của KNeighborsClassifier() chức năng. Tại thời điểm này, lỗi bộ nhớ tương tự xảy ra.
tôi thử như sau:
Duyệt qua tệp CSV trong khối, và phù hợp với những dữ liệu cho phù hợp, nhưng vấn đề là mô hình tiên đoán được ghi đè tất cả thời gian cho một đoạn dữ liệu.
Bạn nghĩ tôi có thể làm gì để đào tạo thành công mô hình của mình mà không gặp phải vấn đề về bộ nhớ?
Mã + dữ liệu của bạn chạy tốt trên máy tính xách tay. Nó đòi hỏi khoảng 1,2 GB bộ nhớ. Hệ thống của bạn có bao nhiêu bộ nhớ? – Sicco
Đã làm việc bằng cách sử dụng loadtxt. Ngay cả khi không có sự xuất hiện của lỗi bộ nhớ, chỉ chạy ~ 75MB dữ liệu trên thuật toán chiếm hơn 1GB ram ... Tôi không chắc liệu tôi có làm gì sai trong mã của mình hay không. (http://pastie.org/4354911) (sổ ghi chép ipython). Nếu đó chỉ là thuật toán thực hiện việc này lâu, bạn tải gigabyte dữ liệu trên thuật toán như thế nào mà không mất quá nhiều thời gian để tạo một mô hình? –
Bạn có thể sử dụng thuật toán có thể được đào tạo từng bước, do đó chỉ xử lý một phần nhỏ dữ liệu tại một thời điểm. Một bộ ước lượng trong scikit-learn có khả năng làm điều này nếu nó thực hiện phương thức 'partial_fit'. – Sicco