Tôi đang xây dựng một quy trình công việc để tạo các mô hình học máy (trong trường hợp của tôi, sử dụng các gói pandas
và sklearn
gói của Python ) từ dữ liệu được lấy từ một cơ sở dữ liệu rất lớn (ở đây, Vertica bằng SQL và pyodbc
), và một bước quan trọng trong quy trình đó liên quan đến việc mất tích giá trị của các yếu tố dự đoán. Điều này rất đơn giản trong một nền tảng phân tích hoặc thống kê duy nhất --- có thể là Python, R, Stata, v.v .--- nhưng tôi tò mò nơi tốt nhất để xác định bước này trong quy trình làm việc đa nền tảng.
Nó đủ đơn giản để thực hiện điều này trong Python, với sklearn.preprocessing.Imputer
lớp, bằng cách sử dụng pandas.DataFrame.fillna
phương thức hoặc bằng tay (tùy thuộc vào độ phức tạp của phương thức cắt bỏ được sử dụng). Nhưng vì tôi sẽ sử dụng điều này cho hàng chục hoặc hàng trăm cột trong hàng trăm triệu bản ghi, tôi tự hỏi liệu có cách nào hiệu quả hơn để thực hiện việc này trực tiếp thông qua SQL trước thời hạn không. Ngoài hiệu quả tiềm năng của việc thực hiện điều này trong một nền tảng phân tán như Vertica, điều này sẽ có thêm lợi ích là cho phép chúng tôi tạo một đường ống tự động để xây dựng các phiên bản bảng "hoàn chỉnh", vì vậy chúng tôi không cần phải điền vào một bộ mới các giá trị bị thiếu từ đầu mỗi khi chúng ta muốn chạy một mô hình.
Tôi đã không thể tìm thấy nhiều hướng dẫn về điều này, nhưng tôi tưởng tượng rằng chúng ta có thể:
- tạo một bảng các giá trị thay thế (ví dụ: trung bình / trung bình / chế độ, tổng thể hoặc theo nhóm) cho mỗi cột không đầy đủ
- nối bảng giá trị thay thế với bảng gốc để gán giá trị thay thế cho mỗi hàng và cột không đầy đủ
- sử dụng một loạt các báo cáo trường hợp để lấy giá trị ban đầu nếu có và giá trị thay thế khác
Đây có phải là điều hợp lý để làm trong Vertica / SQL không, hay có lý do chính đáng để không làm phiền và chỉ xử lý nó trong Python thay thế? Và nếu sau này, có một trường hợp mạnh mẽ để làm điều này trong gấu trúc chứ không phải sklearn hoặc ngược lại? Cảm ơn!