Bir Pandas kursu almakla ilgileniyor musunuz? Data Manipulation with pandas kursumuza göz atın!
Veriyi İçe Aktarma Verinizi keşfetmeye başlamak için önce gerçekten veriyi yüklemeniz gerekir. Bunu muhtemelen zaten biliyorsunuzdur, ancak Pandas kütüphanesi sayesinde bu kolay bir iştir: konvansiyona uyarak paketi pd kısaltmasıyla içe aktarırsınız ve verinin bulunduğu URL’yi ve bir header argümanını geçerek read_csv() fonksiyonunu kullanırsınız. Bu son argüman, verinizin doğru şekilde okunmasını sağlamak için kullanabileceğiniz bir argümandır: verinizin ilk satırı, DataFrame’inizin sütun adları olarak yorumlanmayacaktır.
Alternatif olarak, verinizin doğru okunduğundan emin olmak için belirtebileceğiniz başka argümanlar da vardır: sep veya delimiter argümanlarıyla kullanılacak ayırıcıyı, names ile kullanılacak sütun adlarını veya index_col ile oluşacak DataFrame’de satır etiketleri olarak kullanılacak sütunu belirtebilirsiniz.
Ancak bunlar, read_csv() fonksiyonuna ekleyebileceğiniz argümanların tamamına yakınını bile kapsamaz. Bu fonksiyon ve argümanları hakkında daha fazla bilgiyi dokümantasyonda bulabilirsiniz.
# Import the `pandas` library as `pd`
import pandas as pd
# Load in the data with `read_csv()`
digits = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tra",
header=None)
# Print out `digits`
print(digits)
Bu durumda, veriler virgülle ayrılmış biçimde olduğundan read_csv() kullandığınızı unutmayın. Farklı bir ayırıcıya sahip dosyalarınız varsa, veriyi içe aktarmak için read_table(), read_excel(), read_fwf() ve read_clipboard gibi diğer fonksiyonları da düşünebilirsiniz; bunlar sırasıyla genel sınırlayıcıya sahip dosyalar, Excel dosyaları, sabit genişlikte biçimlendirilmiş veriler ve Panoya kopyalanmış veriler için kullanılır.
Ayrıca, bir SQL sorgusunu veya veritabanı tablosunu DataFrame’e okumak için seçeneklerden biri olarak read_sql() fonksiyonunu da bulacaksınız. Daha fazla Girdi fonksiyonu için Pandas dokümantasyonunun bu bölümüne bakın.
Keşifsel Veri Analizi (EDA) Nedir? Keşifsel Veri Analizi (EDA), bir yandan soruları yanıtlamak, iş varsayımlarını test etmek, ileri analizler için hipotezler üretmek için kullanılır. Öte yandan, veriyi modellemeye hazırlamak için de kullanabilirsiniz. Bu iki yaklaşımın ortak noktası, ihtiyaç duyduğunuz yanıtları almak veya gelecekteki modellemenin sonuçlarını yorumlamak için bir sezgi geliştirmek amacıyla verinizi iyi tanımaktır.
Bu hedeflere ulaşmanın birçok yolu vardır: verinin temel bir tanımını elde etmek, görselleştirmek, içindeki kalıpları belirlemek, veriyi kullanmanın zorluklarını saptamak vb.
EDA hakkında okurken sıkça göreceğiniz konulardan biri Veri Profillemesi’dir. Veri profillemesi, veri kümenizi betimsel istatistiklerle özetlemeye odaklanır. Veri kümenizi daha iyi anlamak için çeşitli ölçümler kullanmak istersiniz. Veri profillemesinin amacı, verinizi sağlam bir şekilde anlayarak sonrasında verinizi çeşitli şekillerde sorgulamaya ve görselleştirmeye başlayabilmektir. Ancak bu, yineleme yapmayacağınız anlamına gelmez: tam tersine, veri profillemesi veri kümenizi özetlemeye odaklandığından, veri kalitesini değerlendirmek için sıklıkla kullanılır. Veri profillemesinin sonucuna bağlı olarak veriyi düzeltmeye, elemek veya farklı şekilde işlemeye karar verebilirsiniz.
Veri profillemesi hakkında daha fazlasını bir sonraki yazıda öğreneceksiniz.
EDA ve Veri Madenciliği (DM) EDA, veri madenciliğinden ayrılır; her ne kadar ikisi yakından ilişkili olsa da, birçok EDA tekniği veri madenciliğine dahil edilmiştir. Ayrıca iki yaklaşımın hedefleri de oldukça benzerdir: EDA, ilginç özelliklerin ve özellikler arasındaki ilişkilerin daha net hale geleceği şekilde veriyi keşfetmenizi sağlar. EDA’da genellikle sistematik kalıpları aramak ve bulmak için çok sayıda değişkeni çeşitli tekniklerle keşfeder ve karşılaştırırsınız. Veri madenciliği ise veriden kalıplar çıkarmakla ilgilidir. Bu kalıplar, değişkenler arasındaki ilişkilere dair içgörüler sağlar ve iş kararlarını iyileştirmek için kullanılabilir. Ayrıca her iki durumda da değişkenler arasındaki ilişkilere dair önceden belirlenmiş ya da tam olmayan beklentileriniz vardır.
Bununla birlikte, genel olarak Veri Madenciliği’nin daha uygulama odaklı olduğunu, EDA’nın ise altta yatan olguların temel doğasıyla ilgilendiğini söyleyebiliriz. Başka bir deyişle, Veri Madenciliği ilgili değişkenler arasındaki özgül ilişkileri belirlemekle nispeten daha az ilgilidir. Sonuç olarak, Veri Madenciliği veri keşfine “kara kutu” yaklaşımını kabul eder ve yalnızca EDA’da da kullanılan teknikleri değil, aynı zamanda değişkenler arasındaki ilişkilerin özgül doğasını açıkça tanımlamadan geçerli tahminler üreten Sinir Ağları gibi teknikleri de kullanır.
Verinin Temel Tanımı Yukarıda okuduğunuz gibi, EDA verinizi tanımakla ilgilidir. Bunu yapmanın en temel adımlarından biri, verinizin temel bir tanımını almaktır. Verinizin temel tanımı oldukça geniş bir terimdir: bunu veriniz hakkında hızlıca bazı bilgiler elde etmenin pratik bir yolu, verinizle ilgili basit ve kolay anlaşılır bilgiler edinmenin bir yolu, veriye dair temel bir hissiyat kazanma vb. olarak yorumlayabilirsiniz.
Bu bölüm bu yorumlar arasında ayrım yapmayacak: gerçekten de DataFrame’iniz hakkında kolay anlaşılır bilgileri hızlıca toplamanın bazı yollarını tanıtacaktır.
Veriyi Betimleme Örneğin, NaN değerleri hariç tutan çeşitli özet istatistikleri almak için describe() fonksiyonunu kullanabilirsiniz. Ünlü Iris veri kümesini betimlediğiniz şu örneği düşünün. Veri, DataCamp Light bloğunda sizin için önceden yüklendi:
Bu fonksiyonun sayım, ortalama, standart sapma, minimum ve maksimum değerler ile çeyreklikleri döndürdüğünü görürsünüz. Elbette, Python’da bu istatistikleri verebilecek birçok paket vardır; Pandas’ın kendisi dâhil. Bu fonksiyonu kullanmak, bu bilgileri almanın yollarından yalnızca biridir.
Ayrıca, betimsel istatistiklere henüz dalmadıysanız kesinlikle zaman ayırmanız gerektiğini unutmayın. Bu istatistikleri verinizin kalitesini değerlendirmeye başlamak için kullanabilirsiniz. Ardından veriyi düzeltmeye, elemek veya başka şekilde ele almak gerekip gerekmediğine karar verebileceksiniz. Bu genellikle veri profilleme adımıdır. EDA’daki bu adım, veri öğelerini ve anomalilerini biraz daha iyi anlamak ve bir yandan verinin dokümantasyona ne kadar uyduğunu, diğer yandan iş ihtiyaçlarını ne kadar karşıladığını görmek içindir.
Not keşifsel veri analizi boyunca ilerledikçe veri profilleme adımına geri döneceksiniz; çünkü geçeceğiniz adımlar verinizin kalitesini etkileyebilir.
DataFrame’in İlk ve Son Satırları Artık veri kümeniz hakkında genel bir fikriniz olduğuna göre, verinin kendisine daha yakından bakmak da iyi bir fikirdir. Pandas kütüphanesinin head() ve tail() fonksiyonları sayesinde DataFrame’inizin ilk ve son satırlarını kolayca inceleyebilirsiniz.
Aşağıdaki DataCamp Light bloğunda elle yazılmış rakam verisinin ilk ve son beş satırını head() ve tail() fonksiyonlarıyla inceleyin. Veri sizin için DataCamp Light bloğunda önceden yüklendi:
# Inspect the first 5 rows of `digits`
first = digits._____(5)
# Inspect the last 5 rows
last = digits.____(5)
head() ve tail() fonksiyonlarının çıktısı, bu tür veriye aşina değilseniz pek bir şey ifade etmeyebilir.
Sadece sayısal değerlerden oluşan bir sürü satır ve sütun görebilirsiniz. Henüz okumadıysanız, verinin nasıl toplandığına dair ilgili bilgileri ve sütun ve satır sayılarını belirten veri kümesi açıklamasını incelemeyi düşünün; bu bilgiler veriyi doğru içe aktarıp aktarmadığınızı kontrol etmekte işe yarayabilir.
Ayrıca, ilk bulgunuza geri dönün: satırlardaki sayısal değerler. İlk bakışta bir sorun yokmuş gibi düşünebilirsiniz; tamsayılar doğru görünüyor ve ilk bakışta herhangi bir uyarı vermiyor.
Ancak, önünüzdeki başka bir veri kümesi üzerinde tüm bunları yapmış olsaydınız ve örneğin tarih-saat bilgisi içerseydi, bu kod satırlarının sonucuna hızlı bir bakış şu soruları gündeme getirebilirdi: “Verim DateTime olarak mı okundu?”, “Bunu nasıl kontrol edebilirim?” ve “Veri tipini nasıl değiştirebilirim?”.
Bunlar tipik olarak bir sonraki yazıda ele alınacak veri profilleme adımında yanıtlayacağınız daha derin sorulardır.
Veriden Örnekleme Büyük bir veri kümeniz varsa, veriniz hakkında hızlıca fikir edinmenin kolay bir yolu olarak veriden bir örneklem almayı düşünebilirsiniz. Bunu yapmanın ilk ve kolay yolu olarak, Pandas’a dâhil edilen sample() fonksiyonunu şu şekilde kullanabilirsiniz:
# Take a sample of 5
digits.sample(5)
Bunu yapmanın bir diğer -belki daha karmaşık- yolu ise rastgele bir indeks oluşturup DataFrame’inizden rastgele satırlar almaktır. Aşağıdaki kodun, verinizi örneklemenize olanak tanıyan sample modülüne sahip random paketini, range() ve len() ile birlikte kullandığını göreceksiniz. Örneğe dahil etmek istediğiniz DataFrame satırlarını seçmek için ix kullanımına da dikkat edin.
Bu bağlamda neden ix kullandığınızı bilmiyorsanız, DataCamp’in daha spesifik eğitimi yardımcı olabilir! Bu daha genel konuları ayrıntılı şekilde kapsar. Yukarıda verilen bağlantıya tıklayarak göz atın!
Şimdilik Python becerilerimizi pratik edelim! Aşağıdaki alıştırmaya başlayın:
# import `sample` from `random`
from random import ______
# Create a random index
randomIndex = np.array(sample(range(len(______)), 5))
# Get 5 random rows
digitsSample = digits.ix[___________]
# Print the sample
print(____________)
Verinizin Zorlukları Artık veriniz hakkında bazı temel bilgiler topladığınıza göre, verinizin ortaya çıkarabileceği zorluklara biraz daha derinlemesine girmek iyi bir fikirdir. Veri profilleme adımından zaten geçtiyseniz, eksik değerlerin farkında olur, hangi değerlerin aykırı olabileceğine dair bir fikriniz olur vb.
Bu bölüm, bu unsurlar hakkında ön fikir edinmenin bazı temel yollarını açıklayacak ve verinizde düzensizlikler bulmanız durumunda veriyi nasıl ele alabileceğinizi anlatacaktır. Bir kez daha unutmayın ki bu düzensizlikleri tespit etme işini veri profilleme adımında daha derinlemesine yapacak ya da yaptınız; ayrıca verinizdeki bazı zorlukları ele aldıktan sonra bu adıma geri dönmeniz normaldir.
Eksik Değerler Verinizi keşfederken kontrol etmek isteyebileceğiniz şeylerden biri de veri kümesinde eksik değer olup olmadığıdır.
Bunu incelemek önemlidir; çünkü verinizin bir kısmı eksik olduğunda veri kümesi ifade gücünü yitirebilir ve bu da zayıf veya yanlı analizlere yol açabilir. Pratikte bu, belirli özellikler için değerleriniz eksik olduğunda, veri için yapacağınız sınıflandırma veya tahminlerin hatalı olma olasılığının artması anlamına gelir.
Elbette, veri kümenizdeki eksik verinin nedeni hatalı çıkarım veya veri içe aktarma olabileceği gibi, veri toplama sürecinin sonucu da olabilir. Veriyi sağlayan sistemler arızalanabilir veya gönderdiğiniz anketi yanıtlayanlar bazı alanları boş bırakmış olabilir. Eksik verilerde bir kalıp olup olmadığını da düşünmek çok önemlidir ve bu, veri profilleme adımının faydalı olabileceği bir konudur. Veri profillemeyi veri kaliteniz hakkında daha iyi bir fikir edinmek için kullanabileceğinizi unutmayın. Eksik veri kalıplarını nasıl keşfedebileceğinize dair daha fazla bilgiyi takip yazıda okuyabilirsiniz.
Kısacası, eksik verinin nedenleri çeşitli olabilir ve büyük ölçüde veri bağlamına bağlıdır, ancak size de bağlı olabilir. Bu yüzden önceki adımlardan birinde veriyi içe aktarırken verinizi incelemiştiniz!
Eksik değer içeren satırları belirlemek için isnull() kullanabilirsiniz. Dönen sonuçta her hücrede True veya False görürsünüz: True, hücredeki değerin eksik olduğunu, False ise hücrenin ‘normal’ bir değer içerdiğini belirtir.
# Identifiy missing values
pd.isnull(______)
Bu durumda verinin oldukça eksiksiz olduğunu görüyorsunuz: eksik değer yok.
Not UCI Machine Learning Repository’de yukarıda bağlantısı verilen veri kümesi açıklamasında da bunun yazdığını, yani veri için eksik değer listelenmediğini görebilirdiniz.
Ancak, karşılaşacağınız her veri kümesi için durum böyle olmayacaktır. Bu nedenle, eksik veriyle ne yapacağınıza karar vermeniz gereken durumlarda neler yapabileceğinizi bilmek önemlidir.
Eksik veriyi silebilirsiniz: ya tüm kaydı silersiniz ya da ilgi duyduğunuz özelliklerin hâlâ mevcut olduğu kayıtları tutarsınız. Elbette, veri silmek analizinizi de yanlı hale getirebileceğinden bu yöntemde dikkatli olmalısınız. Bu nedenle, bir kayıt için eksik olan belirli verilerin olasılığının diğer tüm kayıtlarla aynı olup olmadığını kendinize sormalısınız. Olasılık kayıttan kayda değişmiyorsa, eksik veriyi silmek geçerli bir seçenektir. Silmenin yanı sıra, eksik değer içeren hücreleri “atıf yöntemleri” ile doldurmak için kullanabileceğiniz yöntemler de vardır. İstatistikle çok tecrübeniz varsa, atıfın eksik verilerin yerine ikame değerler koyma süreci olduğunu bilirsiniz. Ortalama, mod veya medyanı doldurabilirsiniz. Elbette burada, örneğin bir değişkenin tüm eksik değerleri için ortalama veya medyan mı almak istediğinizi yoksa eksik değerleri başka bir değişkene dayanarak mı değiştirmek istediğinizi düşünmeniz gerekir. Örneğin, “erkek” veya “kadın” gibi kategorik değişkenler içeren özelliklere sahip kayıtlarınızın olduğu verilerde, gözlemler erkekler ve kadınlar arasında farklılık gösterebileceğinden bunu da dikkate almak isteyebilirsiniz. Bu durumda, kadın gözlemlerinin ortalamasını hesaplayıp, diğer “kadın” kayıtlarındaki eksik değerleri bu ortalama ile doldurabilirsiniz. Değeri regresyon, ANOVA, lojistik regresyon veya başka bir modelleme tekniğiyle tahmin edebilirsiniz. Bu, değerleri doldurmanın açık ara en karmaşık yoludur. Eksik değere sahip kayda en çok benzeyen kayıtların değerleriyle hücreleri doldurabilirsiniz. Bu gibi durumlarda KNN veya K-En Yakın Komşular’ı kullanabilirsiniz. Yukarıdaki eksik veriyi doldurma yollarının her birinin avantaj ve dezavantajları olduğunu unutmayın! Nihai bir karar vermeden önce süre, maliyet, verinizin doğası vb. unsurları göz önünde bulundurmak isteyeceksiniz.
Eksik verilerle ne yapacağınıza nihai olarak karar verdiğinizde, verinizde görmek istediğiniz değişiklikleri nasıl uygulayabileceğinizi görmek için okumaya devam edin.
Eksik Değerleri Doldurma Eğer değerleri atıf ile doldurmaya karar verirseniz, bunun nasıl gerçekleşeceğini de seçebilirsiniz!
Pandas’ın fillna() fonksiyonunu NumPy’nin sunduğu fonksiyonlarla birlikte kullanın. Aşağıdaki kod bloğunu düşünün; sözde, insanların maaşlarını soran bir anketin sonuçlarını içeren bir DataFrame’iniz var. Kitledeki herkesin aynı toplumsal sınıftan olduğu ve katılımcıların soruyu yanıtlama olasılığının her kişi için aynı olduğu bir bağlamda, soruyu yanıtlayan kişilerin ortalamasını hesaplamayı ve yanıtlamayanların değerlerini bu ortalama ile doldurmayı seçebilirsiniz.
# Import NumPyimport numpy as np# Calculate the meanmean = np. mean ( df. Salary) # Replace missing values with the meandf. = df. Salary. fillna ( mean) Altyapı: Elbette, fillna() fonksiyonuna mutlaka bir değer geçirmeniz gerekmez. fillna() fonksiyonuna method argümanını ekleyerek boş olmayan değerleri ileri veya geri yayabilirsiniz. Geriye veya ileriye doğru doldurmak istediğinizi belirtmek için ffill veya bfill geçin.
Eksik Değer İçeren Etiketleri Atma Eksik değerler içeren sütunları veya satırları hariç tutmak için Pandas’ın dropna() fonksiyonunu kullanabilirsiniz:
# Drop rows with missing valuesdf. dropna ( axis= 0 ) # Drop columns with missing values df. dropna ( axis= 1 ) Altyapı: Enterpolasyon Alternatif olarak, eksik değerleri enterpole etmeyi de seçebilirsiniz: interpolate() fonksiyonu, eksik veri noktalarında doğrusal enterpolasyon yaparak doldurulması en olası değeri “tahmin” eder.
df. interpolate ( ) Altyapı: method argümanını ekleyerek polinomsal veya kübik enterpolasyon gibi daha gelişmiş yöntemlere de erişebilirsiniz; ancak bu tür enterpolasyonları kullanmak istediğinizde SciPy’nin kurulu olması gerekir.
Elbette enterpolasyonun da sınırları vardır; özellikle, NaN değerleri son geçerli gözlemden çok uzaktaysa. Bu durumda, özgün koda bir limit argümanı eklemek isteyebilirsiniz. Buna pozitif bir tamsayı geçirirsiniz ve bu sayı, geçerli bir değerden sonra kaç değerin doldurulacağını belirler. Varsayılan sınır yönü ileri doğrudur, ancak bunu da limit_direction ekleyerek değiştirebilirsiniz
Aykırı Değerler Eksik değerler gibi, veriniz büyük çoğunluktan ciddi biçimde sapan değerler de içerebilir. Bu veri noktalarına “aykırı değerler” denir. Bunları bulmak için tek değişkenlerinizin dağılımını kutu grafiğiyle kontrol edebilir veya veri noktalarının grafiğin “beklenen” alanında yer almadığını belirlemek için saçılım grafiği oluşturabilirsiniz.
Verinizdeki aykırı değerlerin nedenleri sistem hatalarından, veri girişi veya veri işleme sırasında insanların müdahalesine kadar değişebilir; ancak analiziniz üzerindeki etkilerini düşünmek önemlidir: standart sapma, ortalama veya medyan gibi istatistiksel testlerin sonucunu değiştirirler; normalliği azaltabilir ve regresyon veya ANOVA gibi istatistiksel modellerin sonuçlarını etkileyebilirler.
Aykırı değerlerle başa çıkmak için onları silebilir, dönüştürebilir veya atıf yapabilirsiniz: karar yine veri bağlamına bağlı olacaktır. Bu nedenle, verinizi anlamak ve aykırı değerlerin nedenini belirlemek yine önemlidir:
Aykırı değer veri girişi veya veri işleme hatasından kaynaklanıyorsa, değeri silmeyi düşünebilirsiniz. Aykırı değerleri gözlemlerinize ağırlık atayarak dönüştürebilir veya veri kümenizdeki aykırı değerlerin yol açtığı varyasyonu azaltmak için doğal logaritmayı kullanabilirsiniz. Eksik değerlerde olduğu gibi, verinizin aşırı değerlerini medyan, ortalama veya mod değerlerle değiştirmek için atıf yöntemlerini de kullanabilirsiniz. Verinizdeki aykırı değerlerle başa çıkmak için yukarıdaki bölümde açıklanan fonksiyonları kullanabilirsiniz.
Verinizin Özellikleri Not bu adımı diğer veri bilimi görevleriyle yinelemeli olarak yaparsınız: modellerinizi kurar ve doğrularsınız; ardından özellikleri ayarlamaya karar verip modeli yeniden inşa etmeye devam edebilirsiniz vb.
Verinizdeki Kalıplar Verinizi keşfetmede atabileceğiniz bir sonraki adımlardan biri, verinizdeki kalıpları belirlemektir; buna veri öznitelikleri arasındaki veya eksik veriler arasındaki korelasyon da dahildir. Bunu yaparken yardımcı olacak şeylerden biri, verinizin görselleştirilmesidir; ve bu statik olmak zorunda değil: Python kütüphaneleri Bokeh veya Plotly ile interaktif görselleştirmelere yönelmeye cesaret edin.
Matplotlib ile Korelasyon Belirleme Artık sayılara baktığınıza ve verinizi nicel olarak analiz ettiğinize göre, verinizi görsel olarak da ele almak faydalı olacaktır. Veriyi görsel olarak da keşfetme zamanı.
Bunu kolay ve hızlı bir şekilde yapmak için Python veri görselleştirme kütüphanesi Matplotlib’i kullanabilirsiniz. Önünüzdeki tek engel, ironik biçimde verinizin kendisidir: bildiğiniz üzere veriniz 64 sütun veya özelliğe sahip. Bu kadar çok özelliğiniz olduğunda, yüksek boyutlu veriyle çalıştığınız söylenir.
Boyutsal verinin tam olarak ne olduğunu makine öğrenimi eğitimimizde öğreneceksiniz; ancak şimdilik, verinizi 2B veya 3B grafikte görselleştirmek istiyorsanız verinizin yalnızca iki veya üç boyuta sahip olması gerektiğini anlamanız yeterli. Bu, verinizin boyutlarını indirmeniz gerektiği anlamına gelir.
Bu da Temel Bileşen Analizi (PCA) gibi Boyut İndirme tekniklerini kullanmanız gerekeceği anlamına gelir:
# Import `PCA` from `sklearn.decomposition`
from sklearn.decomposition import ___
# Build the model
pca = PCA(n_components=2)
# Reduce the data, output is ndarray
reduced_data = pca.fit_transform(_______)
# Inspect the shape of `reduced_data`
reduced_data.______
# print out the reduced data
print(_______________)
İndirgenmiş veriyi incelediğinizde, sütunların veya özelliklerin artık yalnızca ikiye düşürüldüğünü görürsünüz. Satır veya gözlem sayısı ise hâlâ aynıdır; yani 3823. Ve artık veriniz doğru biçimde olduğuna göre, grafik çizimine geçme zamanı!
Doğru grafiği seçmek harika bir başlangıçtır, peki neyi seçeceksiniz?
Bu durumda veriyi keşfediyorsunuz, dolayısıyla verinizin öznitelikleri arasında olası korelasyonları keşfetmek istiyor olabilirsiniz. Saçılım grafiği bunu görselleştirmenin muhtemelen iyi bir yoludur: boyut indirgemeden elde ettiğiniz iki özellik arasındaki ilişkiyi belirlemenize olanak tanır.
import matplotlib. pyplot as pltplt. scatter ( reduced_data[ : , 0 ] , reduced_data[ : , 1 ] , c= labels, cmap = 'viridis' ) plt. show ( ) Altyapı:
Bokeh ile Korelasyon Belirleme İkinci olarak, verinizdeki öznitelikler arasındaki korelasyonları keşfetmek için interaktif bir grafik oluşturmak üzere Bokeh kullanmayı da düşünebilirsiniz. Bokeh kütüphanesi, sunum için modern web tarayıcılarını hedefleyen bir Python interaktif görselleştirme kütüphanesidir. Büyük veya akan veri kümeleriyle çalışıyorsanız idealdir; ancak aşağıdaki örnekte görebileceğiniz gibi “normal” veriler için de kullanabilirsiniz.
Kod oldukça basittir: gerekli modülleri içe aktarır, saçılım grafiğini oluşturur, show() çağrıldığında çıktının bir dosyaya kaydedilmesi için varsayılan çıktı durumunu yapılandırırsınız. Son olarak, oluşturduğunuz saçılım grafiğini görmek için show() çağrısı yaparsınız!
# Import the necessary modulesfrom bokeh. charts import Scatter, output_file, show# Construct the scatter plotp = Scatter ( iris, x= 'Petal_length' , y= 'Petal_width' , color= "Class" , title= "Petal Length vs Petal Width" , xlabel= "Sepal Length" , ylabel= "Sepal Width" ) # Output the file output_file ( 'scatter.html' ) # Show the scatter plotshow ( p) Altyapı: Sonuç zarif:
Bu, grafiğin statik, kaydedilmiş bir görüntüsüdür; ancak not defterinizde veya terminalinizde oluşturulan grafik interaktif olacaktır! Elbette bu, Bokeh’i kullanarak interaktif grafikler oluşturmanın tek bir basit örneğidir. Daha fazla ilham için Bokeh Gallery’ye göz atmayı veya DataCamp’in Interactive Data Visualization with Bokeh kursunu almayı unutmayın.
Pandas ile Korelasyon Belirleme Önceki bölümlerde gördüğünüz grafikler, verinizdeki öznitelikler arasındaki korelasyonu keşfetmenin görsel bir yoludur. Ancak bu, bu ölçüyü nicel olarak inceleyemeyeceğiniz anlamına gelmez! Bunu yapmaya karar verdiğinizde, Pandas’ın corr() fonksiyonunu kullanın. Ancak NaN veya null değerlerin bu hesaplamadan hariç tutulduğunu unutmayın!
# Pearson correlation
iris.corr()
# Kendall Tau correlation
iris.corr('kendall')
# Spearman Rank correlation
iris.corr('spearman')
Not son iki korelasyon ölçütünün katsayıları hesaplanmadan önce veriyi sıralamanızı gerektirdiğini unutmayın. Bunu rank() ile kolayca yapabilirsiniz: yukarıdaki alıştırmada, iris verisi sizin için iris.rank() çalıştırılarak sıralandı.
Ayrıca bu korelasyonların çalıştığı bazı varsayımlar vardır: Pearson korelasyonu değişkenlerinizin normal dağıldığını, her bir değişken çifti arasında doğrusal bir ilişki olduğunu ve verinin regresyon doğrusu etrafında normal dağıldığını varsayar. Öte yandan Spearman korelasyonu, iki sıralı değişkeninizin olduğunu veya bir şekilde ilişkili, fakat doğrusal olmayan iki değişkeninizin olduğunu varsayar.
Kendall Tau korelasyonu, sıralanmış iki veri sütunu arasındaki uyum derecesini temsil eden bir katsayıdır. Spearman korelasyonunu, iki değişken arasındaki ilişki derecesini ölçmek için kullanabilirsiniz. Birbirlerine oldukça benzemiyorlar mı?
Kendall ve Spearman korelasyon ölçütleri benzer görünse de farklıdır: temel fark, hesaplamaların farklı olmasıdır. Kendall Tau katsayısı, uyumlu çiftlerin sayısı eksi uyumsuz çiftlerin sayısının toplam çift sayısına bölünmesiyle hesaplanır. Spearman katsayısı ise sapmaların kareleri toplamının n çarpı n eksi 1’e bölünmesidir.
Spearman katsayısı genellikle Kendall’ın Tau katsayısından daha büyük olur, ancak bu her zaman geçerli değildir: gözlemler arasında sapmalar çok büyük olduğunda daha küçük bir Spearman katsayısı elde edersiniz. Spearman korelasyonu buna çok duyarlıdır ve bu bazı durumlarda işinize yarayabilir!
Öyleyse, hangisini ne zaman kullanmak istersiniz? Çünkü bu iki korelasyon aslında farklı bir şeyi test eder; Kendall’ın Tau’su uyumlu çiftlerin uyumsuz çiftlere göre oranını temsil ederken Spearman katsayısı bunu yapmaz. Ayrıca Kendall Tau korelasyonunun daha sezgisel bir yoruma sahip olduğunu ve hesaplamasının daha kolay olduğunu, karşılık gelen anakütle parametresinin daha iyi bir tahminini verdiğini ve küçük örneklemlerde p değerlerinin daha doğru olduğunu da öne sürebilirsiniz.
İpucu sütunların belirli ikili korelasyon hesaplarının sonuçlarını görmek için print() fonksiyonunu ekleyin.
Artık bildiğiniz üzere, Python veri işleme kütüphanesi Pandas veri manipülasyonu için kullanılır; Yeni başlayanlar için bu, paket sadece ön işleme sırasında işe yarar izlenimi verebilir, ancak gerçek pek de öyle değil: Pandas, verinizi keşfetmek ve veriyi ön işleme tamamlandıktan sonra saklamak için de harikadır.
Ayrıca, DataCamp’in Python eğitimlerini takip eden veya SciPy, NumPy, Matplotlib ve Pandas’ın temellerine zaten giriş yapmış olanlar için, edindiğiniz bilgilerin bir kısmını gözden geçirmek iyi bir fikir olabilir.
Bugünkü eğitim, yukarıda bahsedilen tüm paketlerle verinizi verimli bir şekilde keşfetmenin bazı yollarını tanıtacak, böylece verinizi modellemeye başlayabileceksiniz: