ऐसे कई जवाब हैं जो pandas.get_dummies
का उल्लेख इस विधि के रूप में करते हैं, लेकिन मुझे लगता है कि labelEncoder
दृष्टिकोण मॉडल को लागू करने के लिए क्लीनर है। अन्य समान उत्तरों के लिए DictVectorizer
का उपयोग करके उल्लेख किया गया है, लेकिन फिर पूरे DataFrame
को dict में परिवर्तित करने के लिए शायद एक अच्छा विचार नहीं है।
की समस्या पैदा करने वाले कॉलम निम्नलिखित मान लेते हैं:
from sklearn import preprocessing
import numpy as np
import pandas as pd
train = {'city': ['Buenos Aires', 'New York', 'Istambul', 'Buenos Aires', 'Paris', 'Paris'],
'letters': ['a', 'b', 'c', 'd', 'a', 'b']}
train = pd.DataFrame(train)
test = {'city': ['Buenos Aires', 'New York', 'Istambul', 'Buenos Aires', 'Paris', 'Utila'],
'letters': ['a', 'b', 'c', 'a', 'b', 'b']}
test = pd.DataFrame(test)
Utila एक दुर्लभ शहर है, और यह है कि हम निष्कर्ष समय नए डेटा पर विचार कर सकते हैं, प्रशिक्षण डेटा में लेकिन परीक्षण सेट में मौजूद नहीं है।
चाल इस मान को "अन्य" में परिवर्तित कर रही है और लेबल एन्कोडर ऑब्जेक्ट में भी शामिल है। फिर हम इसे उत्पादन में पुन: उपयोग कर सकते हैं।
c = 'city'
le = preprocessing.LabelEncoder()
train[c] = le.fit_transform(train[c])
test[c] = test[c].map(lambda s: 'other' if s not in le.classes_ else s)
le_classes = le.classes_.tolist()
bisect.insort_left(le_classes, 'other')
le.classes_ = le_classes
test[c] = le.transform(test[c])
test
city letters
0 1 a
1 3 b
2 2 c
3 1 a
4 4 b
5 0 b
नए डेटा करने के लिए इसे लागू करने के लिए हम सभी की जरूरत है प्रत्येक स्तंभ है जो आसानी से अचार के साथ किया जा सकता है के लिए एक le
वस्तु को बचाने के लिए है।
यह उत्तर इस question पर आधारित है जो मुझे लगता है कि मुझे पूरी तरह स्पष्ट नहीं है, इसलिए इस उदाहरण को जोड़ा गया।
क्या आपके पास इस उद्देश्य के लिए नमूना चित्रण है? –
क्या आप अपवाद पकड़ सकते हैं, इसे लॉग (या जो कुछ भी), फिर आगे बढ़ें? या बस उन्हें अनदेखा करें? – wwii
यदि एक अनुमानित मॉडल को एपीआई के रूप में तैनात किया गया है तो यह बहुत संभावना है कि इसे सुविधाओं के अभी तक अज्ञात लेबलों का सामना करना पड़ेगा। मैं स्केलेर्न में उससे कैसे निपट सकता हूं? क्या आप एपीआई में त्रुटि फैलाने का सुझाव देंगे? –