Çok büyük bir veritabanından (burada, SQL ve Vertica aracılığıyla Vertica) alınan verilerden makine öğrenme modelleri (benim durumumda, Python pandas
ve sklearn
paketleri kullanarak) oluşturmak için bir iş akışı oluşturuyorum pyodbc
ve bu süreçte kritik bir adım eksik öngörücülerin değerleri. Bu, tek bir analiz veya istatistik platformu içinde basittir - Python, R, Stata, vb. Olsun. - Ama bu adımı çok platformlu bir iş akışında en iyi nerede bulacağımı merak ediyorum.
Bunu Python'da, sklearn.preprocessing.Imputer
sınıfla, pandas.DataFrame.fillna
yöntemi kullanarak veya elle (kullanılan impütasyon yönteminin karmaşıklığına bağlı olarak) yapmak yeterince basittir . Ama bunu yüz milyonlarca kayıt boyunca düzinelerce veya yüzlerce sütun için kullanacağım için, bunu doğrudan SQL üzerinden yapmanın daha etkili bir yolu olup olmadığını merak ediyorum. Bunu Vertica gibi dağıtılmış bir platformda yapmanın potansiyel verimliliklerinin yanı sıra, bu, tabloların "tam" sürümlerini oluşturmak için otomatik bir boru hattı oluşturmamıza olanak tanıyacak ve böylece yeni bir set doldurmamız gerekmeyecek. her model çalıştırmak istediğimizde eksik değerlerin sıfırdan
Bununla ilgili çok fazla rehberlik bulamadım, ancak hayal edebileceğimizi düşünüyorum:
- tamamlanmamış her sütun için bir ikame değerleri tablosu oluşturun (örneğin, ortalama / medyan / mod, genel veya grup olarak)
- her satır ve tamamlanmamış sütun için bir yedek değer atamak üzere yedek değer tablosunu orijinal tabloyla birleştirin
- Varsa orijinal değeri ve yerine başka değeri almak için bir dizi vaka ifadesi kullanın
Bu Vertica / SQL'de yapmak için makul bir şey mi, yoksa rahatsız etmemek ve sadece Python'da işlememek için iyi bir neden var mı? Ve eğer ikincisi, bunu sklearn veya tam tersi yerine pandalarda yapmak için güçlü bir durum var mı? Teşekkürler!