Kategorik veriler ve sayısal veriler arasında dinamik olarak nasıl ayırt edebilirim?


12

Sütunlara veya veri türlerine bakılmaksızın veri dosyalarının alınmasını içeren bir proje üzerinde çalışan birini tanıyorum. Görev, herhangi bir sayıda sütun ve çeşitli veri türleriyle bir dosya almak ve sayısal veriler üzerinde özet istatistikler çıkarmaktır.

Ancak, belirli sayı tabanlı veriler için dinamik olarak veri türlerinin nasıl atanacağından emin değildir. Örneğin:

    CITY
    Albuquerque
    Boston
    Chicago

Bu açıkça sayısal veriler değildir ve metin olarak saklanacaktır. Ancak,

    ZIP
    80221
    60653
    25525

kategorik olarak açıkça işaretlenmez. Yazılımı, posta kodunu sayısal olarak atar ve bunun için bu tür veriler için anlamlı olmayan özet istatistikler çıkarır.


Birkaç fikir vardı:

  1. Bir sütun tümüyle tamsayı ise, kategorik olarak etiketleyin. Bu açıkça işe yaramazdı, ama bir fikirdi.
  2. Bir sütunda n'den az benzersiz değer varsa ve sayısalsa, kategorik olarak etiketleyin. Bu daha yakın olabilir, ancak yine de sayısal verilerle ilgili sorunlar olabilir.
  3. Gerçekten kategorik olması gereken ortak sayısal verilerin bir listesini tutun ve sütun başlıklarını eşleşmeler için bu listeyle karşılaştırın. Örneğin, içinde "ZIP" olan herhangi bir şey kategorik olur.

Bağırsaklarım, sayısal verileri kategorik veya sayısal olarak doğru bir şekilde atamanın bir yolu olmadığını, ancak bir öneri umduğunu söyledi. Herhangi bir fikir büyük takdir.


Tam kanıt değil ancak 0 ile başlıyorsa genellikle sayısal
paparazzo

Muhtemelen kendinize de yanlış yapmanın sonucunun ne olduğunu sormalısınız. Bu, sürece ne kadar çaba harcamanız gerektiğini belirlemelidir. % 90 doğru veya% 99 doğru veya% 99.9999 doğru mu istiyorsunuz?
Spacedman

Cevaplarda önerilen tüm buluşsal yöntemleri özellik olarak alırdım ve ikili bir sınıflandırıcıyı eğitirdim.
Emre

Bkz. Stats.stackexchange.com/a/106400/17230 . Burada gerçek bir gerçek yok.
Scortchi - Monica

Yanıtlar:


8

Bunu yapmanın kusursuz bir yolunun farkında değilim. İşte kafamın üstünden bir fikir:

  1. Değerleri varsayılan olarak kategorik olarak kabul edin.
  2. Verilerin gerçekte sürekli olduğunu ima eden çeşitli niteliklerini kontrol edin. Bu nitelikleri, sürekli verilerle ilişkilendirilme olasılıklarına göre ağırlıklandırın. İşte bazı olası örnekler:
    • Değerler tamsayıdır: +.7
    • Değerler değişken: +.8
    • Değerler normal olarak dağıtılır: +.3
    • Değerler nispeten az sayıda benzersiz değer içerir: +.3
    • Değerlerin hepsi aynı sayıda karakter değil: +.1
    • Değerler baştaki sıfır içermez: +.1
  3. 1'den büyük tüm sütunları sayısal olarak kabul edin. Faktörleri ve ağırlıkları, ihtiyaçlarınıza göre farklı veri kümelerine karşı testlere göre ayarlayın. Bunu yapmak için ayrı bir makine öğrenme algoritması bile oluşturabilir ve eğitebilirsiniz.

Bu cevap ilginç. Başka bir cevap vermek yerine, bu konuda bir değişiklik önermek istiyorum. Bu sorunu düzenli bir sınıflandırma sorunu olarak ele almaya ne dersiniz? Bu yanıttaki özniteliklere (tamsayı, kayan nokta, normal olarak dağıtılmış, göreceli benzersiz değer sayısı, vb.) Dayalı olarak her sütun için bir dizi özellik tanımlayabilirsiniz. Bundan sonra, bu sadece bir sınıflandırma algoritması kullanmakla ilgilidir.
Pablo Suau

@PabloSuau, bu fikri beğendim. Sınıflandırma algoritmaları burada harika bir yöntem olabilir. Bakılması gereken bazı özellikler için jncraton'a teşekkürler.
Poisson Balık

4

Örneğin, bir ailenin çocuklarınız varsa (örneğin 0 ile 5 arasında değişebilir), kategorik veya sayısal bir değişken midir? Aslında sorununuza ve onu nasıl çözmek istediğinize bağlıdır. Bu anlamda aşağıdakileri yapabilirsiniz:

  • Bu sütunun benzersiz değerlerinin sayısını hesaplama
  • Bu sayıyı toplam satır sayısına bölün
  • Bu oran bir eşiğin altındaysa (örneğin,% 20), kategorik olduğunu düşünürsünüz.

Ayrık değerler olması durumunda, ek bir test şunlar olabilir: parametrelerin bazılarını tahmin etmek için bir regresyon modeli kullanın ve tahmini değerlerin orijinal değerler kümesinde bulunup bulunmadığını kontrol edin. Bu doğru değilse, muhtemelen kategorik verilerle uğraşıyorsunuz (ZIP durumunda olduğu gibi).

Geçmişte benim için nispeten iyi çalıştı ...


2

Bu soru çapraz gönderildiğinden, @nickcox tarafından Cross Validated hakkındaki ilk yorumlar oldukça alakalı ve doğrudur. Görüşlerim biraz farklı. Örneğin, soruyu iki bölüme ayırarak soruyu yeniden ifade ederim: birincisi, bilinmeyen bir bilgi akışını veri türüne göre nasıl sınıflandıracağımız ve ikinci olarak ne tür bir sınıflandırma oranının beklenebileceği sorunu var . Birisi bunu yapmak için zaman ayırmak istiyorsa, her iki soru da hemen cevaplanabilir.

İlk sayı, hazır bulunan gerçek dünya verilerinin örneklerini kullanarak bu konulara ilişkin yorumlarda ve cevaplarda önceden önerilenler doğrultusunda kurallara dayalı bir uzman sistemi geliştirmektir.

İkinci olarak, bu gerçek dünya verilerinin sınıflandırma hatasını kıyaslayan bilinen veri türlerini içerdiği göz önüne alındığında.

Üçüncü bir adım, aktarılan bilgileri - mümkün olduğu ölçüde - daha doğru bir şekilde yansıtmak için kuralların tekrar tekrar güncellenmesini içerecektir.

Zihnimde, sıkıcı olsa da, böyle bir proje yasaklayıcı bir çalışma gerektirmez.

---- Ek Yorum ----

Burada özgeçmişte ortaya çıkan veri oluşturma süreci ile ilgili olarak özellik çıkarmanın iyi bir tartışması:

/stats/191935/what-does-the-process-that-generates-the-data-mean-and-how-does-feature-selec

Özellik çıkarma, seçim ve DGP, uzman bir sistem geliştirmek için mükemmel bir başlangıç ​​noktasıdır.


Çapraz Onaylı ile ilgili soruyu sildim. Referans için @NickCox şunları söyledi: "Düşündüğünüzden daha kötü olduğunu düşünseniz bile, düşündüğünüzden daha kötü. Ondalık noktalar, kategorilerdeki değişkenler içinde, örneğin endüstriler veya hastalıklar gibi kodlanmış sınıflandırmaların bir parçası olarak gizlenebilir. kategorilere göre: 3, yani 3 araba veya kedi, 3 ile aynı değildir, yani "bir arabanın sahibi" veya "bir kedinin sahibi" anlamına gelir. Ölçümler sadece konvansiyonla tamsayı olabilir, örneğin insanların yükseklikleri tamsayı cm veya inç, kan basıncı tamsayı mm Hg olarak bildirilir. "
Poisson Balık

@NickCox ikinci yorum: "Farklı (hala bir kez meydana gelmenin birincil anlamı olan" benzersiz "den daha iyi bir terim) değerleri de iyi bir rehber değildir. Orta örneklerde mümkün olan farklı yüksekliklerin sayısı muhtemelen farklı dini bağların veya etnik kökenlerin sayısından çok daha az. "
Poisson Balık
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.