You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

14 KiB

Dağılımları Görselleştirme

 Sketchnote by (@sketchthedocs)
Dağılımları Görselleştirme - Sketchnote by @nitya

Önceki derste, Minnesota kuşlarıyla ilgili bir veri seti hakkında bazı ilginç bilgiler öğrendiniz. Aykırı değerleri görselleştirerek hatalı verileri buldunuz ve kuş kategorileri arasındaki maksimum uzunluk farklarına baktınız.

Ders Öncesi Test

Kuş veri setini keşfetme

Verilere daha derinlemesine bakmanın bir başka yolu, dağılımına, yani verilerin bir eksen boyunca nasıl organize edildiğine bakmaktır. Örneğin, bu veri setinde Minnesota kuşlarının maksimum kanat açıklığı veya maksimum vücut kütlesinin genel dağılımını öğrenmek isteyebilirsiniz.

Bu veri setindeki verilerin dağılımları hakkında bazı bilgiler keşfedelim. Bu ders klasörünün kökündeki notebook.ipynb dosyasında Pandas, Matplotlib ve verilerinizi içe aktarın:

import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()
İsim BilimselAdı Kategori Takım Aile Cins KorumaDurumu MinUzunluk MaxUzunluk MinVücutKütlesi MaxVücutKütlesi MinKanatAçıklığı MaxKanatAçıklığı
0 Kara karınlı ıslıı ördek Dendrocygna autumnalis Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 Sarımsı ıslıı ördek Dendrocygna bicolor Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 Kar kazı Anser caerulescens Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 Ross'un kazı Anser rossii Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 Büyük beyaz alınlı kaz Anser albifrons Ördekler/Kazlar/Su Kuşları Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

Genel olarak, verilerin nasıl dağıldığını hızlıca görmek için önceki derste yaptığımız gibi bir dağılım grafiği kullanabilirsiniz:

birds.plot(kind='scatter',x='MaxLength',y='Order',figsize=(12,8))

plt.title('Max Length per Order')
plt.ylabel('Order')
plt.xlabel('Max Length')

plt.show()

maksimum uzunluk per takım

Bu, kuşların takımlarına göre genel vücut uzunluğu dağılımına bir genel bakış sunar, ancak gerçek dağılımları göstermek için en uygun yol değildir. Bu görev genellikle bir Histogram oluşturarak gerçekleştirilir.

Histogramlarla Çalışma

Matplotlib, Histogramlar kullanarak veri dağılımını görselleştirmek için çok iyi yollar sunar. Bu tür bir grafik, dağılımın çubukların yükselip alçalmasıyla görülebildiği bir çubuk grafik gibidir. Bir histogram oluşturmak için sayısal verilere ihtiyacınız vardır. Histogram oluşturmak için, grafik türünü 'hist' olarak tanımlayarak bir grafik çizebilirsiniz. Bu grafik, tüm veri setinin sayısal veri aralığı için MaxBodyMass dağılımını gösterir. Verileri daha küçük bölmelere ayırarak, verilerin değerlerinin dağılımını gösterebilir:

birds['MaxBodyMass'].plot(kind = 'hist', bins = 10, figsize = (12,12))
plt.show()

tüm veri seti üzerindeki dağılım

Gördüğünüz gibi, bu veri setindeki 400'den fazla kuşun çoğu, Max Body Mass için 2000'in altında bir aralığa düşmektedir. bins parametresini daha yüksek bir sayıya, örneğin 30'a değiştirerek veriler hakkında daha fazla bilgi edinin:

birds['MaxBodyMass'].plot(kind = 'hist', bins = 30, figsize = (12,12))
plt.show()

daha büyük bölme parametresiyle tüm veri seti üzerindeki dağılım

Bu grafik, dağılımı biraz daha ayrıntılı bir şekilde gösterir. Daha az sola eğimli bir grafik, yalnızca belirli bir aralıktaki verileri seçerek oluşturulabilir:

Verilerinizi filtreleyerek vücut kütlesi 60'ın altında olan kuşları alın ve 40 bins gösterin:

filteredBirds = birds[(birds['MaxBodyMass'] > 1) & (birds['MaxBodyMass'] < 60)]      
filteredBirds['MaxBodyMass'].plot(kind = 'hist',bins = 40,figsize = (12,12))
plt.show()     

filtrelenmiş histogram

Diğer filtreleri ve veri noktalarını deneyin. Verilerin tam dağılımını görmek için, ['MaxBodyMass'] filtresini kaldırarak etiketli dağılımları gösterin.

Histogram, bazı güzel renk ve etiketleme geliştirmeleri de sunar:

İki dağılım arasındaki ilişkiyi karşılaştırmak için 2D bir histogram oluşturun. MaxBodyMass ve MaxLength'i karşılaştıralım. Matplotlib, daha parlak renkler kullanarak yakınsama göstermenin yerleşik bir yolunu sunar:

x = filteredBirds['MaxBodyMass']
y = filteredBirds['MaxLength']

fig, ax = plt.subplots(tight_layout=True)
hist = ax.hist2d(x, y)

Bu iki eleman arasında beklenen bir eksen boyunca bir korelasyon olduğu ve bir noktada özellikle güçlü bir yakınsama olduğu görülüyor:

2D grafik

Histogramlar, varsayılan olarak sayısal veriler için iyi çalışır. Peki ya metin verilerine göre dağılımları görmek isterseniz?

Veri setini metin verileri kullanarak dağılımlar için keşfetme

Bu veri seti ayrıca kuş kategorisi, cinsi, türü ve ailesi ile koruma durumu hakkında iyi bilgiler içerir. Bu koruma bilgilerini inceleyelim. Kuşların koruma durumlarına göre dağılımı nedir?

Veri setinde, koruma durumunu tanımlamak için birkaç kısaltma kullanılmıştır. Bu kısaltmalar, türlerin durumunu kataloglayan bir organizasyon olan IUCN Kırmızı Liste Kategorileri tarafından sağlanmıştır.

  • CR: Kritik Tehlike Altında
  • EN: Tehlike Altında
  • EX: Soyu Tükenmiş
  • LC: En Az Endişe
  • NT: Tehdit Altında
  • VU: Hassas

Bunlar metin tabanlı değerlerdir, bu nedenle bir histogram oluşturmak için bir dönüşüm yapmanız gerekecektir. FilteredBirds veri çerçevesini kullanarak, koruma durumunu Minimum Kanat Açıklığı ile birlikte görüntüleyin. Ne görüyorsunuz?

x1 = filteredBirds.loc[filteredBirds.ConservationStatus=='EX', 'MinWingspan']
x2 = filteredBirds.loc[filteredBirds.ConservationStatus=='CR', 'MinWingspan']
x3 = filteredBirds.loc[filteredBirds.ConservationStatus=='EN', 'MinWingspan']
x4 = filteredBirds.loc[filteredBirds.ConservationStatus=='NT', 'MinWingspan']
x5 = filteredBirds.loc[filteredBirds.ConservationStatus=='VU', 'MinWingspan']
x6 = filteredBirds.loc[filteredBirds.ConservationStatus=='LC', 'MinWingspan']

kwargs = dict(alpha=0.5, bins=20)

plt.hist(x1, **kwargs, color='red', label='Extinct')
plt.hist(x2, **kwargs, color='orange', label='Critically Endangered')
plt.hist(x3, **kwargs, color='yellow', label='Endangered')
plt.hist(x4, **kwargs, color='green', label='Near Threatened')
plt.hist(x5, **kwargs, color='blue', label='Vulnerable')
plt.hist(x6, **kwargs, color='gray', label='Least Concern')

plt.gca().set(title='Conservation Status', ylabel='Min Wingspan')
plt.legend();

kanat açıklığı ve koruma durumu

Minimum kanat açıklığı ile koruma durumu arasında iyi bir korelasyon görünmüyor. Bu yöntemi kullanarak veri setinin diğer öğelerini test edin. Farklı filtreler de deneyebilirsiniz. Herhangi bir korelasyon buluyor musunuz?

Yoğunluk Grafikleri

Şimdiye kadar incelediğimiz histogramların 'basamaklı' olduğunu ve düzgün bir yay şeklinde akmadığını fark etmiş olabilirsiniz. Daha düzgün bir yoğunluk grafiği göstermek için bir yoğunluk grafiği deneyebilirsiniz.

Yoğunluk grafikleriyle çalışmak için, yeni bir çizim kütüphanesi olan Seaborn ile tanışın.

Seaborn'u yükleyerek, temel bir yoğunluk grafiği deneyin:

import seaborn as sns
import matplotlib.pyplot as plt
sns.kdeplot(filteredBirds['MinWingspan'])
plt.show()

Yoğunluk grafiği

Bu grafiğin, Minimum Kanat Açıklığı verileri için önceki grafiği yankıladığını görebilirsiniz; sadece biraz daha düzgün. Seaborn'un belgelerine göre, "Bir histogramla karşılaştırıldığında, KDE birden fazla dağılım çizerken daha az karmaşık ve daha anlaşılır bir grafik üretebilir. Ancak, altta yatan dağılım sınırlı veya düzgün değilse bozulmalar yaratma potansiyeline sahiptir. Bir histogram gibi, temsilin kalitesi de iyi bir yumuşatma parametresi seçimine bağlıdır." kaynak Başka bir deyişle, her zaman olduğu gibi aykırı değerler grafiklerinizi kötü etkileyebilir.

İkinci grafikte oluşturduğunuz o keskin MaxBodyMass çizgisini yeniden ziyaret etmek isterseniz, bu yöntemi kullanarak onu oldukça iyi bir şekilde düzeltebilirsiniz:

sns.kdeplot(filteredBirds['MaxBodyMass'])
plt.show()

düzgün vücut kütlesi çizgisi

Çok düzgün olmayan ama yine de düzgün bir çizgi istiyorsanız, bw_adjust parametresini düzenleyin:

sns.kdeplot(filteredBirds['MaxBodyMass'], bw_adjust=.2)
plt.show()

daha az düzgün vücut kütlesi çizgisi

Bu tür grafik için mevcut parametreler hakkında okuyun ve deneyin!

Bu tür grafikler, açıklayıcı görselleştirmeler sunar. Örneğin, birkaç satır kodla, kuş Takımlarına göre maksimum vücut kütlesi yoğunluğunu gösterebilirsiniz:

sns.kdeplot(
   data=filteredBirds, x="MaxBodyMass", hue="Order",
   fill=True, common_norm=False, palette="crest",
   alpha=.5, linewidth=0,
)

takımlara göre vücut kütlesi

Ayrıca, bir grafikte birden fazla değişkenin yoğunluğunu eşleyebilirsiniz. Bir kuşun MaxLength ve MinLength'ini koruma durumlarına göre test edin:

sns.kdeplot(data=filteredBirds, x="MinLength", y="MaxLength", hue="ConservationStatus")

birden fazla yoğunluk, üst üste

Belki de 'Hassas' kuşların uzunluklarına göre kümelenmesinin anlamlı olup olmadığını araştırmaya değer.

🚀 Zorluk

Histogramlar, temel dağılım grafikleri, çubuk grafikler veya çizgi grafiklerden daha sofistike bir grafik türüdür. İnternette histogramların iyi kullanımlarını bulmak için bir arama yapın. Nasıl kullanılıyorlar, neyi gösteriyorlar ve hangi alanlarda veya araştırma konularında kullanılma eğilimindeler?

Ders Sonrası Test

Gözden Geçirme ve Kendi Kendine Çalışma

Bu derste, Matplotlib kullandınız ve daha sofistike grafikler göstermek için Seaborn ile çalışmaya başladınız. Seaborn'daki kdeplot hakkında araştırma yapın, "bir veya daha fazla boyutta sürekli olasılık yoğunluğu eğrisi". Belgeleri okuyarak nasıl çalıştığını anlayın.

Ödev

Becerilerinizi uygulayın


Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belgenin kendi dilindeki hali yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.