İyi bilinen makine öğrenim sistemlerinin çoğunda, kategorik değişkenler doğal olarak ele alınmaktadır. Örneğin, R'de faktörleri, WEKA'da ise nominal değişkenleri kullanırsınız. Scikit-learn'da durum böyle değil. Scikit-learn'de uygulanan karar ağaçları yalnızca sayısal özellikleri kullanır ve bu özellikler her zaman sürekli sayısal değişkenler olarak yorumlanır .
Bu nedenle, basitçe dizeleri bir karma kodla değiştirmekten kaçınılmalıdır, çünkü sürekli bir sayısal özellik olarak kabul edileceğinden, kullanacağınız herhangi bir kodlama, verilerinizde basitçe bulunmayan bir sıraya neden olacaktır.
Bunun bir örneği [1,2,3] ile ['kırmızı', 'yeşil', 'mavi'] kodunun 'kırmızı' gibi tuhaf şeyleri 'mavi' değerinden daha düşük olacağını ve 'kırmızı' olarak adlandırıldığını gösterir. ve bir 'mavi', 'yeşil' olacak. [1,2,3] ile ['low', 'medium', 'high' olarak kodladığınızda daha ince bir örnek daha olabilir. İkinci durumda, mantıklı bir sıralamaya sahip olabilir, ancak “orta”, “düşük” ve “yüksek” ortasında değilken, bazı ince tutarsızlıklar olabilir.
Son olarak, sorunuzun cevabı, kategorik özelliği çoklu ikili özelliklere kodlamaktan geçiyor . Örneğin, ['kırmızı', 'yeşil', 'mavi'] kodunu, her kategoride bir tane olmak üzere, kategori eşleştiğinde 1 ve diğerinde 0 olan 3 sütunla kodlayabilirsiniz. Buna sıcak kodlama , ikili kodlama, k kodlarından biri veya her neyse denir . Kategorik özellikleri kodlamak ve özellik çıkarma - karma ve dikte etmek için belgeleri burada kontrol edebilirsiniz . Açıkçası bir sıcak kodlama, alan gereksinimlerinizi artıracak ve bazen performansı da olumsuz etkileyecektir.