केरस के साथ मल्टी-क्लास वर्गीकरण में स्ट्रिंग लेबल से कैसे निपटें?


18

मैं मशीन लर्निंग और केरस पर नौसिखिया हूं और अब केरस का उपयोग करके एक बहु-श्रेणी छवि वर्गीकरण समस्या का काम कर रहा हूं। इनपुट को टैग की गई छवि है। कुछ पूर्व प्रसंस्करण के बाद, प्रशिक्षण डेटा को पायथन सूची में निम्न रूप में दर्शाया गया है:

[["dog", "path/to/dog/imageX.jpg"],["cat", "path/to/cat/imageX.jpg"], ["bird", "path/to/cat/imageX.jpg"]]

"कुत्ता", "बिल्ली", और "पक्षी" वर्ग लेबल हैं। मुझे लगता है कि इस समस्या के लिए एक-हॉट एन्कोडिंग का उपयोग किया जाना चाहिए, लेकिन इन स्ट्रिंग लेबल के साथ इसे कैसे निपटना है, मैं इस बारे में बहुत स्पष्ट नहीं हूं। मैंने sklearn के LabelEncoder () को इस तरह आज़माया है:

encoder = LabelEncoder()
trafomed_label = encoder.fit_transform(["dog", "cat", "bird"])
print(trafomed_label)

और आउटपुट [२ १ ०] है, जो अलग है कि मेरा कुछ [जैसे [१०,०,०], [०,१,०]], [०,०,१]]। यह कुछ कोडिंग के साथ किया जा सकता है, लेकिन मैं यह जानना चाहूंगा कि क्या इससे निपटने के लिए कुछ "मानक" या "पारंपरिक" तरीका है?

जवाबों:


14

Sklearn का LabelEncoderमॉड्यूल सभी वर्गों को ढूंढता है और 0. से शुरू होने वाली प्रत्येक संख्यात्मक आईडी को निर्दिष्ट करता है। इसका मतलब है कि मूल डेटा सेट में आपकी कक्षा के जो भी प्रतिनिधित्व हैं, अब आपके पास प्रत्येक का प्रतिनिधित्व करने का एक सरल सुसंगत तरीका है। यह एक-हॉट एन्कोडिंग नहीं करता है, हालांकि जैसा कि आप सही तरीके से पहचानते हैं, यह बहुत करीब है, और आप उन आईडी का उपयोग जल्दी से अन्य कोड में एक-हॉट-एन्कोडिंग उत्पन्न करने के लिए कर सकते हैं।

यदि आप एक-गर्म एन्कोडिंग चाहते हैं, तो आप LabelBinarizerइसके बजाय उपयोग कर सकते हैं । यह बहुत समान रूप से काम करता है:

 from sklearn.preprocessing import LabelBinarizer
 encoder = LabelBinarizer()
 transfomed_label = encoder.fit_transform(["dog", "cat", "bird"])
 print(transfomed_label)

आउटपुट:

[[0 0 1]
 [0 1 0]
 [1 0 0]]

लेकिन जब आप एक नए रंग की भविष्यवाणी करने की कोशिश करेंगे तो हॉटकेडिंग आपकी मदद कैसे कर सकती है? हो सकता है कि आपके मामले में आपको मॉडल को फिर से अपनाना पड़े। क्या आपके पास कोई उपाय है?
gtzinos 12

@gtzinos: यह एक अलग प्रश्न की तरह दिखता है। शायद इसे साइट पर पूछें। यदि आप ऐसा करते हैं, तो स्पष्ट करें कि क्या आप NN के बारे में चिंतित हैं कि वे एक नए आइटम की भविष्यवाणी कर रहे हैं (प्रशिक्षण डेटा में नहीं देखा गया है, लेकिन तार्किक रूप से नए इनपुट पर होना चाहिए), या ऑनलाइन प्रशिक्षण डेटा में आने पर मक्खी पर नई कक्षाएं जोड़ना।
नील स्लेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.