Anasayfa / Büyük Veri / Spark Dataframe İçindeki Kategorik Nitelikleri Otomatik Olarak Seçmek

Spark Dataframe İçindeki Kategorik Nitelikleri Otomatik Olarak Seçmek

Merhaba. Spark dataframe ile çalışırken zaman zaman içindeki kategorik değişkenleri seçeriz. Özellikle makine öğrenmesi öncesinde veri hazırlığı aşamasında bunu mutlaka yapmalıyız. Çünkü kategorik nitelikler veri hazırlığı sürecinde stringIndexer, OneHotEncoder gibi daha farklı aşamalardan geçer. Bu yazımızda Spark dataframe içindeki nitelikleri kategorik ve nümerik olarak ayırt eden ve iki farklı liste içinde bunları toplayan spark kodlarını yazacağız.

Benim yaptığım çalışma esnasında kullandığım ortam bilgileri:

İşletim sistemi: Windows 10 64 bit Pro

IDE: Intellij IDEA Community Edition

Spark 2.3.1

Dil: Scala

Kütüphaneler:

Log seviyesini ERROR yapalım. Böylelikle bilgi logları arasında sonuçlarımızı kaybetmeyiz.

SparkSession ve Context:

Dataframe oluşturma:

Oluşturuduğumuz dataframe’e göz atma:

Sonuç:

Yukarıda iki tane kategorik (isim ve birim), iki tane de nümerik (yas ve deger) nitelik var. Bunları aslında elimizle de yazarız ancak nitelik sayısı çoğaldığında bunu elle yapmak kolay olmayabilir. Bu sebeple şimdi yazacağımız fonksiyon işimizi kolaylaştıracaktır.

Kategorik ile nümerik nitelikleri ayıran fonksiyon:

Yukarıda yapılan işlem çok basit. Parametre olarak ilgili dataframe’i alıyoruz, sütunları içinde for döngüsü ile dolaşıyoruz. Her bir sütunun veri tipinin  StringType olup olmadığını kontrol ediyoruz. Kontrolden geçenleri iki farklı liste içinde biriktiriyoruz. Sonuç olarak bu iki listeyi demet (categoricCols, numericCols) şeklinde döndürüyoruz.

Şimdi bu fonksiyonu dataframe üzerinde uygulayalım.

Yukarıda bir fonksiyondan dönen iki listeyi (array) iki değişkende tuttuk. Şimdi bunları yazdırıp bakalım fonksiyonumuz doğru çalışmış mı?

Sonuç:

Evet sonuç beklediğimiz gibi. Kategorik ve nümerik nitelik isimlerini iki farklı listede topladık. Peki bunun bize ne faydası var? Şu faydası var: makine öğrenmesinde veri hazırlığında nümerik ve kategorik niteliklere ayrı işlemler yapıyoruz. Bu aşamalarda ve modelin tekrar tekrar denenmesi aşamalarında kolaylık sağlıyor. Bazen yeni modeli farklı niteliklerle denemek isteyebiliyoruz. Örneğin çoklu lineer regresyonda geriye doğru eleme yönteminde.

Hoşçakalın…

 

Hakkında Erkan ŞİRİN

2014'ten beri hem akademik hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Halihazırda İmpektra Bilişim A.Ş.'de büyük veri yöneticisi olarak çalışmakta olup aynı zamanda Gazi Üniversitesi Yönetim Bilişim Sistemleri doktora öğrencisidir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete eğitimler vermekte ve projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık tespiti, sahtecilik tespiti, veri hazırlama sürecidir.

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Zaman Serileri : Geleneksel Yöntemler ile Yapay Sinir Ağlarının Karşılaştırılması

Utku Kubilay ÇINAR  R ile Derinlemesine Zaman Serisi… Zaman serileri modellemeleri ve zaman serileri 1900’lü …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir