Professional Documents
Culture Documents
İstanbul Üniversitesi
Açık ve Uzaktan Eğitim Fakültesi
Veri Bilimi
DOÇ. DR. NUMAN ÇELEBİ
about:blank 1/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
İÇİNDEKİLER
about:blank 2/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlamadan Önce
Veri Bilimi kitabının ilk bölümü olan bu bölümde, Veri Bilimi ile ilgili genel bilgiler verilecektir. Günümüzde
çok popüler olan bu bilim dalı yalnız başına çalışan bir yapıya sahip değildir. Bunun sebebi Veri Bilimi’nin
birden fazla bilim dalının kesişmesinden oluşan ve birden fazla bilim dalını içine alan bir bilim dalı olmasından
kaynaklanır. Dolayısıyla okuyucuların iyi bir veri bilimci olması için bu kesişen bilim dalları hakkında temel
bilgilere sahip olması gerekir. Temel kavramları içselleştiren bir kimse veri bilimi projelerinde daha başarılı
sonuçlar elde eder.
Bu bölümde ilk olarak Veri Bilimi’nin ne olduğunu öğrenmeye başlamadan önce bilinmesi gereken bazı teknik
[2]
ve temel kavramlar aşağıda kısaca açıklanmıştır .
1. Makine Öğrenimi
Makine öğrenimi (Machine Learning-ML), veri biliminin bel kemiğidir. Veri Bilimciler, temel istatistik
bilgilerine ek olarak makine öğrenimi hakkında sağlam bir bilgiye sahip olmalıdır. ML veriyi analiz etmek için
kullanılan algoritmaları kapsar.
2. Modelleme
Matematiksel modeller, veriler hakkında bilgilere dayanarak hızlı hesaplamalar ve tahminler yapmaya imkân
sağlar. Modelleme aynı zamanda makine öğreniminin bir parçasıdır ve belirli bir problemi çözmek için hangi
algoritmanın en uygun olduğunu ve bu modellerin nasıl eğitileceğini belirlemeyi içerir.
3. İstatistik
İstatistik, veri biliminin merkezinde yer alır. İstatistik bilgisi olmadan Veri Bilimi yapılamaz. Algoritmalardan
elde edilen çıktılar istatistiksel yöntemler kullanılarak anlamlandırılır. İstatistik analizler sonucu kullanılan
verilerden daha zeki, yararlı sonuçlar elde edilir.
about:blank 3/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
4. Programlama
Başarılı bir veri bilimi projesini yürütmek için bir miktar programlama gereklidir. Veri biliminde kullanılan en
yaygın programlama dilleri Python ve R’dir. Python özellikle popüler bir dildir. Çünkü öğrenmesi kolaydır ve
veri bilimi ve makine öğrenimi için birçok kütüphaneye/kitaplığa sahiptir.
5. Veri Tabanları
Başarılı/yetenekli bir veri bilimci olmak için, veri tabanlarının nasıl çalıştığını, nasıl yönetileceğini ve onlardan
nasıl veri çıkarılacağı konusunda bilgi sahibi olmak gerekir. Veri Tabanları, bir sorgulama diline sahip olan ve
birçok yazılımla birlikte kullanılan verilerin tutulması, saklanması, kaydedilmesi, filtrelenmesi ve sorgulanması
ve kullanılması amacıyla geliştirilmiş olan sistemlerdir. Günümüzde farklı firmaların geliştirdiği çok sayıda Veri
Tabanı Sistemleri vardır. Bunlar arasında en sık kullanılan Microsoft SQL Server, MySql, Oracle ve Postrage
SQL vb. sistemlerdir.
1. Regresyon
Regresyon, denetimli öğrenme tekniklerine dayalı bir makine öğrenmesi algoritmasıdır. Girdi özniteliklerinin bir
fonksiyon ile temsil edilerek, çıktı özniteliklerinin tahmin edilmesine imkân veren bir modeldir. Regresyon
çıktısı gerçek veya sürekli bir değer olabilir. Örneğin, bir odanın sıcaklığını tahmin etmek gibi.
2. Kümeleme
Kümeleme, denetimsiz öğrenme tekniklerine dayalı bir makine öğrenimi algoritmasıdır. Bir dizi etiketlenmemiş
veri noktası üzerinde çalışır ve her veri noktasını bir kümede gruplandırır.
3. Karar Ağacı
Karar ağacı, öncelikle sınıflandırma için kullanılan denetimli bir öğrenme yöntemini ifade eder. Algoritma, çeşitli
girdileri belirli bir parametreye göre sınıflandırır. Bir karar ağacının en önemli avantajı, anlaşılmasının kolay
olması ve sınıflandırılmasının nedenini açıkça göstermesidir.
Destek vektör makineleri (SVM'ler) öncelikle sınıflandırma ve regresyon modelleri için kullanılan denetimli bir
öğrenme yöntemidir. Ancak çoğunlukla sınıflandırma problemlerinde kullanılır. SVM'ler ile hem doğrusal hem
de doğrusal olmayan sınıflandırmalar gerçekleştirebilir.
5. Naive Bayes
Naive Bayes, ikili ve çok sınıflı sınıflandırma problemleri için en iyi kullanılan istatistiksel olasılık tabanlı bir
sınıflandırma yöntemidir. Elinizde eğitilmiş bulunan verileri kendi formülüne göre işler ve her durum için
yüzdelik bir oran çıkarır. Daha sonra girilen test verisini bu çıkan olasılıklara göre sınıflandırır.
Veri Bilimi’nin ne olduğunu daha iyi kavramak için veri biliminin iş zekâsından nasıl farklılaştığını anlamak
[4]
gerekir. Bunu daha iyi açıklayabilmek için bu bölümde bir veri bilimi projesinin yaşam döngüsüne dâhil olan
aşamaların ayrıntılı açıklaması verilmiştir.
1. Kavram Çalışması
Bir veri bilimi projesinin ilk aşaması, kavram çalışmasıdır. Bu adımın amacı, iş modeli üzerinde bir çalışma
yaparak sorunu anlamaktır. Örneğin, 1,35 karatlık bir elmasın fiyatının tahmin edilmeye çalışıldığını varsayalım.
Bu durumda, ilk olarak sektörde kullanılan terminolojiyi öğrenmek gerekir. Yani sektörün çalışma yapısını
anlamak lazımdır. Daha sonra sektör hakkında yeterince ilgili veriyi toplamaya geçilir.
about:blank 4/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
2. Veri Hazırlama
Ham veriler veri bilimi projelerinde direkt olarak kullanılamaz. Bundan dolayı veri hazırlama, veri bilimi yaşam
döngüsünün en önemli adımını oluşturur. Veri bilimcisi, herhangi bir değer katmayan boşlukları veya verileri
belirlemek için önce verileri inceler. Bu işlem sırasında, aşağıdaki adımların bazılarına ihtiyaç duyar:
Veri Entegrasyonu
Veri entegrasyonu, farklı kaynaklardan gelen verileri tek bir veri setinde bütünleştirme uygulamasıdır. Nihai
amaç, kullanıcılara konulara ve yapı türlerine bağlı olarak tutarlı veri erişimi sağlamaktır. Bu sayede tüm
uygulamaların ve iş süreçlerinin veri ihtiyaçlarını karşılamaktır. Veri entegrasyon süreci, genel veri yönetimi
sürecinin ana bileşenlerinden biridir ve büyük veri entegrasyonu ve mevcut verileri paylaşma ihtiyacı artmaya
devam ettikçe artan sıklıkta kullanılmaktadır.
Veri Dönüşümü
ETL (ayıklama, dönüştürme, yükleme) işleminde farklı kaynaklardan gelen veri kümelerinin kopyaları bir araya
toplanır, uyumlu hale getirilir ve bir veri tabanına yüklenir
Veri Azaltma
Çeşitli stratejiler kullanarak, kaliteyi veya sonucu etkilemeden veri boyutunun azaltılması işlemidir.
Veri temizleme
Eksik değerli kayıtlar doldurularak ve gürültülü veriler düzeltilerek tutarsız verilerin düzeltilmesi işlemidir.
3. Model Planlama
Veriler temizlendikten sonra uygun bir model seçilir. İstenen model problemin doğasına uygun olmalıdır. Ele
alınan problem bir regresyon problemi mi yoksa bir sınıflandırma problemi mi olduğuna karar verilir/tespit edilir.
Bu adım aynı zamanda verilerin daha derinlemesine bir analizini sağlamak ve değişkenler arasındaki ilişkiyi
anlamak için Keşifsel Veri Analizi (EDA) sürecini içerir. Keşifsel veri analizi (EDA) için histogramlar, kutu
grafikleri ve trend analizi gibi bazı teknikler kullanılır. Örneğin bu teknikleri kullanarak, bir karat ile bir elmasın
fiyatı arasındaki ilişkinin Şekil 1’deki gibi doğrusal olduğu gösterilebilir.
Ardından, veriler eğitim ve test olmak üzere iki bölüme ayrılır. Modeli eğitmek için eğitim verileri ve modeli
doğrulamak için test verileri kullanılır. Test sonuçları doğru çıkmaz ise, başka bir model kurarak, modelin
yeniden eğitilmesi gerekir. Eğer test sonuçları doğru ise/geçerliyse kurulan model farklı veri setleri için
kullanılabilir. Model planlama için kullanılan çeşitli araçlar vardır:
about:blank 5/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Burada veri biliminde model planlamada açık kaynak kodlu ve ticari olarak kullanılan araçlar birer cümle ile
açıklanmıştır.
Ayrıntılı analiz için görselleştirme dahil olmak üzere hem normal istatistiksel analiz hem de öğrenme analizi için
kullanılabilir.
Python
Veri analizi ve makine öğrenimi gerçekleştirmek için zengin bir kitaplık/kütüphaneye sahiptir.
Matlab
SAS
Eksiksiz bir istatistiksel analiz gerçekleştirmek için gereken tüm bileşenlere sahip güçlü tescilli bir araçtır
5. Model Oluşturma
Yaşam döngüsündeki bir sonraki adım, modeli oluşturmaktır. Çeşitli analitik araçları ve teknikleri kullanarak,
yararlı bilgileri "keşfetmek" amacıyla veriler işlenir. Örneğin, elimizdeki 1,35 karatlık bir elmasın fiyatını tahmin
etmek istiyoruz. Elimizdeki fiyatlandırma verilerini kullanarak, 1,35 karatlık bir elmasın fiyatını tahmin etmek
için onu Şekil 2’deki gibi doğrusal bir regresyon modeline bağlayabiliriz.
Doğrusal regresyon, iki değişken ve arasındaki ilişkiyi tanımlar. Regresyon çizgisi çizildikten sonra,
aşağıdaki formülü kullanarak bir girdisi değeri için bir değeri tahmin edebiliriz:
about:blank 6/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Modelin doğru çalıştığı doğrulandıktan sonra, bir sonraki düzeye, yani kullanıma geçilir. Değilse, modeli daha
fazla veriyle yeniden eğitmek veya daha yeni bir model veya algoritma kullanmak ve ardından işlemi
tekrarlamak gerekir. Python dilinde Pandas, Matplotlib ve NumPy gibi kitaplıklar kullanarak modeller
oluşturulabilir.
6. İletişim
Bir sonraki adım, çalışmanın temel bulgularını almak ve bunları paydaşlara iletmektir. İyi bir veri bilimci,
bulgularını, sorunu çözmek için atılan adımlarla ilgili ayrıntılar da dâhil olmak üzere iş odaklı kullanıcı kitlesi ile
paylaşması gerekir.
Bölüm Özeti
∙ Veriler, günümüzde işletmelerin en önemli kaynakları haline gelmiştir. Çünkü veriler iş yöneticilerinin
gerçeklere, istatistiksel sayılara ve eğilimlere dayalı kararlar almasına yardımcı olur.
∙ Gelişen teknolojiyle birlikte artan verilerin işlenebilmesi için veri bilimi multidisipliner bir alan olarak ortaya
çıktı. Veri Bilimi büyük miktarda veriden bilgi ve öngörü elde etmek için bilimsel yaklaşımlar, prosedürler ve
algoritmalar kullanır.
∙ Veri Bilimi, ayrıca gerçek olayları verilerle anlamak ve incelemek için fikirleri, veri incelemesini, Makine
Öğrenimini ve bunlarla ilgili stratejileri bir araya getiren bir kavramdır.
∙ Veri Bilimi, veri madenciliği, istatistik, tahmine dayalı analiz gibi çeşitli veri analizi alanlarının bir
uzantısıdır. Başka bir ifade ile Veri Bilimi, istatistik, matematik ve bilgisayar bilimi gibi diğer alanlara ait birçok
yöntem ve kavramı kullanan geniş bir alandır.
Kaynakça
WEB: https://www.omnisci.com/learn/data-science
WEB: https://towardsdatascience.com/intro-to-data-science-531079c38b22
WEB: https://www.simplilearn.com/tutorials/data-science-tutorial/what-is-data-science
WEB: https://www.analyticsvidhya.com/blog/2017/09/common-machine-learning-algorithms/
[1]
https://www.omnisci.com/learn/data-science
[2]
https://www.simplilearn.com/tutorials/data-science-tutorial/what-is-data-science
[3]
https://www.analyticsvidhya.com/blog/2017/09/common-machine-learning-algorithms/
[4]
https://www.educba.com/machine-learning-life-cycle/
about:blank 7/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Ünite Soruları
Soru-1 :
Aşağıdakilerden hangisi Veri Bilimi ile ilişkili bir bilim dalı değildir?
(Çoktan Seçmeli)
(A) İstatistik
(B) Veritabanı
(D) Tarih
Cevap-1 :
Tarih
Soru-2 :
(Çoktan Seçmeli)
(A) Modelleme
(B) Programlama
(C) Fizik
(D) Veritabanları
Cevap-2 :
Fizik
Soru-3 :
(Çoktan Seçmeli)
Cevap-3 :
Soru-4 :
(Çoktan Seçmeli)
(A) İstatistik
(B) Regresyon
Cevap-4 :
İstatistik
Soru-5 :
(Çoktan Seçmeli)
(A) R
(B) SAS
(C) C#
(D) Matlab
Cevap-5 :
C#
Soru-6 :
Aşağıdakilerden hangisi veri bilimi araçlarından bir olan veritabanlarına örnek olan bir sistem değildir?
(Çoktan Seçmeli)
(A) Oracle
(B) Python
(D) MySQL
Cevap-6 :
Python
Soru-7 :
about:blank 9/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(A) 3
(B) 4
(C) 6
(D) 1
Cevap-7 :
Soru-8 :
Aşağıdaki adımlardan hangisi veri bilimi proje yaşam döngüsü içerisinde yapılan işlemlerden biri değildir?
(Çoktan Seçmeli)
(C) Raporlama
(D) İletişim
Cevap-8 :
Raporlama
Soru-9 :
Aşağıda verilenlerden hangisi Veri biliminde yapılan kavram çalışmasının amaçlarından biri değildir?
(Çoktan Seçmeli)
Cevap-9 :
Soru-10 :
(Çoktan Seçmeli)
about:blank 10/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(B) Kümeleme
(C) Regresyon
Cevap-10 :
Kümeleme
about:blank 11/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlamadan Önce
Veri Bilimi uygulamaları için bir geliştirme aracına ihtiyaç vardır. Veri Bilimi için hangi programlama aracının
en uygun olduğu konusunda tartışmalar devam etmektedir. Ancak şunu unutmamak gerekir bir veri bilimi
projesi için tüm kütüphaneleri ve çözümleri içinde barındıran tek bir araç yoktur. Veri Bilimci ihtiyaçlarına göre
farklı veri bilimi araçlarını zaman zaman birlikte kullanmak zorunda kalabilir.
Bu kitap kapsamında Veri Bilimi aracı olarak Python programlama dili kullanılacaktır. Bu programın sahip
olduğu zengin kütüphaneler sayesinde veri bilimi problemlerine hızlı çözüm üretilebilmektedir. Bu bölümde bu
programlama dili için gerekli olan araçlar ve kurulumları anlatılacaktır.
Python kodları ve veri bilimi uygulamalarının denenmesi için IDE (Integrated Development Environment –
Tümleşik Geliştirme Ortamı) olarak adlandırılan bir ortama ihtiyaç vardır. Bu kitap kapsamında IDE ortamı
olarak kolaylığı ve kullanışlılığı sebebiyle veri biliminde yaygın kullanım alanı bulan Jupyter Notebook
kullanılacaktır. Bu bölümde bu çalışma kitabının kendi bilgisayarınızda nasıl aktif edileceği açıklanmıştır.
zorluklar çıkarmaktadır. Python’da bu tür zorunluluklar olmadığı gibi yapısı itibariyle diğer dillere göre daha
sadedir. Python, söz dizimi açısından algoritma tabanlı bir dil olup C veya C++ gibi veri yapısı tabanlı bir dil
değildir. Python öğrenmek, önceden kodlama deneyimi olan ve deneyimi olmayanlar kişiler için de uygun bir
dildir.
Ayrıca Python, belirli bir geliştirici topluluğuna ve öğretici dokümana sahip olmuştur. Python ile program
[3]
geliştirirken karşılaşmanız muhtemel olan birçok sorunun cevabı “stackoverflow.com” gibi sitelerde
bulunmaktadır. Bu da Python’u öğrenirken hızlı ilerlemenize imkân sağlar. Python, Microsoft, Linux ve Mac OS
X üzerinde çalışabilen ve PyPI ile diğer dillerle etkileşimi sağlayan bir dildir. En önemlisi de Google, Python'u
resmi programlama dili olarak ilan etmesi onun ne kadar önemli bir dil olduğunu göstermektedir. Ancak, Java ve
C’ye göre daha yavaş çalışır.
Python'un veri analizi için neden bu kadar önemli olduğunu incelemeden önce, veri analizi ile Veri Bilimi
arasındaki ilişkiyi kurmak önemlidir. Çünkü Veri Bilimi programlama dilinden büyük ölçüde yararlanma
eğilimindedir. Başka bir deyişle, Python'un Veri Bilimi için yararlı olmasının birçok nedeni, aynı zamanda veri
analizi için uygun olmasının da nedenlerini oluşturur.
Veri analistleri, sonuçları analiz etmekten ve raporlar oluşturmaktan sorumludur. Veri analistleri, kendilerine
sunulan soruları yanıtlamak için verileri kullanarak günlük işleri kotarırken, Veri bilimcileri geleceği tahmin
etmeye ve bu tahminleri yeni sorularla çerçevelemeye çalışır. Başka bir deyişle, veri analistleri günlük işlere
odaklanırken, veri bilimcileri ise olabilecekleri tahmin etmeye çalışır. Her iki meslek de yazılım mühendisliği
bilgisi, temel matematik bilgisi ve algoritmaların anlaşılmasını gerektirir. Dahası, her iki meslek de R, SQL ve
tabii ki Python gibi programlama dilleri bilgisine ihtiyaç duyar. Sonuç olarak, bir veri bilimcisinin ideal olarak
güçlü bir problem çözme zekâsına sahip olması gerekirken, veri analistinin Excel ve Tablue gibi araçları
kullanabilme konusunda yetkin olmalıdır.
Görsel 1.
Anaconda
kurulum ve
sürüm seçim
ekranı
Açılan ‘Your
data science
toolkit’ ekranın
altında yer alan
“Download”
düğmesine basılıyor.
Görsel 2.
Anaconda
kurulumu için
seçilen
sürümün
yükleme
ekranı
Açılan
pencerede
işletim
sistemlerine ve
işlemcinizin
about:blank 13/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(64 bit- 32 bit) durumuna göre Görsel 5’te gösterilen ilgili sekme tıklanır. Bu işlemden sonra program
bilgisayarınızda belirttiğiniz bir klasöre yüklenmeye başlayacak ve kuruluma geçecektir.
Görsel 3.
İşletim sistemi
ve işlemciye
göre kurulacak
sürümün seçim
ekranı
2.4.
Python
Görsel 4.
Jupiter
Notebook’un
görev
çubuğuna
sabitlenmesi
Bu sayede
Python ve Veri
Bilimi
öğrenme
sürecinde
geliştirme
ortamı olarak
kullanılacak
olan araca
daha hızlı
erişim sağlanır.
Bunun için
sadece görev
çubuğunda
sabitlenmiş
olan Jupyter Notebook simgesine tıklanır (Görsel 5).
Görsel 5.
Jupyter
Notebook
geliştirme
ortamının çalıştırılması
Daha sonra aşağıda verilen ekran görüntüsüne ulaşmış oluruz (Görsel 6).
Bu ekranın sağ üst köşesinde yer “New” sekmesine tıklanır ve aşağı doğru açılan pencereden “Python3”
seçilerek tıklanır (Görsel 7).
about:blank 14/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bu aşamadan sonra kitap boyunca anlatılacak örneklerin kodlandığı ve denendiği aşağıdaki şekilde gösterilen
bütünleşik Jupyter Notebook geliştirme ortamına erişilmiş olunur (Görsel 8).
Bölüm Özeti
∙ Son yıllarda programlama dillerine artan ilgi, programlamanın belirli uzmanlıkta olan kişiler yanında bu
alanda herhangi bir ön bilgisi olmayan kişilerin de anlayabilecekleri seviyede yazılımların geliştirilmesini
zorunlu kılmıştır.
∙ Python, mevcut programlama dilleri arasında en sade ve anlaşılması en kolay yazılım olması sebebiyle son
yıllarda gittikçe artan bir kullanıcı kitlesine sahip olmuştur.
∙ Python’un bu denli geniş bir kullanıcı kitlesine sahip olması, yazılımın üreticilerinin yanı sıra kullanıcılarının
da yazılımın nasıl kullanılacağı konusunda yol gösterici olmalarına imkân sağlamıştır. Kullanıcılar, birbirleriyle
iletişime geçerek sorunlarını kendi aralarında çözebilmektedirler.
∙ Python’un bu denli ve sade bir yapıya sahip olması, aynı zamanda onu Veri Bilimi açısından da oldukça
faydalı ve kullanışlı bir yazılım haline getirmiştir.
Kaynakça
İlker Arslan, “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019
WEB: https://www.anaconda.com/
Sibel AKBIYIK (Editör), “Python Eğitimi, Herkes için Python Programlama Dili”, Millî Eğitim Bakanlığı
Öğretmen Yetiştirme ve Geliştirme Genel Müdürlüğü Yayını, 2020
about:blank 15/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
[1]
https://www.python.org
[2]
https://pub.towardsai.net/why-python-is-the-perfect-language-for-a-machine-learning-project-c163277d0eff
[3]
https://www.stackoverflow.com/
[4]
https://www.anaconda.com/
Ünite Soruları
Soru-1 :
Aşağıda verilen tarihlerden hangisi Python dilinin ortaya çıkışı olarak kabul edilir?
(Çoktan Seçmeli)
(A) 1980
(B) 1995
(C) 1999
(D) 1990
Cevap-1 :
1990
Soru-2 :
(Çoktan Seçmeli)
(A) https://www.python1.org/
(B) https://www.python.org/
(C) https://www.python.net/
(D) https://www.python.io/
Cevap-2 :
https://www.python.org/
Soru-3 :
(Çoktan Seçmeli)
about:blank 16/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-3 :
Soru-4 :
Aşağıda verilen ifadelerden hangisi Veri Analistleri için doğru bir söylemdir?
(Çoktan Seçmeli)
Cevap-4 :
Soru-5 :
(Çoktan Seçmeli)
Cevap-5 :
Individual Edition
Soru-6 :
(Çoktan Seçmeli)
(A) Windows.
(B) Linux
(C) Netware
about:blank 17/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(D) MacOS
Cevap-6 :
Netware
Soru-7 :
(Çoktan Seçmeli)
Cevap-7 :
Soru-8 :
(Çoktan Seçmeli)
Cevap-8 :
Python 3.9
Soru-9 :
Aşağıdaki şıklardan hangisi Windows, MacOS ve Linux tarafından desteklenen işlemci türüdür.?
(Çoktan Seçmeli)
(A) 16 bit
(B) 32 bit
(C) 64 bit
(D) 48 bit
Cevap-9 :
about:blank 18/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
64 bit
Soru-10 :
Aşağıdaki şıklardan hangisi sadece Windows işletim sistemi tarafından desteklenen işlemci türüdür.?
(Çoktan Seçmeli)
(A) 32 bit
(B) 64 bit
(C) 48 bit
(D) 16 bit
Cevap-10 :
32 bit
about:blank 19/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlamadan Önce
Veriler sürekli olarak artmaktadır. Bu verilerin işlenmesi ve anlamlı hale getirilmesi için araçlara ihtiyaç vardır.
Geleneksel programlama araçlarının birçoğu bu verileri işlemek için gerekli özelliklere ve veri yapılarına sahip
değildir. Bundan dolayı veri bilimi yapmak için bir araca/tool’a ihtiyaç vardır. Bu bölümde bu araçlardan olan
Python diline özgü veri yapılarından en önemlisi olan Liste yapısı detaylı bir şekilde örneklerle açıklanmıştır.
Bunun için sağdaki örnekleri inceleyelim. Python'da ilk olarak sayısal tipe atfen "s" adlı bir değişkeni tanımlayıp
içeriğine sayısal bir değer aktarılmıştır. Daha sonra metinsel tipe atfen "m" adlı bir değişken tanımlayıp içeriğine
metinsel bir değer aktarılmıştır. Metinsel ifadeler; " " çift tırnak içerisinde yazılır. Değişkenlere değer atama
işlemi genelde sağdan sola doğru olup; atama işlemi için “=” işareti kullanılır.
Yukarıdaki ekran görüntülerine dikkat edilirse bazı satırlar yeşil olarak gözükmektedir. Bu satırlar açıklama
satırları olup program çalıştırılınca dikkate alınmaz. Python dilinde açıklama satırları # işareti kullanılarak
oluşturulur. Buna göre yukarıdaki birinci ekranda sadece 3. satırda yer alan s=100 komutu; ikinci ekranda ise
sadece 4. Satırda yer alan m=“Veri Bilimi” komutu değerlendirmeye alınır.
Belirtilen değişkenlere değerlerin atanması işleminin gerçekleşmesi için programın çalıştırılması (run) gerekir.
Bunun için aşağıdaki ekranda gözüken Jupyter NoteBook ara yüzü üst kısmında bulunan ►işaretine basmak
gerekir (Görsel 2).
about:blank 20/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Görsel 2.
Yazılan
programın
çalıştırılması
(run edilmesi)
Değişken
değerlerinin
ekranda
görüntülenmesi ya da çıktı işlemi için print() fonksiyonu kullanılır. Parantez içerisine, ekrana yazdırılacak
değişken adı girilir. Ya da değişken adları teker teker yazdırılıp çalıştırıldıktan sonra değişken değerleri ekrana
yazdırılmış olur. Aşağıda verilen Görsel 3’teki ekran çıktısında; Görsel 1’de tanımlanmış olan “s” ve “m”
değişkenleri her iki yöntem kullanılarak ekrana yazdırılmıştır:
about:blank 21/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Liste, sıralı bir öğe dizisidir. Ancak liste farklı veri türlerini içerebilir. Yani bir listedeki tüm öğelerin aynı türde
olması gerekmez. Bu özelliği ile liste, Python'da en çok kullanılan veri yapılarından biri olup esnek bir yapıya
[3]
sahiptir . Listeler ile birden fazla numarayı, metni veya farklı veri tipini aynı değişken yapı içerisinde saklamak
mümkündür. Liste [ ] köşeli parantez kullanılarak oluşturulur. Listelerde veriler [ ] içerisinde yer alır ve
virgüllerle ayrılırlar. Aşağıdaki ekran görüntüsünde (Görsel 5) “liste”1 adı ile oluşturulmuş bir liste örneği yer
almaktadır:
Python’da liste elemanlarına erişim indis değeri ile gerçekleşmektedir. Python’da indis değerleri 0’dan başlar.
Erişilmek istenen indis değerine Liste_adı [indis_no] yazılarak erişim sağlanır. Benzer biçimde değişim istenen
elemanın indis değeri girilir. Liste_adı [indis_no] =yeni_deger ve eşitlikten sonra yeni değer yazılır. Aşağıdaki
ekran görüntüsünde (Görsel 6) ilk olarak listenin birinci elemanının (indis değeri=0) değeri ekrana yazdırılmıştır.
Daha sonra bu değer yeni bir değer ile değiştirilmiştir.
Liste uzunluğunu öğrenmek için Len() metodu kullanılır. Listeye eleman eklemek için .append( ) metodu
kullanılır. Listeye eklenecek eleman .append(eklenecek_eleman) tırnak içerisine yazılır. Bu işlemlere ait
örnekler aşağıdaki ekran görüntülerinde Görsel 7 ve Görsel 8’de sırası ile verilmiştir:
about:blank 22/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Birden çok elemana erişmek için : kullanılır. Ardışık elemanları yazmak için indisler [a:b] biçiminde yazılır. Bu
yapıda Python, a ile başlayan fakat b-1 ile biten elemanları göstermektedir. Yani başka bir ifade ile belli aralıkta
elemana erişmek istersek ilk harf başlangıç indisi, son harf ise erişilmek istenen elemanın indis değerinin bir
fazlası olması gerekir.
Aşağıdaki örnekte (Görsel 10) görüldüğü üzere listenin ilk dört elemanına erişmek için, erişilmek istenen eleman
sayısının bir üst değeri olarak indis değeri girilmesi gerekir:
İşaretin başına [:] bir şey yazılmasa başlangıç değeri olarak “0” sıfır alınır. Yani [:b] ile [0:b] aynı anlama
gelmektedir. Bu işlemin tersi de doğrudur. Yani [a:] yazıldığında liste elemanı a indisli değerden başlayıp listenin
about:blank 23/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
son elemanına kadar tümünü yazdırır. Bu ifadeler ekran görüntüsü Görsel 11’de verilen örneklerle açıklanmıştır:
Görsel 11. Başlangıç veya bitiş indisi belirtilmeden istenen sayıda elemana erişmek
Liste elemanlarını belli bir atlama aralığı ile yazdırmak mümkündür. Bu işlem için [a:b:k] formatı kullanılır.
Burada k, liste elemanlarını yazdırırken atlanılacak aralık değerini belirtir (Görsel 12).
Listedeki bir elemanın hangi sırada olduğunu yani indis numarasını öğrenmek için .index() metodu kullanılır.
Aşağıda Görsel 13’te verilen örnekte ilk olarak “adlar” adlı içeriği metinsel olan bir liste oluşturulmuştur. Daha
sonra bu listede yer alana “Hasan” adlı ismin listedeki indis numarası ekrana yazdırılmıştır:
Listede yer alan belli bir sıradaki elemanı silmek için .pop() metodu kullanılır. Silinecek elemanın indis değeri
parantez içerisine yazılır. Aşağıda Görsel 14’te verilen örnekte indis değeri girilen eleman listeden silinmiştir:
about:blank 24/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Listedeki belli bir sıradaki elemanı silmek için ikinci bir metot olarak del() metodu kullanılır. Ancak bunun
kullanımı .pop() metodundan biraz farklıdır. Benzer bir işlemi .remove() metodu ile de yapmak mümkündür.
Aşağıda Görsel 15’te verilen örnekte ilk olarak “final” adlı bir liste oluşturulmuştur. Daha sonra bu listeden indis
değeri 2 olan eleman del() komutu yardımıyla silinmiştir. İkinci örnek ise aynı listeden değeri 77 olan eleman bu
sefer .remove() metodu kullanılarak silinmiştir. Sonuçlar sırası ile ekrana yazdırılmıştır:
Listede yer alan elemanları sıralamak için .sorted() metodu kullanılır. Sıralama işlemi büyükten küçüğe yapmak
için reverse=TRUE argümanı yazılması gerekir. Listedeki elemanları tersten yazdırma için ise .reverse() metodu
kullanılır.
Aşağıda Görsel 16’da verilen örnekte ilk olarak “sıcaklık_değerleri” adlı bir liste oluşturulmuştur. Daha sonra bu
listenin elemanları küçükten büyüğe sıralanmıştır. İkinci örnek sıralama işlemi reverse=TRUE argümanı
kullanılarak büyükten küçüğe doğru gerçekleştirilmiştir. Üçüncü örnekte ise liste elemanları .reverse() metodu
kullanılarak ters çevrilmiştir. Yapılan işlemlerin sonuçları sırası ile ekrana yazdırılmıştır:
about:blank 25/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bölüm Özeti
∙ Sayısal veri tipleri temelde integer ve float olmak üzere iki başlık altında ele alınmaktadır.
∙ Ondalık kısmı bulunmayan, yani içinde virgül bulundurmayan sayıları ifade eden sayısal veri tipi, integer
veri tipidir. Bunun aksine, virgül bulunduran sayıları ifade eden veri tipi ise, float veri tipidir.
∙ Sıralı bir öge dizisi olarak nitelendirilen liste, içerdiği verilerin yeknesak olmasını gerektirmez. Farklı türde
verilerin listenin içeriğinde bulunması mümkündür.
∙ Listenin farklı türde veriler içerebiliyor olması, onu esnek bir yapıya kavuşturmakta, bu sayede de Python da
en sık kullanılan veri yapılarından biri olmaktadır.
Kaynakça
Atıl Samancıoğlu, “Python Sıfırdan Uzmanlığa Programlama”, UniKod, 1. Baskı, 2020
WEB: https://www.w3schools.com/python/python_lists.asp
WEB: https://www.tutorialsteacher.com/python/python-data-types
[1]
Sibel AKBIYIK (Editör), “Python Eğitimi, Herkes için Python Programlama Dili”, Millî Eğitim Bakanlığı
Öğretmen Yetiştirme ve Geliştirme Genel Müdürlüğü Yayını, 2020
[2]
https://www.tutorialsteacher.com/python/python-data-types
about:blank 26/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
[3]
https://www.w3schools.com/python/python_lists.asp
Ünite Soruları
Soru-1 :
150 sayısının Python ‘da bir değişkene atanma biçimi aşağıdaki şıklardan hangisinde doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) k=150.0
(B) k= “150”
(C) k=150
(D) k=(150)
Cevap-1 :
k=150
Soru-2 :
Python’da açıklama satırı yazmak için aşağıdaki hangi işaret satırın başına yazılır?
(Çoktan Seçmeli)
Cevap-2 :
Soru-3 :
z olarak verilen bir değişkenin değerini ekrana yazdırmak için Python’da aşağıda verilen komutlardan hangisi
kullanılır?
(Çoktan Seçmeli)
(A) print(z)
(C) print z
(D) print-z
about:blank 27/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-3 :
print(z)
Soru-4 :
5+5 sayı toplamının veri tipi aşağıdaki şıklardan hangisinde doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) metin
(B) float
(C) string
(D) integer
Cevap-4 :
integer
Soru-5 :
Aşağıdaki şıklarda verilen ifadelerden hangisi Python’a özgü veri yapılarından biri değildir?
(Çoktan Seçmeli)
(A) Tuple
(B) Konteynır
(C) Küme
(D) Sözlük
Cevap-5 :
Konteynır
Soru-6 :
34,44,54,64,74 sayıları Liste veri yapısında oluşturulmak isteniyor. Aşağıda verilen şıklardan hangisi bu işlemi
doğru olarak ifade etmektedir?
(Çoktan Seçmeli)
(A) Liste=(34,44,54,64,74)
(B) Liste={34,44,54,64,74}
(C) Liste=[34.44.54.64.74]
(D) Liste=[34,44,54,64,74]
Cevap-6 :
Liste=[34,44,54,64,74]
about:blank 28/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-7 :
34,44,54,64,74 sayılarının Liste10 adıyla liste veri yapısında oluşturulduğunu kabul edin. Oluşturulan bu listeye
84 nolu sayıyı ekleyecek komut aşağıdaki şıklarda hangisinde doğru olarak verilmiştir.
(Çoktan Seçmeli)
(A) Liste10.append(84)
(B) Liste10.add(84)
(C) Liste10.add[84]
(D) Liste10.append[84]
Cevap-7 :
Liste10.append(84)
Soru-8 :
110,120,130,140,150,160 sayılarının liste biçiminde Liste 20 adıyla tanımladığını göz önüne alın. Liste20[2:4]
komutuyla listenin hangi elemanları gösterilmiş olur?
(Çoktan Seçmeli)
(A) 130,140
(B) 140,150
(C) 130,140,150
(D) 120,130,140
Cevap-8 :
130,140
Soru-9 :
Elemanları 110,120,130,140,150,160 sayılarından oluşan ve Liste30 adıyla oluşturulan bir listeden, 140 sayısını
silen komut aşağıdaki şıklardan hangisinde doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) Liste30.del(140)
(B) del.Liste30(140)
(C) Liste30.remove(140)
(D) Liste30.remove[140]
Cevap-9 :
Liste30.remove(140)
Soru-10 :
about:blank 29/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Elemanları 110,120,130,140,150,160,170 sayılarından oluşan ve Liste40 adıyla bir liste oluşturulduğunu göz
önüne alın. Buna göre del(Liste40[4]) komutu çalıştırılınca aşağıdaki işlemlerden hangisini yapar?
(Çoktan Seçmeli)
Cevap-10 :
about:blank 30/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Sözlük veri yapısının diğer veri yapılarından farklı olarak veriyi nasıl tutar?
Başlamadan Önce
Bir veri bilimci olarak işimiz verilerle uğraşmak. Gerçek dünyada veriler farklı biçimlerde ve yerlerde
tutulmaktadır. Dolayısıyla her verinin saklanacağı veri yapısı farklı olabilmektedir. Veri Biliminde
kullanacağımız araç olan Python diline özgü veri yapılarının özelliklerini iyi bilirsek önümüze çıkacak veri
bilimi problemlerinde verilerin hangi biçimde tutulup işleneceğine daha iyi karar verip daha başarılı sonuçlar
elde edebiliriz.
Öğeler, virgülle ayrılmış olarak parantezlerin () içine yerleştirilerek bir demet (Tuple) oluşturulur. Parantezler
isteğe bağlıdır, ancak bunları kullanmak uygulamada kolaylık sağlar. Bir demet farklı türlerde (integer, float,
liste, string, vb.) öğeye sahip olabilir. Aşağıda Görsel 1’de verilen ekran görüntüsünde ilk olarak float tipinde öğe
içeren bir demet oluşturulmuştur. İkincisinde ise hem metin (string) hem de integer öğe içeren bir tuple nesnesi
oluşturulmuştur.
Bir demetin öğelerine indis numaraları kullanılarak erişim sağlanır. Tuple’da indis numaraları listelerde olduğu
gibi sıfır (0)'dan başlar. Bu nedenle örneğin 6 elemanlı bir demet, 0'dan 5'e kadar indislere sahip olacaktır.
about:blank 31/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Demetteki bir öğeye erişmek için köşeli parantez [ ] içerisine indis numarası olarak bir tam sayı yazılmalıdır.
Float ya da diğer sayı türleri indis numarası olarak kullanılmaz. Aşağıda Görsel 2’de verilen örnekte oluşturulan
tuple2 nesnesinin sıfırıncı ve beşinci indis numaralarına karşılık gelen elemanlar ekrana yazdırılmıştır:
Veri yapılarında değişken ve değişmez türler vardır. Veri nesneleri, işlenmek üzere bir bilgisayarın belleğinde
saklanır. Bu değerlerden bazıları programın çalışması sırasında değiştirilebilir (mutable). Ancak diğerlerinin
içerikleri bellekte oluşturulduktan sonra değiştirilemez (immutable). Sayılar, metinler ve Tuple'lar değişmez
olması demek içeriklerinin oluşturulduktan sonra değiştirilemeyeceği anlamına gelir. Öte yandan, Liste veya
Sözlük nesnesindeki öğeler değiştirilebilir. Bir liste veya sözlükteki öğeleri eklemek, silmek ve yeniden
düzenlemek mümkündür. Dolayısıyla bu veri yapıları değiştirilebilir nesnelerdir. Tuple’ın baştaki tanımında ifade
edildiği gibi tuple elemanlarının içeriği değiştirilemez özelliği vardır. Başka bir ifade ile TUPLE nesnelerine veri
eklemek ve veri silmek işlemi gerçekleşmez.
Aşağıda Görsel 3’te verilen örnekte görüldüğü gibi Tuple2’nin sıfırıncı indis nolu elemanının içeriği
değiştirilmek istenmiştir. Ancak bu işlem “immutable” özelliğinden dolayı gerçekleşmeyip hata vermiştir:
Ancak elemanları değiştirilemeyen Tuple nesnesinin içeriğini farklı değişkenlere atamak mümkündür. Aşağıdaki
örnekte tuple3 ve tuple5 nesnelerinin her bir elemanı farklı bir değişkene aktarılmıştır (Görsel 4):
∙ Değişmez öğeler içeren demetler, bir sözlük için anahtar olarak kullanılabilir. Listelerle bu mümkün değildir.
about:blank 32/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Değişmeyen verileriniz varsa, onu Tuple olarak uygulamak, yazmaya karşı korumalı kalması sağlanır.
Kümeler, birkaç farklı şekilde oluşturulabilir. Birincisi direkt olarak Pythonda yerleşik bir fonksiyon olan set()
fonksiyonunu kullanarak direkt olarak bir küme oluşturulabilir. İkinci olarak Liste veya Tuple veri yapısında
oluşturulmuş bir veri nesnesi set() fonksiyonu kullanılarak küme yapısına dönüştürülür. Diğer bir yöntem ise
küme parantezleri { } içerisine “virgül” ile ayrılmış öğeler yazılarak oluşturulur. Kümedeki öğelerin türlerinin
aynı olması gerekmez, kümeye çeşitli karışık veri türü değerleri aktarılabilir.
Aşağıdaki ekran görüntüsünde (Görsel 5) ilk olarak bir liste oluşturulmuştur. Daha sonra bu liste set(listem)
komutu ile kümeye dönüştürülmüştür. Type() komutu ile de oluşturulan nesnenin veri tipi görüntülenmiştir. Son
örnekte ise süslü parantez {} içerisine direkt olarak öğelerin yazılmasıyla oluşturulmuş küme verilmiştir. Dikkat
edilirse [] parantez veri tipinin Liste olduğunu ifade ederken, {} ise veri tipinin küme olduğunu göstermektedir:
Aşağıda Şekil 4.6’da ekran görüntüleri örnekte ise Tuple veri yapısında yer alan verileri küme veri yapısına
dönüştürülmesinin adımları gözükmektedir:
about:blank 33/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıda verilen ve Görsel 7’de gözüken örnekte; ilk olarak “alışveriş” küme verisi ekrana yazdırıldı. İkinci
olarak bu kümeye .add() metodu ile yoğurt öğesi eklendir. Üçüncü adımda birden fazla eleman eklemek için
“ek_liste” adında bir liste oluşturuldu. Daha sonra bu ek liste “alışveriş” küme verisine eklenerek ekrana
yazdırıldı:
Kümeden öğe çıkarma işlemi için .discard( ) metodu kullanılır. Silme işlemi için ise .pop() metodu kullanılır.
Ancak kümeler düzensiz veri yapıları olduğundan .pop() ile hangi elemanın silineceği önceden bilinmez. Bu
metot rastgele küme elemanlarından birini siler.
Aşağıdaki örnekte (Görsel 8) bu iki işlemin adımları verilmiştir. İlk olarak .discard( ) metodu ile yoğurt öğesi
kümeden çıkarılmıştır. Daha sonra .pop() metodu ile kümeden bir eleman silinmiştir. Ancak bu eleman dikkat
edildiği gibi birinci sıradaki ya da sonuncu sıradaki eleman değildir. Rastgele olarak “sucuk” elemanı silinmiştir:
about:blank 34/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Sözlük veri yapısı, “virgül” ile ayrılmış küme parantezleri {} içine bir dizi öğe yerleştirilerek oluşturulabilir. Bir
sözlükteki değerler herhangi bir veri türünde olabilir ve çoğaltılabilir, Sözlük ayrıca yerleşik dict() fonksiyonu ile
de oluşturulabilir. Sözlük veri yapısının genel formatı; sözlük={"key":"value"} şeklindedir.
Aşağıdaki Görsel 9’da verilen ekran görüntüsünde ilk olarak model ve fiyat listeleri oluşturuldu. İkinci adımda
bu iki liste anahtar-değer biçiminde modelfiyat_sozluk1 adı ile sözlük veri yapısına nasıl dönüştürüldüğü
gösterilmiştir. Üçüncü adımda modelfiyat_sozluk1 veri yapısının tipinin ne olduğu type() komutu ile ekrana
yazdırılmıştır. Son adımda dict() fonksiyonu ile bu iki listenin modelfiyat_sozluk2 adıyla sözlük veri yapısına
dönüştürülmesi verilmiştir:
Görsel 9. Sözlük
oluşturma işlemi
Aşağıdaki örneklerde (Görsel 10) bu işlemler sırasıyla gösterilmiştir. İlk olarak sozluk4 adlı bir sözlük
oluşturuldu. Dikkat edilirse sözlük elemanlarından birincisi integer, ikincisi liste ve üçüncüsü sözlük veri
about:blank 35/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
yapısındadır. İkinci adımda “sozluk” anahtarının içeriği ekrana yazdırıldı. Üçüncü adımda sozluk4 sözlüğünün
ilk önce anahtar kelimeleri ve daha sonrada bu anahtarlara karşılık gelen değerler görüntülendi:
Aşağıda Görsel 11’de verilen ekran görüntüsünde ilk olarak sozluk5 adlı bir sözlük oluşturulmuştur. İkinci
adımda bu sözlüğün ikinci anahtar değeri değiştirilmiştir. Üçüncü olarak sozluk6 adlı yeni bir sözlük oluşturuldu.
Dördüncü adımda yeni_konut adlı başka bir sözlük oluşturuldu. Son olarak bu yeni sözlük .update() metodu ile
sozluk6 adlı sözlüğe eklenerek güncellenmesi sağlandı:
Bu komutların dışında sözlük veri yapısında .clear(), items(), popitem() ve pop() metotları yaygın olarak
kullanılır. Aşağıdaki ekran görüntüsünde (Şekil 4.12) bu metotlara ait örnek işlemler verilmiştir:
about:blank 36/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bölüm Özeti
∙ Sıralı bir öge dizisi olan tuples, listelerden farklı olarak barındırdığı veri değerlerinin değiştirilmesine imkân
vermemektedir.
∙ Her ne kadar Tuple ve liste farklı türde veriler içerebilirse de farklı türde veriler için Tuple, aynı türde veriler
için de liste kullanılır.
∙ Tuple’lar listelere göre hafif de olsa daha iyi performans artışı sağlamaktadır.
∙ Tuple’ların değişmez öğeler içermesi, onların bir sözlük için anahtar olarak kullanılmasına imkân
vermektedir.
∙ Tuple’daki verilerin değiştirilemez olması, onu yazmaya karşı korumalı hale de getirmektedir.
Kaynakça
WEB: https://www.programiz.com/python-programming/tuple
about:blank 37/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Wes McKinney, “Python for Data Analysis”, O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472., İkinci Baskı, 2017
WEB: https://realpython.com/python-dicts/
[1]
https://www.programiz.com/python-programming/tuple
[2]
https://www.tutorialsteacher.com/python/python-set
[3]
https://realpython.com/python-dicts/
Ünite Soruları
Soru-1 :
Tuple (Demet) veri yapısı ile ilgili aşağıdaki ifadelerden hangisi doğrudur?
(Çoktan Seçmeli)
Cevap-1 :
Soru-2 :
Elemanları 20,30,40,50,60,70,80,90,100 sayılarından oluşan Tuple5 adlı bir tuple nesnesi göz önüne alınız.
Tuple5[8] komutunun sonucu aşağıdaki şıklardan hangisinde doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) 80
(B) 100
(C) 90
(D) 80,90
Cevap-2 :
100
Soru-3 :
about:blank 38/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Elemanları 120,130,140,150 sayılarından oluşan tuple6 adlı bir tuple nesnesi göz önüne alınız. Komut satırına
x,y,z,k=tuple6 yazılıyor. Bu durumda z’nin değeri ne olur?
(Çoktan Seçmeli)
(A) 150
(B) 120
(C) 140
(D) 130
Cevap-3 :
140
Soru-4 :
Elemanları “A”, “B”, “C”, “D” ve adı Benim_Liste olan bir liste oluşturuluyor. Bu liste küme veri yapısına
dönüştürülmek isteniyor. Bunun için aşağıdaki komutlardan hangisi kullanılmalıdır?
(Çoktan Seçmeli)
(A) type()
(B) add()
(C) update()
(D) set()
Cevap-4 :
set()
Soru-5 :
Elemanları “A”, “B”, “C”, “D” ve adı Benim_Küme olan bir küme oluşturuluyor. Bu kümeden “C” elemanı
silinmek istenirse aşağıdaki komutlardan hangisi yazılması gerekir?
(Çoktan Seçmeli)
(A) Benim_Küme.discard(“C”)
(B) Benim_Küme.discard(C)
(C) Benim_Küme.del(“C”)
(D) Benim_Küme.del(C)
Cevap-5 :
Benim_Küme.discard(“C”)
Soru-6 :
T={“not1”: 34, “not2”: 44, “not3”: 54,} biçiminde verilen bir yapı hangi türde bir veri yapısını ifade eder?
about:blank 39/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(A) Tuple
(B) Sözlük
(C) Küme
(D) Liste
Cevap-6 :
Sözlük
Soru-7 :
Bir sözlüğün anahtar kelimelerine erişmek için aşağıda verilen hangi komut kullanılır.
(Çoktan Seçmeli)
(A) pop()
(B) values()
(C) keys()
(D) len()
Cevap-7 :
keys()
Soru-8 :
Adı “sepetim” olan bir küme göz önüne alın. Daha sonra komut satırına sepetim.pop() komutu yazılıp
çalıştırılıyor. Bu durumda aşağıda verilen ifadelerden hangisi doğrudur?
(Çoktan Seçmeli)
Cevap-8 :
Soru-9 :
(Çoktan Seçmeli)
about:blank 40/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-9 :
Soru-10 :
s={“Ad1”: “Canan”, “Ad2”: “Kemal”, “Ad3”: “Ayşe”} olarak verilen bir veri yapısında “Canan” ismini
“Mehmet Ziya” olarak değiştirecek komut aşağıdaki şıklarda hangisinde doğru olarak verilmiştir?
(Çoktan Seçmeli)
Cevap-10 :
s[“Ad1”]=“Mehmet Ziya”
about:blank 41/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Seçmeli ve sıralı yapılar Python’a özgü veri yapıları ile nasıl kullanılır?
Başlamadan Önce
Bu bölümde ilk olarak programlama da kullanılan kontrol yapılarının genel biçimleri nasıldır. Bu kontrol
yapılarının Python’da kullanım farklılıkları nelerdir. Sıralı, seçmeli ve tekrarlı kontrol yapıları, Python diline
özgü veri yapıları ile nasıl kullanılır. Tüm bu sorular bu bölümde örnekler verilerek detaylı bir şekilde ekran
görüntüleri ile açıklanmıştır. Okuyucu bu bölüm sonunda bu yapıları kullanabilecek yetenekleri
kazanabilecektir.
Bilgisayar programlamasının veriler ve yönergeler olmak üzere iki temel yönü vardır. Verilerle çalışmak için
değişkenleri ve veri türlerini, talimatlar/yönergelerle çalışmak için ise kontrol yapılarını ve ifadelerini anlamak
gerekir.
Herhangi bir program aracılığıyla kontrol akışı; sıralı, seçim ve tekrarlı olmak üzere üç temel kontrol yapısı türü
[1]
ile gerçekleştirilir (Şekil 3).
about:blank 42/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Sıralı
Sıralı yürütme en basit programlama kontrol yapısıdır. Herhangi bir karşılaştırma işlemi olmadığından ifadeleri
temsil eden program kodları sırayla birbiri ardına yürütülür.
Seçimli
Kararlar için kullanılan bu yapılar, dallanma yani iki veya daha fazla alternatif yol arasından seçim yapma
durumunda olan problemlerin kodlanmasında kullanılır.
▪ if
▪ if...else
Tekrarlı
Döngü için kullanılan tekrarlı yapılar, yani bir kod parçasını arka arkaya birçok kez çalıştırmak demektir.
▪ for döngüsü
▪ while döngüsü
Bu kontrol yapıları bilgisayar programlamasında birlikte kullanılabilir. Bir dizi birkaç döngü içerebilir; bir
döngü, kendi içinde yuvalanmış bir döngü içerebilir veya bir koşulun iki dalının her biri, döngüleri ve daha fazla
koşullu dizileri içerebilir.
5.1.1. if Yapısı
Python'daki şartlı ifade, belirli bir kısıtlamasının/şartın doğru veya yanlış olarak değerlendirilmesine bağlı olarak
farklı hesaplamalar veya eylemler gerçekleştirir. Başka bir ifade ile şart doğru olan ifade(ler) ile
ilişkilendirildiğinde, ilişkili ifadeler yürütülür, aksi takdirde ilgili ifadeler yok sayılarak atlanır. İfadelerin
yürütülmesinin veya ifadelerin atlanmasının koşulun sonucuna göre yalnızca bir kez gerçekleşmesini istiyorsak,
koşullu kontrol yapıları kullanılır (Şekil 4).
about:blank 43/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Python'da koşullu ifadeler if kontrol deyimi tarafından işlenir. Basit If kontrol yapısının genel formu aşağıdaki
gibidir:
If şart:
Gerçekleştirilecek işlem
Python'da, if ifadesi şart cümlesinden sonraki test ifadesini değerlendirir. Test ifadesi doğru (True) olarak
değerlendirilirse if gövdesi içindeki ifade(ler) çalıştırılır. Şart ifadesi yanlış (False) olarak değerlendirilirse, if
gövdesi içindeki ifadeler atlanır. Aşağıda Şekil 5.3’te verilen ekran görüntüsünde if kontrol yapısının çalışmasına
ait örnekler verilmiştir. Birinci örnekte 5>4 ifadesi doğru olduğundan ifadeler kısmında belirtilen kısım ekrana
yazdırılmıştır. İkinci örnekte ilk olarak 65 değeri “notu” adlı değişkene aktarılmıştır. Daha sonra bu değerin
50’den büyük olup olmadığı kontrol ettirilmiştir. Şart sonucu doğru olduğundan ekrana “geçti” ibaresi
yazdırılmıştır. Üçüncü örnekte ise “notu” değişkeninin değeri 45 olarak değiştirilmiş ve aynı if cümlesi
çalıştırılmıştır. Dikkat edilirse şart cümlesi doğru olmadığından if gövdesi içindeki ifadeler atlanır ve ekrana
herhangi bir çıktı yazdırılmaz.
Yukarıdaki akış şemasında gösterildiği gibi, Python programı önce şart ifadesini değerlendirir. Temeldeki şart if
ifadesindeki durumdur. Buradaki şart karşılanırsa veya şart doğruysa, o zaman yalnızca if ifadesinin
gövdesindeki ifade-1(ler) çalıştırılır. Şart doğru değilse, else ifadesinin gövdesindeki ifade-2 (ler) çalıştırılır. If ve
else ifadelerinin gövdesi girintileme ile başlar. Bu yapının genel biçimi aşağıdaki gibidir:
If şart sağlanıyorsa:
işlem-1’i yap
else:
işlem-2’yi yap
Aşağıdaki örnekte (Görsel 2), ilk olarak puan değişkenine 90 değeri atanıyor. Daha sonra bu değer 85 sayısı ile
karşılaştırılıyor. Karşılaştırma sonucu True olduğundan sonuç “geçti” olarak ekrana yazdırılmıştır. İkinci örnekte
puan değişkenine 80 değeri atanarak ilgili program tekrar çalıştırıldı. Ancak bu sefer karşılaştırma sonucu False
olduğundan else kısmında sonraki ifadeler işletilerek ekrana “kaldı” sonucu yazdırıldı:
about:blank 45/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Girilen bir değere göre ikiden fazla sonuç durumu varsa If-elif-else yapısı kullanılır. Elif deyimi, birden çok
ifadeyi TRUE için kontrol etmeye ve koşullardan biri TRUE olarak değerlendirildiği anda bir kod bloğu
çalıştırmaya izin verir. Bu kontrol yapısında en fazla bir ifade olabilen else 'ten farklı olarak, if'den sonra istenen
sayıda elif ifadesi kullanılabilir. Bu kontrol yapısının genel biçimi aşağıdaki gibidir:
işlem-1’i yap
işlem-2’yi yap
işlem-3’ü yap
else:
bu işlemi yap
Aşağıda Görsel 3’te verilen örnekte ilk olarak puan değişkenine 65 değeri atanıyor. Daha sonra bu değer sırasıyla
85, 70 ve 65 sayıları ile karşılaştırılıyor. İlk karşılaştırmada 65<85 küçük olduğu için sonuç False oluyor ve bir
sonraki elif kontrol noktasına geçiyor. Burada da yapılan kontrolde 65<70 olduğunda üretilen sonuç False
olduğundan bir sonraki elif kontrol noktasına geçiş oluyor. Bu kontrol noktasında 65>60 True olduğundan notu
değişkenine “B” değeri atanıyor. Bu aşamadan sonra diğer kontrol noktaları atlanarak else kelimesinin altında
olan print komutu ile notu değişkenine aktarılan değer ekrana yansıtılıyor.
İkinci örnekte ise x ve y değişkenlerine sırasıyla 7 ve 10 değerleri atanıyor. Sonra bu iki değişkenin içeriğine
bağlı olarak karşılaştırma yapılıyor ve sonuç ekrana yazdırılıyor.
about:blank 46/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
'in' operatörü, bir değerin bir dizide olup olmadığını kontrol etmek için kullanılır. Aranan değişken belirtilen
[2]
dizide bulunursa doğru (True), aksi takdirde yanlış (False) sonucu üretilir . Başka bir ifade ile 'in' işleci “içinde
var mı” sorgusu yapar ve varsa koşul içerisindeki işlem çalıştırılır (Görsel 4).
Döngü, bilgisayar programlarının yazılmasında yaygın olarak kullanılan temel bir programlama kontrol yapısıdır
(Şekil 6). Belirli bir koşula ulaşılıncaya kadar tekrarlanan bir yönergeler dizisidir. Bir for döngüsünün iki bölümü
vardır: yineleme koşullarını belirten kısım ve yineleme başına bir kez çalıştırılan bir gövde (döngü içi işlemleri).
Şartlı kısım genellikle gövdenin hangi yinelemenin yürütüldüğünü bilmesini sağlayan açık bir döngü sayacı veya
döngü değişkenini içerir.
for yapısı sıralı geçişler için kullanılır. Örneğin: bir liste, string veya dizide gezinme/dolaşmak gibi. Python' un
döngü için çoğu diğer dillerde var olan for (i = 0; i <n; i ++) gibi bir yapısı yoktur. Bunun yerine aynı işlemi
yerine getiren “for in” döngüsü kullanılır. Aşağıda bu yapının genel formu verilmiştir:
işlem (ler)
Sıralı geçişler için “in” in for için nasıl kullanılacağı aşağıda Şekil 5.9’da verilen örneklerde açıklanmıştır.
about:blank 47/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Şimdi de for döngüsü ile if kontrol yapısını birlikte kullanılan örnekler yapalım (Görsel 6). İlk olarak liste
içerisindeki sayılardan çift olanları ekrana yazdıralım. İkincisinde ise if kontrol yapısı ile tek olanları “tek sayı”
çift olanlara “çift sayı” yazdıralım.
For döngüsü ile liste veri yapısının dışındaki diğer veri tipleri ile de işlemler yapmak mümkündür. Aşağıdaki
şekilde bunlara ait örnekler verilmiştir (Görsel 7):
about:blank 48/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıdaki örnekte for döngüsü ile Küme veri yapısının kullanılması açıklanmıştır (Görsel 8):
Aşağıdaki örnekte for döngüsü ile Sözlük veri yapısının kullanılması açıklanmıştır (Görsel 9):
about:blank 49/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıda for ile iç içe döngü yapısının açıklandığı bir örnek verilmiştir (Görsel 10):
about:blank 50/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bölüm Özeti
∙ Birbirinden veya başka bir yazılım programından bağımsız ifadelerinin, yönergelerinin veya fonksiyonlarının
yürütüldüğü sıra, kontrol akış yapısı olarak adlandırılmaktadır.
∙ Değişkenleri ve veri türlerini anlamak, verilerle çalışabilmeyi; kontrol yapılarını ve ifadelerini anlamak da
talimatlar/yönergelerle çalışabilmeyi sağlar.
∙ Sıralı, seçim ve tekrarlı olmak üzere üç temel kontrol yapısı türü ile herhangi bir program aracılığıyla kontrol
akışı yapılır.
Kaynakça
WEB: http://net-informations.com/python/flow/
Wes McKinney, “Python for Data Analysis”, O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472., İkinci Baskı, 2017
WEB: https://www.askpython.com/python/examples/in-and-not-in-operators-in-python
[1]
http://net-informations.com/python/flow/
[2]
https://www.askpython.com/python/examples/in-and-not-in-operators-in-python
[3]
Atıl Samancıoğlu, “Python Sıfırdan Uzmanlığa Programlama”, Unikod, 1. Baskı, 2020
Ünite Soruları
Soru-1 :
(Çoktan Seçmeli)
(A) Tekrarlı
(B) Sıralı
about:blank 51/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(C) Sorgulamalı
(D) Seçimli
Cevap-1 :
Sorgulamalı
Soru-2 :
Aşağıdaki ekran görüntüsü verilen sonucun elde edilebilmesi için puan ile 80 arasına şıklardan hangi işaret
getirilmesi gerekir?
(Çoktan Seçmeli)
==
<
>
>=
Cevap-2 :
<
Soru-3 :
Aşağıda verilen ekran görüntüsünün elde edilmesi için yas değeri ne olmalıdır?
(Çoktan Seçmeli)
18
about:blank 52/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
17
19
16
Cevap-3 :
19
Soru-4 :
Aşağıda verilen sonucun oluşabilmesi için “?” işareti yerine ne yazılması gerekir?
(Çoktan Seçmeli)
(A) notu
(B) gun
(C) rakam
(D) sayı
Cevap-4 :
sayı
Soru-5 :
Aşağıda verilen ekran görüntüsünde “?” ve “??” işaretli yerlere yazılması gereken ifadeler hangi şıkta sırası ile
doğru verilmiştir?
about:blank 53/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(A) yok-yok
(B) yok-var
(C) var-var
(D) var-yok
Cevap-5 :
var-yok
Soru-6 :
Aşağıdaki ekran görüntüsünü elde etmek için “?” işareti yerine ne yazılması gerekir?
(Çoktan Seçmeli)
(A) sayılar
(B) takımlar
(C) "Tranzonspor","Fenerbahçe","Galatasaray","Beşiktaş","Sakaryaspor"
(D) ("Tranzonspor","Fenerbahçe","Galatasaray","Beşiktaş","Sakaryaspor")
Cevap-6 :
sayılar
Soru-7 :
Aşağıda verilen ekran görüntüsünde “?” işareti yere yazılması gereken ifade hangi şıkta doğru olarak verilmiştir?
about:blank 54/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(A) ifade
(B) x
(C) end
(D) end= “ ”
Cevap-7 :
end= “ ”
Soru-8 :
Aşağıda verilen ekran görüntüsünde “?” ve “?” işareti yerlere yazılması gereken ifadeler hangi şıkta doğru olarak
verilmiştir?
(Çoktan Seçmeli)
(A) adlar-adlar
(B) adlar-liste
(C) liste-adlar
(D) liste-listem
Cevap-8 :
adlar-adlar
Soru-9 :
k=[23,33,43,53,63,73,83,93,103], k listesindeki elemanları ekrana yazdırmak için hangi kontrol yapısı kullanılır?
about:blank 55/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(A) if
(B) if – else
(C) for
(D) if-for
Cevap-9 :
for
Soru-10 :
(Çoktan Seçmeli)
Cevap-10 :
about:blank 56/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Continue komutu kullanımı nasıl kullanılır, Break komutundan farklı olan işlevi nedir?
Başlamadan Önce
While kontrol yapısı for gibi döngüsel işlemler için kullanılır. For döngüsel yapısından farklı olarak kendine
özgü bir yapısı vardır. Problemin yapısına göre bu iki döngüden hangisi kullanılacağına karar verilir. Her iki
döngüsel yapının kendine göre avantaj ve dezavantajları vardır.
Döngüsel yapılardan zaman zaman çıkmak veya belli bir noktayı atlamak gerekebilir. Bu tür durumlarda
döngüden çıkmak için Break komutu kullanılır. Döngünün belli bir adımını atmak için ise Continue deyimi
kullanılır.
Ayrıca veri yapılarında kullanmak için yararlı komutlar olan Range komutu ve Random Kütüphanesi vardır. Bu
iki yapı da Veri Bilimi uygulamalarında yaygın olarak kullanılmaktadır. Diğer bir yararlı komut ise Zip
komutudur.
Bu bölümde while yapısı ile birlikte bu yararlı komutlar ve kütüphane örnekler yardımıyla açıklanacaktır.
about:blank 57/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Kesin yinelemeyle, belirlenen bloğun kaç kez çalıştırılacağı döngü başladığında açıkça belirtilir. Python’un while
ifadesinin döngüler oluşturmak için nasıl kullanıldığını görelim. Temel while döngüsünün biçimi aşağıda
gösterilmiştir:
while <şart>:
<işlem(ler)>
Bu gösterimde:
<şart> döngü başlatılmadan önce başlatılan ve daha sonra döngü gövdesinde bir yerde değiştirilen bir veya daha
fazla değişkeni içerir.
<işlem(ler)>, genellikle döngünün gövdesi olarak anılan tekrar tekrar çalıştırılacak bloğu temsil eder.
Bir while döngüsüyle karşılaşıldığında, <şart> ilk olarak şart bağlamında değerlendirilir. Doğruysa, döngü
gövdesi çalıştırılır. Sonra <işlem(ler)> tekrar kontrol edilir ve eğer hala doğruysa, gövde yeniden çalıştırılır. Bu,
<işlem(ler)> yanlış olana kadar devam eder. Aşağıda Görsel 1’de verilen ekran görüntüsünde while örnekleri
görülmektedir. Birinci örnekte 1’den 10’a kadar olan sayılar ekrana yazdırılmıştır. İkinci örnekte metinsel bir
ifade 5 kez ekrana yazdırılmıştır. Üçüncü örnekte ise liste veri yapısında yer alan 6 nolu eleman daha önce
öğrenmiş olduğumuz .pop() komutu ile silinene kadar kaç kez listede gözüktüğü ekrana yazdırılmıştır.
about:blank 58/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başka bir ifade ile bu anahtar kelimesi bir döngüden çıkmayı gerektiren şartların oluştuğu anda tetiklenir. Break
komutu hem while hem de for döngülerinde kullanılabilir. İç içe döngüler kullanıldığı durumlarda, break ifadesi
en içteki döngünün yürütülmesini durdurur ve bloktan sonraki kod satırını çalıştırmaya başlar.
Aşağıda Görsel 2’de verilen ekran görüntüsünde break komutunun kullanımına ait örnek kodlar verilmiştir. Bu
görüntünün birinci örneğinde listem1’deki tüm elemanlar sırayla okunduktan sonra 5 ile çarpılarak for döngüsü
ile ekrana yazdırılmıştır. İkinci örnekte ise aynı listenin ilk üç elemanı okunup 5 ile çarpıldıktan sonra (if
sayılar==30) şartı gerçekleştiği için geri kalan liste elemanları yazdırılmadan döngüden çıkılmıştır:
about:blank 59/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Şimdi de While döngüsünün durdurulması işlemini Break komutunu kullanarak yapalım. Aşağıdaki örnekte
şartın True olduğu sürece dönmesi isteniyor. Döngüden çıkma işlemi kullanıcıya bırakılıyor. Bunun için
kullanıcıdan döngüyü sonlandırmasını istediğinde bir sayı girilmesi isteniyor (Bu örnekte kullanıcıdan çıkmak
için sıfır sayısı girmesi isteniyor). Girilen sayı çıkmak için kodda ayarlanan sayıya eşit ise döngü sonlandırılmış
oluyor. Aksi takdirde döngü dönmeye devam eder. Bu örneğin ekran çıktısı aşağıda Görsel 3’te verilmiştir:
about:blank 60/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
[2]
Continue, aynı break deyimi gibi bir döngü kontrol komutudur. Continue komutu , break komutunun tersi olan
işlemi yapar. Adından da anlaşılacağı gibi continue ifadesi, döngüyü bir sonraki yinelemeyi devam ettirmeye
veya yürütmeye zorlar. Bu deyim döngüde çalıştırıldığında, deyimi izleyen döngü içindeki kod atlanacak ve
döngünün bir sonraki yinelemesi başlayacaktır (Şekil 9).
Aşağıda Görsel 4’te verilen ilk örnekte listem1 in elemanları for döngüsü ile ekrana yazdırılıyor. İkinci örnekte
ise liste1’deki elemanlar okunurken 30 sayısına gelindiğinde yani if sayılar==30 olduğunda bu sayı
yazdırılmadan bir sonraki sayıya atlanıp kalan sayılar ekrana yazdırılmaktadır:
Range metodu ile belli bir sayı aralığı girilir ve bu sayı aralığının içerisinde liste elemanları otomatik oluşturulur.
range() Python'da yerleşik olan bir fonksiyondur. Bir kullanıcının belirli sayıda bir eylem gerçekleştirmesi
gerektiğinde Python'da genellikle List ve string gibi veri yapılarında for ve while döngüsü ile birlikte kullanılır.
Range() kullanıcının belirli bir aralıkta bir dizi sayı oluşturmasına izin verir. Kullanıcı bu sayı dizisinin nerede
about:blank 61/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
başlayıp biteceğine ve bir sayı ile sonraki arasındaki farkın ne kadar büyük olacağına karar verebilir. Bu yüzden
[3]
Range() temelde üç bağımsız değişken alır .
stop (duruş): dizinin değer döndüreceği son elemandan sonraki tam sayı
Step (adım): dizide başlangıç değerinden sonraki gösterilmek istenen değer için gereken artışı belirleyen tam
sayı.
Aşağıda verilen ekran görüntülerinde bu fonksiyonun kullanımı ile ilgili örnekler verilmiştir:
range (stop).
Bu kullanım tek argüman alır. Kullanıcı range() fonksiyonu içerisine bir tam sayı girdiğinde çıktı olarak 0'dan
başlayan ve durma noktası olarak girilen tam sayıyı içermeyen, ancak bu sayıya kadar olan tüm tam sayı
değerlerini ekrana yazdırır (Görsel 5)
Bu kullanım iki argüman alır. Kullanıcı range() fonksiyonu içerisine sayı dizisinin nereden başlayıp nerede
biteceği kararını verir. Bu kullanım sayesinde kullanıcı diziyi her zaman 0'dan başlatmak zorunda kalmaz.
Aşağıdaki örnekte kullanıcı (başlangıç, bitiş) olarak girmiş olduğu değerlere bağlı olarak üretilmiş olan dizi
elemanları ekrana yazdırılmıştır (Görsel 6):
Bu kullanım üç argüman alır. Kullanıcı range() fonksiyonu içerisine sayı dizisinin nereden başlayıp nerede
biteceği kararının yanı sıra bir sonraki adımda hangi dizi elemanının gösterileceğini belirten bir tam sayı değeri
ile aradaki farkın ne kadar büyük olacağını da seçebilir. Bu kullanımda adım değeri girilmez ise range()
fonksiyonu otomatik olarak adım değerini bir alır. Aşağıdaki Görsel 7’de kullanıcının (başlangıç, bitiş, adım)
olarak girmiş olduğu değerlere bağlı olarak üretilmiş olan dizi elemanlarının sonuç ekran görüntüsü verilmiştir:
about:blank 62/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bilgisayar biliminde özellikle simülasyon uygulamalarında rastgele sayı üretmek çok önemli bir araçtır. Çoğu
programlama dillerinde geliştirilmiş çeşitli hazır sayı üretme kütüphaneleri mevcuttur. Python dili içinde de
Random modülü mevcuttur. Random modülünü çağırmak için import random komut satırı kullanılır.
Random modülü, sözde rastgele değişkenleri (pseudo-random variables) oluşturmak için Python’da yerleşik olan
[4]
bir modüldür . Rastgele bir sayı almak, bir listeden rastgele bir öğe seçmek, öğeleri rastgele karıştırmak gibi
rastgele bazı eylemler gerçekleştirmek için kullanılabilir.
Random.random() metodu, 0.0 ile 1.0 arasında rastgele bir virgüllü sayı döndürür. Fonksiyonun herhangi bir
argümana ihtiyacı yoktur. Bu metodu çalıştırmak için ilk olarak random metodu çalışma sayfasına yüklenmesi
(import ramdom) gerekir. Aşağıdaki örnekte (Görsel 8) float tipinde sayı üretim örneği verilmiştir:
Integer sayı üretmek için Random.randint() metodu belirtilen tam sayılar arasında rastgele bir tam sayı üretir. Bu
işlem için random.randint (start, stop) kalıbını kullanılır. Aşağıdaki örnekte (Görsel 9) 1 ile 100 arasında integer
bir sayı üreten kodun ekran görüntüsü verilmiştir:
Belli Bir Aralıkta İstenen Sayıda Rastgele Tam sayı Dizisi Oluşturma
NumPy Kütüphanesi kullanılarak Randint() metodu ile rastgele bir tam sayı dizisi oluşturulabilir. Bu metot,
aralığın alt sınırı, aralığın üst sınır ve oluşturulacak tam sayı değerlerinin sayısı veya dizinin boyutu olmak üzere
üç bağımsız değişken alır. Rastgele tam sayılar, alt değer dahil ve üst değer hariç olmak üzere üretilir. Aşağıdaki
örnekte, Numpy kütüphanesi kullanılarak rastgele oluşturulan bir tam sayı dizisi gösterilmiştir (Görsel 10).
Görsel 10. Belli bir aralıkta tam sayı dizisi oluşturma örneği
Python programlamasındaki zip(), parametre olarak birden çok yinelenebilir veya kapsayıcıyı (container)
parametre olarak alan yerleşik standart bir Python fonksiyonudur. Bu fonksiyon, birden fazla yinelenebilir dizinin
about:blank 63/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
[5]
aynı elemanlarını eşlemek için kullanılır . Zip() fonksiyonu tarafından parametre olarak kullanılan yineleme
nesneleri Python’a özgü liste, sözlük, metin (string) veya herhangi bir veri nesne olabilir. Zip() fonksiyonu, her
yineleyicinin ilk öğelerini bir araya getirir, ardından ikinci öğeleri bir araya getirir ve bu böyle devam eder. Zip()
yinelenen öğeler aynı uzunlukta değilse yinelenebilen en küçük uzunluk, üretilen çıktının uzunluğunu oluşturur.
Aşağıdaki örneği göz önüne alalım (Görsel 11). Görüldüğü gibi ilk olarak üç adet Tuple nesnesi oluşturulmuştur.
Daha sonra bu nesnelerin karşılıklı elemanları Zip() fonksiyonu ile birleştirilmiştir. Ancak ekran çıktısında
birleştirilen elemanlar gözükmemektedir:
Bunun için birleştirilen nesnelerin herhangi bir Python veri yapısına dönüştürülmesi gerekir. Şimdi yukarıda Zip
fonksiyonu ile (Görsel 12) birleştirilen veri nesnelerini Tuple nesnesine dönüştürelim (Görsel 13).
Yukarıda verilen ekran çıktısında görüleceği gibi Tuple nesnesinde üçüncü öğe yoktur. Bunun sebebi aynı
uzunlukta olmayan nesnelerin Zip() fonksiyonu ile birleştirilmesi durumunda elde edilen nesnenin uzunluğu en
küçük nesnenin uzunluğu kadar olabilmesinden kaynaklanmıştır.
Zip fonksiyonu kullanarak iki tuple’ı sözlüğe dönüştürmek için, ilk olarak tuple nesneleri oluşturulur. Daha sonra
bu nesneler dict() fonksiyonu kullanılarak sözlük veri yapısına dönüştürülür (Görsel 14).
Aşağıdaki örnekte (Görsel 15) ilk olarak farklı veri tipinde üç adet liste veri nesnesi oluşturulmuştur. İkinci işlem
olarak bu listeler zip fonksiyonu ile birleştirildi, daha sonra set() fonksiyonu kullanılarak küme veri yapısına
dönüştürüldü:
about:blank 64/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bölüm Özeti
∙ Bir kod bloğunu birçok defa ve birden fazla çalıştırmayı ifade etmek için yineleme terimi kullanılmaktadır.
Belirsiz ve kesin yineleme olarak ikiye ayrılmaktadır.
∙ Hem while hem de for döngülerinde kullanılabilen Break anahtar komutu ile, şart ifadesinin doğru olması
halinde geçerli döngü sonlandırılır. Şart ifadesinin doğru olmaması halinde ise, döngü içindeki ifadelerin
yürütümü kesilmez.
∙ Bir döngü kontrol komutu olan continue, break komutunun tersidir. Break komutu bir döngüyü
sonlandırırken, continue ifadesi, döngüyü bir sonraki yinelemeyi devam ettirmeye veya yürütmeye zorlar.
Kaynakça
WEB: https://www.tutorialsteacher.com/python/random-module
WEB: https://www.geeksforgeeks.org/python-range-function/
WEB: https://www.codementor.io/@likegeeks/python-zip-function-tutorial-simple-examples-x5tnr4mkv
WEB: https://www.pythonpool.com/python-break/
[1]
https://www.pythonpool.com/python-break/
[2]
https://www.w3resource.com/python/python-break-continue.php
[3]
https://www.geeksforgeeks.org/python-range-function/
[4]
https://www.tutorialsteacher.com/python/random-module
[5]
https://www.codementor.io/@likegeeks/python-zip-function-tutorial-simple-examples-x5tnr4mkv
Ünite Soruları
Soru-1 :
Aşağıda verilen ifadelerden hangisi while kontrol yapısı için doğru bir ifade değildir?
about:blank 65/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
Cevap-1 :
Soru-2 :
Aşağıdaki ekran görüntüsü verilen kodun çıktısında şıklarda verilen değerlerden hangisi yer almaz?
(Çoktan Seçmeli)
(A) 13
(B) 15
(C) 12
(D) 14
Cevap-2 :
15
Soru-3 :
Aşağıda verilen ekran görüntüsü verilen koda ekrana kaç kez yazılır?
(Çoktan Seçmeli)
(A) 5
about:blank 66/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(B) 6
(C) 4
(D) 3
Cevap-3 :
Soru-4 :
Aşağıda verilen sonucun oluşabilmesi için 4 numaralı satıra aşağıdaki ifadelerden hangisi yazılması gerekir?
(Çoktan Seçmeli)
(A) sayı=sayı+1
(B) sayı=sayı-1
(C) sayı+=1
(D) sayı=sayı
Cevap-4 :
sayı=sayı-1
Soru-5 :
about:blank 67/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(A) 61,25,34
(B) 34,35,42
(C) 25,34,35
(D) 54,61,25
Cevap-5 :
54,61,25
Soru-6 :
(Çoktan Seçmeli)
(A) if sehir=="İstanbul"
(B) if sehirler=="İstanbul":
(C) if sehir=="İstanbul":
(D) if sehir==İstanbul:
Cevap-6 :
if sehir=="İstanbul":
Soru-7 :
Aşağıda verilen ekran görüntüsünde “?” işareti yere yazılması gereken ifade hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) 4,14
(B) 4:15
(C) 4:14
about:blank 68/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(D) 4,15
Cevap-7 :
4,15
Soru-8 :
Aşağıda kodu verilen ekran görüntüsünde şıklarda verilen sonuçlardan hangisi üretilemez?
(Çoktan Seçmeli)
(A) 13
(B) 12
(C) 16
(D) 15
Cevap-8 :
16
Soru-9 :
Aşağıda verilen ekrandaki koddan üretilen çıktıda şıklarda verilenlerden hangisi yer almaz?
(Çoktan Seçmeli)
Cevap-9 :
(“Kazım”, 25)
about:blank 69/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-10 :
(Çoktan Seçmeli)
(A) dict
(B) zip
(C) list
(D) set
Cevap-10 :
dict
about:blank 70/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlamadan Önce
Python son yıllarda Veri Bilimi dışında özellikle mühendislik uygulamalarında da geniş kullanım alanı bulan bir
dil haline gelmiştir. Bunu sağlayan en önemli etken Numpy gibi sahip olduğu kütüphanelerdir. Kodlaması uzun
süren matematiksel fonksiyon ve algoritmalar bu kütüphaneler sayesinde hızlıca uygulanabilmektedir. Buda iş
dünyasında bulunan mühendis ve veri bilimcilerine ciddi zaman kazanımı ve kolaylıklar getirmektedir. Bu
bölümde bu kütüphanenin özellikleri verilen örnekler yardımıyla açıklanacaktır.
Diziler, bir veya daha fazla boyuta sahip olabilen öğeler / değerler koleksiyonudur. Tek boyutlu bir dizi Vektör,
iki boyuta sahip bir dizi ise Matris olarak adlandırılır. NumPy dizileri ndarray veya N boyutlu diziler olarak
adlandırılır ve aynı tür ve boyuttaki öğeleri depolar. Yüksek performansıyla bilinir ve dizilerin boyutu büyüdükçe
verimli depolama ve veri işlemleri sağlar. NumPy kütüphanesi, Anaconda indirildiğinde yüklenmiş olarak gelir.
Ancak Numpy paketini kullanabilmek için, her yeni oturumdan önce paketin import komutu ile çalışma kitabına
yüklenmesi gerekir. Bu işlem aşağıda verilen Görsel 1’deki kod ile gerçekleştirilir:
Numpy dizisi oluşturmak için np.array() metodu kullanılır. Bir listeyi, tuple'ı veya herhangi bir dizi benzeri
nesne, array() metodu ile Numpy dizisine dönüştürülür ya da herhangi bir nesne oluşturmadan direkt olarak
array() metodu ile Numpy dizisi oluşturulabilir.
Aşağıda Görsel 2’de verilen ekran görüntüsünde ilk olarak “deger” adında bir liste oluşturuldu. Daha sonra bu
liste array() metodu ile “deger_dizi” adlı bir Numpy dizisine dönüştürüldü. İkinci örnekte ise Numpy dizisi direkt
olarak oluşturuldu:
about:blank 71/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Python'ın Liste veri yapısında matematiksel ve istatiksel işlemler yapacak bir özellik yoktur. Örneğin;
öğrencilerin birinci sınavdan ve ikinci sınavdan almış oldukları notlar ayrı listelerde tutulursa ve bu iki notun
ortalaması alınmak istenirse, bu işlemi listelerle yapmak mümkün değildir. Aşağıdaki ekran çıktısında (Görsel 3)
görüldüğü gibi liste ile oluşturulmuş veri yapıları üzerinde matematiksel işlemler yapılamaz:
Bu sorunu aşmak için Python dilinde Numpy paketi geliştirilmiştir. Numpy paketinde temel veri yapısı Numpy
dizileridir (NumPy array). Numpy dizileri listelerden farklı olarak sadece tek türde veri içerir. Numpy dizisine
farklı veriler tanımlarsanız bile bu veriler aynı veri tipine çevrilir. Aşağıda Görsel 4’te, Görsel 3’te listelerle
hesaplanmaya çalışılan sınav notlarının ortalaması işleminin Numpy dizileri ile gerçekleştirilmesi verilmiştir:
Numpy dizilerinde işlemler elemanlar bazında gerçekleşir. Yani dizideki aynı sıradaki (indisli) elemanlar
uygulanan işleme tabi tutuluyor. Normal Python listelerindeki işlemler Numpy dizilerinde farklı sonuçlar verir.
about:blank 72/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıdaki Görsel 5’te görüldüğü gibi listelerdeki toplama (+) işlemi iki veya daha fazla listeyi birleştirmek
anlamına gelir:
Ancak bu işlem Görsel 6’da görüldüğü gibi Numpy dizileri açısından matematiksel bir işlemdir ve toplama
anlamına gelir.
Normalde Nparray ile integer tipinde elemanları olan bir dizi üretilir. Float tipinde elemanları olan bir dizi
üretmek için dtype komutu dtype=np.float biçiminde kullanılır. Aşağıda Görsel 7’de verilen ekran görüntüsünde
ilk olarak integer tipinde “dizi” adlı bir dizi oluşturuluyor. İkinci örnekte ise yine adı aynı olan ama elemanları
float tipinde olan bir dizi oluşturuldu. Dikkat edilirse değerler aynı imiş gibi gözükmektedir. Ancak ikinci dizinin
elemanlarından sonra gelen “.” nokta işareti o sayıların float tipinde olduğunu ifade eder:
about:blank 73/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bir dizinin elemanlarını random sayı ile doldurmak için np.random.rand() metodu kullanılır. Aşağıdaki örnekte
(Görsel 9) bu komut yardımıyla; 2 satır ve 3 sütundan oluşan iki boyutlu bir dizi (matris) oluşturulmuştur.
Belli bir atlama değeri ile dizi oluşturmak için np.arange() metodunun kullanılır. Örneğin; elemanları
(0,1,2,3,4,5,6,7,8,9,10) olan bir dizi yerine; elemanları (2,4,6,8) gibi bir dizi oluşturmak isteyelim. Bunun gibi bir
dizi oluşturmak için aşağıdaki komut (Görsel 10) kullanılır:
about:blank 74/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlangıç veya bitiş indisini belirtmezsek, varsayılan olarak sırasıyla başlangıç olarak 0 (sıfır) ve bitiş olarak dizi
boyutu alınır. Ayrıca, varsayılan olarak adım boyutu 1'dir. Aşağıdaki örnekte bu durumları açıklayan kodun ekran
görüntüsü verilmiştir (Görsel 12):
Aşağıdaki örnekte (Görsel 13) ilk olarak “dizim4” adlı iki boyutlu bir dizi oluşturuldu. İkinci adımda bu dizinin
elemanları ekrana yazdırıldı. Üçüncü adımda ise matrisin sıfır indisli satır ve sütun elemanı, sonra satır indisi bir,
sütün indis değeri iki olan eleman; daha sonra satır indisi bir ve sütun indisi sıfır olan matris elemanları
dilimlenerek ekrana yazdırılmıştır:
Bölüm Özeti
∙ Sayısal Python ifadesinin karşılığı olan Numerical Python kavramının kısaltması olan Numpy, python
programlama dilinde faydalanılan en kullanışlı kütüphanelerdendir.
∙ Bir veya birden fazla boyutu içinde barındıran değerler bütünü dizi olarak nitelendirilmektedir. Vektör, tek
boyutlu dizilere, matris ise iki boyutlu dizilere verilen addır.
about:blank 75/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ np.array() metodu ile listeler nesneler oluşturularak veya nesne oluşturmaksızın doğrudan array() metodu
Numpy dizileri oluşturulabilir.
∙ Liste ile oluşturulmuş veri yapıları üzerinde matematiksel işlem yapılamaması sorununu aşmak amacıyla
Python dilinde numpy yazılımı geliştirilmiştir.
∙ Bir indeksten diğer indekse kadar olan öğeleri bölüştürüp ayrıştırarak almak olarak ifade edilen dilimlemenin
yapılabilmesi için dizindeki başlangıç ve bitiş noktasını seçmek gerekir.
Kaynakça
Wes McKinney, “Python for Data Analysis”, O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472., İkinci Baskı, 2017
WEB: https://towardsdatascience.com/introduction-to-numpy-for-data-analysis-3aaded0d0996
WEB: https://realpython.com/numpy-tutorial/
[1]
https://realpython.com/numpy-tutorial/
Ünite Soruları
Soru-1 :
Aşağıda verilen ifadelerden hangisi Numpy için doğru bir ifade değildir?
(Çoktan Seçmeli)
Cevap-1 :
Soru-2 :
(Çoktan Seçmeli)
about:blank 76/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-2 :
import numpy as np
Soru-3 :
Verilen bir liste veri yapısını Numpy dizisine dönüştürmek için aşağıda verilen komutlardan hangisi kullanılır.
(Çoktan Seçmeli)
(A) np.list(array)
(B) np.dizi
(C) array
(D) np.array
Cevap-3 :
np.array
Soru-4 :
Aşağıda verilen sonucun elde edilmesi için yazılması gereken komut hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
Cevap-4 :
import numpy as np
np.array([[20,40,15],[90,70,85]])
Soru-5 :
about:blank 77/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(C) dört satır, iki sütundan oluşan bir numpy dizisi oluşturur
(D) birinci satıra dört, ikinci satırda iki elemanı olan bir numpy dizisi oluşturur
Cevap-5 :
Soru-6 :
Aşağıdaki verilen kodun çıktısında şıklarda verilen değerlerden hangisi yer almaz?
(Çoktan Seçmeli)
(A) 4
(B) 0
(C) 2
(D) 1
Cevap-6 :
Soru-7 :
Aşağıda kodu verilen ekran görüntüsünün çıktısında hangi değerler yer alır?
(Çoktan Seçmeli)
(A) 74,64
(B) 25,64
(C) 64,38
about:blank 78/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(D) 74, 38
Cevap-7 :
74, 38
Soru-8 :
Aşağıda kodu verilen ekran görüntüsünde şıklarda verilen sonuçlardan hangisi üretilir?
(Çoktan Seçmeli)
(B) 25,45,14,66,81
(C) 45,14,66,81,93
(D) 25,45,14,66
Cevap-8 :
Soru-9 :
Aşağıda verilen ekrandaki koddan üretilen çıktı hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) 70
(B) 85
(C) 15
(D) 40
Cevap-9 :
85
Soru-10 :
about:blank 79/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
Cevap-10 :
about:blank 80/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlamadan Önce
Pandas, esasen verilerin bulunduğu yerdir. Bu araç aracılığıyla veriler temizlenir, dönüştürülür ve analiz
edilebilir. Örneğin, bilgisayarınızdaki bir csv'de depolanan bir veri kümesini keşfetmek istediğinizi varsayalım.
Pandas, bu csv'deki verileri bir veri çerçevesine aktarır ve ardından aşağıdaki gibi işlemleri yapmaya imkân
sağlar. Örneğin:
Ayrıca eksik değerleri kaldırmak ve satırları veya sütunları bazı kriterlere göre filtrelemek gibi işlemler yaparak
veriler temizlenir. Temizlenmiş, dönüştürülmüş verileri bir csv'ye, başka bir dosyaya veya veri tabanına geri
depolama işlemi gerçekleştirilir Sonuç olarak Pandas kütüphanesi, modellemeye veya karmaşık
görselleştirmelere geçmeden önce, veri kümesinin doğasını anlamamıza imkân verir.
Numpy paketi farklı veri türlerindeki verilerin bir arada kullanılmasında sıkıntılar yaşamaktadır. Buna karşın
Pandas veri analizinde daha esnek ve daha iyi performans sunan bir pakettir. Pandas kütüphanesini kullanabilmek
için Liste’ler, Tuple’lar, Sözlük’ler, Fonksiyon’lar ve Tekrarlı yapılar gibi temel konularda bilgi sahibi olmak
gerekir.
Pandas kütüphanesi import kotumu ile aşağıdaki örnekte (Görsel 1) olduğu gibi Jupyter çalışma kitabına eklenir.
Pd kolaylık amaçlı kullanılan bir kısaltmadır:
about:blank 81/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Pandas seriler ve veri çerçevesi (DataFrame) olmak üzere iki temel bileşeni vardır. Seri, aslında bir sütundur.
DataFrame, ise seri koleksiyonundan oluşan çok boyutlu bir tablodur (Şekil 10). DataFrame'ler ve Seriler, birçok
yönden birbirine oldukça benzer yapılardır. Boş değerleri doldurmak ve ortalamayı hesaplamak gibi biriyle
yapabildiğiniz bir işi diğeri ile de yapabilirsiniz.
Pandas da veri çerçevesi oluşturmak için çeşitli yapılar mevcuttur. Bunlardan biri sözlük veri yapısıdır. Bu işlem
için ilk olarak sözlük oluşturulur. Aşağıdaki örnekte iris datasının sütunlarını içeren bir sözlük oluşturulmuştur
(Görsel 3):
İlk olarak oluşturulan sözlük veri çerçevesine dönüştürülür. Bu işlem için Pandas'ın DataFrame() metodu
kullanılır. Daha sonra oluşturulan çerçeve Görsel 4’te verilen görüntüdeki gibi ekrana yazdırılır.
about:blank 82/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Oluşturulan veri çerçevesine sütun ekleme işlemi birkaç farklı biçimde yapılabilir. Yeni bir listeyi sütun olarak
eklemek için Adı “Gözlem_No” ve içeriği “1” olan bir sütun ekleyelim (Görsel 5).
Dikkat edilirse Gözlem_No değeri sadece 1 değerinden oluşmaktadır. Her satıra farklı değerler de eklemek
mümkündür. Bunun için aşağıdaki kodu yazmak gerekir (Görsel 6):
about:blank 83/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bir veri çerçevesinden sütun silmek için del() metodu kullanılır. Görsel 7’deki veri çerçevesinin son sütununun
silinmesi işlemi Görsel 7’de ekran görüntüsü verilen kod ile gerçekleştirilir.
Şimdi bu tür verileri pandas veri paketi ile nasıl okuyup veri çerçevesine aktarılacağını görelim. İlk olarak csv
dosyamızın yolunu bilmemiz gerekir. Kolay takip etmek amacıyla C’dizisinin altına “AUZEFVERI” adlı bir
dizin oluşturuldu. İçerisine internetten indirilen iris verisinin .csv uzantılı dosyası kaydedilmiştir. C’nin altında
“AUZEFVERI” dizini içerisinde yer alan iris dosyasını pandas ile okumak için gerekli komut aşağıda ekran
görüntüsü verilen Görsel 8’deki gibi yazılır:
about:blank 84/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Okunan veri içindeki nesne türlerine bakmak için type() komutunu kullanılır. Sütun bilgilerini öğrenmek için ise
.columns komutu kullanılır.
Aşağıda ekran görüntüsü verilen Görsel 9’da ilk olarak type() komutu ile iris verisinin bir veri çerçevesi tipinde
olduğu öğrenilmektedir. İkinci çıktı ise iris verisinin sütun isimleri ekrana yazdırılmıştır.
Görsel 9. type ve
.columns() komutunun kullanımı
.clomuns komutu ayrıca veri çerçevesinin sütun isimlerini değiştirmek içinde kullanılır. Aşağıdaki verilen Görsel
10’daki ekran görüntüsünde iris datasının sütunları Türkçe olarak değiştirilmiştir:
about:blank 85/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Veri çerçevesinde bir sütunu seçmek/görüntülemek için veri_çerçevesi_adı [“sütun ismi”] yapısı kullanılır. Eğer
[[ ]] çift köşeli parantez içerisinde sorgulama yapılırsa bu durumda veriler veri çerçevesi formatında
görüntülenmiş olur (Görsel 11).
Birden fazla sütun görüntülemek için isimler art arda çift köşeli [[ ]] parantez içerisinde yazılması gerekir (Görsel
12).
about:blank 86/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Satırları seçmek için ise, istenilen satır numaraları arasına ":" olacak şekilde aşağıda Görsel 13’te verilen ekran
görüntüsündeki gibi bir kod yazıyoruz.
Pandas’ta Satır ve sütunlarda seçim yapabilmek için Loc ile iLoc fonksiyonları kullanılır. Loc konum; iLoc
sayısal konum ifadelerini temsil etmektedir.
Şimdi bu işlemleri sırasıyla göstermek için İlk olarak ayrı olarak oluşturulan listeler zip fonksiyonu ile tek liste
verisi yapısına getirelim. İkinci adımda bu liste yapısını “veri” adlı bir sözlük yapısına dönüştürelim. Son adımda
ise veri üzerinde daha kolay işlem yapılabilmesi için sözlük veri yapısı pandas veri çerçevesi haline getirildi
(Görsel 14).
about:blank 87/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Loc fonksiyonunun işlevini daha iyi anlatmak için index yerine satırlara Id olarak "A", "B", "C" biçiminde
aşağıdaki ekran görüntüsü gibi isim vereli (Görsel 15).
Loc fonksiyonu ile tablodan satır dilimleyelim. Veriyi veri çerçevesi formatında görüntülemek için [[ ]] çift
köşeli parantez içerisinde yazmak gerekiyor. Birden çok satır seçme işlemi için aşağıdaki kodu yazmak gerekir
(Görsel 16).
about:blank 88/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Satır ve sütun kesişim kümesi değerlerini aynı anda seçme işlemi için yandaki komut yazılır. Birden fazla satır ve
sütun kesişiminin değerlerini görüntülemek için yandaki gibi bir komut yazılır. Belirli değişkenlere ait tüm
satırları seçtirmek için satır ismi yerine “ : ” işareti kullanılır. Hisseler.loc[: , “endusuk”, “enyuksek”]
biçiminde yazmak gerekir (Görsel 17).
Satır ve sütun isimleri yerine indeks numaraları kullanılması için iloc() fonksiyonu kullanılır. Altıncı satır ve
birinci sütun değerlerini göstermek için yandaki komut yazılır. 1., 2. ve 3. satır ve tüm sütunları dilimlemek için
about:blank 89/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Birden fazla satır ve sütunu seçmek için satır ve sütun indis numaraları kullanılır. İndis numarası 1, 2 ve 3 olan
satırlar ile indis numarası 2 ve 3. olan sütunların verilerinin yazdırılması. “ : ” işaretini satır ve sütun isimleriyle
de kullanabiliriz (Görsel 19).
Bölüm Özeti
about:blank 90/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Numpy paketinin üzerine inşa edilen Pandas kütüphanesi, içerdiği özellikleri sayesinde, hem veri bilimi araç
setinin bir bileşeni olabilmekte hem de Python’daki diğer kütüphanelerle kullanılabilmektedir.
∙ Farklı veri türlerindeki verilerin birlikte kullanılmasında sorunlar ortaya çıkaran Numpy paketinin aksine,
Pandas veri analizi daha esnek ve daha iyi performans sunmaktadır.
∙ Pandas kütüphanesinin, sütun olarak nitelendirilen seriler ve seri koleksiyonundan oluşan çok boyutlu bir
tablo olarak nitelendirilen veri çerçevesinin (DataFrame) oluşturduğu iki temel bileşeni vardır.
∙ pd.Series(), Pandas serisi oluşturmak için kullanılan temel metoddur. Sözlük veri yapısı ise, bu seriyi
oluşturmak için kullanılan temel yapılardandır.
Kaynakça
Wes McKinney, “Python for Data Analysis”, O’Reilly Media, Inc., 1005 GravensteinHighway North, Sebastopol,
CA 95472., İkinci Baskı, 2017
WEB: https://www.learndatasci.com/tutorials/python-pandas-tutorial-complete-introduction-for-beginners/
[1]
https://www.learndatasci.com/tutorials/python-pandas-tutorial-complete-introduction-for-beginners/
Ünite Soruları
Soru-1 :
(Çoktan Seçmeli)
Cevap-1 :
import pandas as pd
Soru-2 :
Pandas paketi ile seri oluşturmak için kullanılması gereken komut hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) np.Series()
(B) matplotlib.Series()
(C) pd.Series()
about:blank 91/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(D) python.Series()
Cevap-2 :
pd.Series()
Soru-3 :
read_csv komut ile okunan bir dosyaki veriler aşağıdaki nesnelerden hangisinde görüntülenir?
(Çoktan Seçmeli)
(B) DataFrame
(C) Panel
(D) List
Cevap-3 :
DataFrame
Soru-4 :
Aşağıda verilen “öğrenci” adlı veri çerçevesi biçiminde olan birinci tabloya, ikinci tabloda gözüktüğü gibi
“Bölümü” sütununu eklemek için yazılması gereken kod hangi şıkta doğru olarak verilmiştir.
(Çoktan Seçmeli)
about:blank 92/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-4 :
Soru-5 :
Aşağıda adı “öğrenci” olan veri çerçvesindeki “No” adlı sütunu silmek için yazılması gereken komut hangisidir?
(Çoktan Seçmeli)
(A) remove([öğrenci[“No”])
(B) cut([öğrenci[“No”])
(C) del([öğrenci[“No”])
(D) kes([öğrenci[“No”])
Cevap-5 :
del([öğrenci[“No”])
Soru-6 :
Aşağıdaki “öğrenci” adlı veri çerçvesinde verilen sütun isimlerini “Numarası”, “İsmi”, “Bölümü” biçiminde
değiştirecek kod hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
about:blank 93/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-6 :
Soru-7 :
Aşğıdaki “öğrenci” adlı veri çerçvesinde “No” ve “Adı Soyadı” sütunlarını veri çerçevesi biçiminde
görüntülemek için bu ifadeler şıklarda verilen hangi yapı içerisine yazılmalıdır?
(Çoktan Seçmeli)
a) ()
(B) [[]]
(C) ([])
(D) [()]
Cevap-7 :
[[]]
Soru-8 :
Bir veri çerçvesinde belli bir aralıkta satırları seçmek için satır numaraları arasına aşağıdaki şıklarda verilen
işaretlerden hangisi konur?
(Çoktan Seçmeli)
:,
Cevap-8 :
about:blank 94/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-9 :
Aşağıda verilen “öğrenci” adlı veri çerçevesi tablosundan 20 numaralı satırı seçmek için yazılması gereken
komut hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) öğrenci.iloc[20]
(B) öğrenci.iloc[1]
(C) öğrenci.loc[“20”]
(D) öğrenci_loc[20]
Cevap-9 :
öğrenci.iloc[1]
Soru-10 :
(Çoktan Seçmeli)
Cevap-10 :
about:blank 95/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlamadan Önce
Verileri sayısal olarak değerlendirmek anlaşılabilirlik açısından yeterince uzman olmayı gerektirir. Bu sebeple
işlenen verilerin uzman olmayan kişilerinde anlamasını sağlamak gerekir. Bunun için görselleştirme araçları
kullanılır. Matplotlib, Python’da kullanılan en önemli görselleştirme araçlarından biridir. Bu bölümde bu
kütüphane ile grafiklerin nasıl çizileceği ele alınmıştır.
Çizgi grafiği çizdirmek için ilk olarak bir numpy dizisi oluşturulacak. Daha sonra bu dizi plot() fonksiyonu ile
ekrana çizdirilecek. Nnumpy dizisi oluşturmak için öncelikle numpy paketinin aşağıdaki gibi çağrılması gerekir
(Görsel 2).
about:blank 96/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıdaki kod satırında ilk olarak grafik çiziminde kullanılan verilerin bulunduğu x veri dizisi oluşturuldu. y
ekseninde bu verilerin karesi olan değerler yazdırılmak isteniyor. Bunun için Numpy’nin .power( ) fonksiyon
özelliği kullanıldı. plt.plot(x,y) ile grafik çizdirildi. Ayrıca Matplotlib'i bir Python komut dosyası içinden
kullanılıyorsa, grafiği görüntüleyebilmek için dosyanın içine plt.show() yöntemini eklemek gerekir. plt.show()
komutu ile de çizdirilen grafik ekrana yansıtıldı (Görsel 3):
Aşağıdaki kod ile sinüs fonksiyon grafiği çizdirir. Bu koddaki np.linespace() fonksiyonu belirlenen bir aralıkta,
istenen sayıda sayı içeren bir dizi oluşturur. Bu fonksiyonun genel kullanım şekli: np.linespace(start=,
stop=,num= aralıkta oluşturulmak istenen item sayısı) biçimindedir. x satırı ile sayı dizisi oluşturuluyor, y
satırı ile sinüs fonksiyonu çizdiriliyor (Görsel 4):
about:blank 97/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Grafik çiziminde çizgilerin farklı şekilde görünmesi istendiğinde aşağıda verilen şekildeki karakterler kullanılır
(Görsel 5):
Renk Karakterleri:
Çizgilerin farklı renklerde olması istendiğinde kullanılması gereken renk karakterleri ve anlamları:
“b”⇒ mavi; “g”⇒ yeşil; “r”⇒ kırmızı; “c”⇒ cam göbeği mavisi; “m”⇒ eflatun; “y”⇒ sarı; “k”⇒ siyah;
“w”⇒ beyaz
Aşağıda verilen ekran görüntüsünde Sinüs grafiğini farklı renk ve karakterle çizimine ait kod verilmiştir. Kodun
açıklaması:
about:blank 98/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
plt.figure(figsize=(10,5)) grafiğin boyunu tanımlar. x = np.linspace(0, 10,40) 0 ile 10 aralığında 40 adet sayı
içeren dizi oluşturur. y = np.sin(x), sinüs grafiği çizdirir. plt.plot(x,y, "g^"), yeşil renk ve "^" karakteri ile sinüs
çizgisi; plt.plot(x,y, 'r'), kırmızı renkte sinüs çizgisi çizdirmek için kullanıldı. Çizilen grafikler ekrana plt.show(),
komutu ile görüntülendi (Görsel 6).
Aşağıdaki ekran görüntüsünde plt.plot(x , y, linewidth = 3 ,label = 'Çizgi -1'), kod satırında yer alan linewidth = 3
çizgi kalınlığını; label = 'Çizgi -1‘etiket adı vermeyi; plt.xlabel('X Ekseni'); plt.ylabel('Y Ekseni'); x ve y
eksenlerine isim vermeyi; plt.title ('Çizgi grafı') Grafiğe başlık vermeyi; plt.legend(), grafik etiketini göstermeyi;
plt.grid(linestyle = '-' , which = 'major' , color = 'grey'); grafiğe ızgara çizgileri eklemeyi sağlar (Görsel 7).
about:blank 99/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıdaki örnekte (Görsel 8) öğrenci numaraları ve notlarını grafik olarak çizdiren kodlar yer almaktadır:
about:blank 100/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıdaki örnekte, her iki tarafta da iki farklı ekseni bulunan aynı grafikteki birinci veri ve ikinci veri olarak
ifade edilen çoklu çubuk grafiğini görebilirsiniz (Görsel 9):
about:blank 101/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Yatay Bar grafiği çizdirmek için plt.bar() fonksiyonunun sonuna İngilizcede yatay anlamına gelen “horizontal”
kelimesinin ilk harfi eklenerek elde edilen plt.barh() fonksiyonu kullanılır (Görsel 10).
about:blank 102/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
about:blank 103/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
about:blank 104/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Dilim üzerinde verilerin % olarak değerleri yazdırılmak için autopct='%1.1f%%' parametresi kullanılır.
Shadow=True parametresi dilime gölge ekler (Görsel 13).
about:blank 105/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
about:blank 106/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Normal dağılıma uymayan rastgele sayı üreterek elde edilen histogram grafiği aşağıdaki ekran görüntüsünde
verilmiştir (Görsel 14).
Histograma kenar çizgisi çizdirmek için edgecolor=“blue” parametresi ile mavi renkte çizgi çizdirilir (Şekil
9.16).
about:blank 107/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bunun için aşağıdaki kod örneği verilmiştir. Bu örnekte ilk olarak x, y ve z değişkenlerine normal dağılıma göre
üretilen 800 adet sayısal değer atanmıştır. Daha sonra bu değişkenlerin değerleri ayrı histogram grafikleri
biçiminde tek bir grafik üzerinde gösterilmektedir (Şekil 9.17).
Şekil 9.17. Tek bir grafikte birden fazla histogram grafiği çizimi
Bölüm Özeti
∙ “as plt” olarak kısaltılan matplotlib.pyplot ifadesi, Matplotlib kütüphanesini çalışma sayfasına yüklemek
için gerekli olan komut satırıdır.
about:blank 108/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Numpy dizisinin oluşturulması, çizgi grafiği çizdirmek için uygulanması gereken ilk adımdır. Oluşturulan
Numpy dizisi, plot() fonksiyonu ile ekrana çizdirilmektedir.
∙ Çubuk grafikten, farklı kategorilerin sayısal değerlerini veya verilerini kıyaslama işleminde faydalanılır.
∙ Çubuk grafiğini çizdirmek için kullanılan temel fonksiyon, plt.bar() fonksiyonudur. Çubuk grafiğini yatay
olarak çizdirmek için: plt.barh() fonksiyonu kullanılır.
∙ Dağıtık grafik için plt.scatter(); dilim grafik için plt.pie( ) ve histogram grafik için de plt.hist() fonksiyonu
kullanılır.
Kaynakça
WEB: https://towardsdatascience.com/introduction-to-data-visualization-in-python-89a54c97fbed
Wes McKinney, “Python for Data Analysis”, O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472., İkinci Baskı, 2017
WEB: https://www.mygreatlearning.com/blog/matplotlib-tutorial-for-data-visualisation/
[1]
https://towardsdatascience.com/introduction-to-data-visualization-in-python-89a54c97fbed
[2]
https://www.mygreatlearning.com/blog/matplotlib-tutorial-for-data-visualisation/
Ünite Soruları
Soru-1 :
(Çoktan Seçmeli)
(A) numpy
(B) pandas
(C) skilearn
(D) matplotlib
Cevap-1 :
matplotlib
Soru-2 :
(Çoktan Seçmeli)
about:blank 109/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-2 :
çizgi çizdirir
Soru-3 :
(Çoktan Seçmeli)
(A) plt.plot()
(B) plt.show()
(C) plt.legend()
(D) plt.screen()
Cevap-3 :
plt.show()
Soru-4 :
(Çoktan Seçmeli)
Cevap-4 :
Soru-5 :
(Çoktan Seçmeli)
about:blank 110/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-5 :
Soru-6 :
Grafik çiziminde kullanılan renk kodlaması için aşağıda verilen eşleştirmeden hangisi yanlış olarak verilmiştir?
(Çoktan Seçmeli)
(A) k”=siyah
Cevap-6 :
m”= mavi
Soru-7 :
(Çoktan Seçmeli)
Cevap-7 :
Soru-8 :
(Çoktan Seçmeli)
(A) plt.plot()
(B) plt.bar()
(C) plt.pie()
(D) plt.show()
Cevap-8 :
about:blank 111/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
plt.bar()
Soru-9 :
(Çoktan Seçmeli)
(A) plt.plot()
(B) plt.scatter()
(C) plt.hist()
(D) plt.barhist()
Cevap-9 :
plt.hist()
Soru-10 :
(Çoktan Seçmeli)
Cevap-10 :
about:blank 112/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
"Verilerimiz varsa, verilere bakalım. Elimizdeki tek şey fikirse, benimkiyle gidelim." Jim Barksdale, eski
Netscape CEO'su
Kazanımlar
Birlikte Düşünelim
Başlamadan Önce
Önceki bölümlerde Python dili ile ilgili temel bilgiler ile birlikte verileri işlemek için kullanılan Python’a özgü
veri yapıları öğrenildi. Verileri işlemede kullanılan Numpy, Pandas ve Matplotlib kütüphaneleri ve özellikleri
örnekler yapılar anlatıldı. Bu bölümden sonra artık bu bilgilerimizin elimize aldığımız bir veri üzerinde nasıl
kullanılacağı anlatılacaktır. Bunun ilk aşamasını elimizdeki veri hakkında tanımlayıcı istatistik verilerin
çıkarılması oluşturur. Bu bölümde verileri üzerinde keşifsel analizinin nasıl yapıldığı incelenmiştir.
Keşifsel Veri Analizi, veriler üzerinde makine öğrenmesi algoritmalarını çalıştırmadan önce, kalıpları keşfetmek,
anormallikleri tespit etmek, hipotezleri test etmek ve özet istatistikler ve grafikler yardımıyla veriler üzerinde ilk
[2]
araştırmaların gerçekleştirilmesi için kritik süreci ifade eder .
Keşifsel veri analizi, kurallar ve formüllerle oldukça katı olma eğiliminde olan çıkarımsal istatistiklerin bir
tamamlayıcısıdır. İleri düzeyde, EDA, veri setine farklı açılardan bakmayı ve bunları açıklamayı ve ardından
özetlemeyi içerir.
about:blank 113/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
[3]
Bu ders kapsamında literatürde var olan “adult.csv” veri seti kullanılacaktır. İlk olarak bu veri internetten
indirilerek daha önce bilgisayarımızda oluşturduğumuz veri seti dizinine kaydedilir. Daha sonra bu veri seti,
öğrenmiş olduğumuz veri okuma komutu ile aşağıdaki gibi (Görsel 1) çalışma kitabına yüklenir ve veri.head()
komutu ile verinin ilk beş satırı görüntülenir.
.shape komutu ile veri setinin kaç satır ve sütundan oluştuğu bilgisi elde edilir. Ülkeler bazında veri seti
içerisinde her ülkeden kaç yetişkin olduğunu bulmak için .group by komutu kullanılır. Bu bilgileri görüntüleyen
ekran çıktısı aşağıdaki şekilde verilmiştir (Görsel 2):
Cinsiyeti erkek olan kayıtların sayısını bulan komutu yazalım. Daha sonra da cinsiyeti erkek ve geliri '>50K‘ ya
eşit olan kayıtların sayısını bulan komut aşağıdaki şekilde verilmiştir (Görsel 3):
about:blank 114/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cinsiyeti kadın olan kayıtların sayısını bulan komutu yazalım. Sonra cinsiyeti kadın ve geliri '>50K‘ ya eşit olan
kayıtların sayısını bulan komutun ekran görüntüsü aşağıdaki şekilde verilmiştir (Görsel 4):
Veriyi yaşa göre gruplayarak her yaş grubunda kaç kişi olduğunu bulan komutu yazalım. Dikkat edilirse 74 farklı
yaş grubu olduğu anlaşılmaktadır. En düşük yaş 17 ve en büyük yaş ise 90 olarak elde edilmiştir (Görsel 5).
Verilerin Ortalaması
about:blank 115/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Ortalama, veri hakkında bilgi veren en temel ve önemli istatistik komutudur. Ortalama, bir numunenin,
örneklemin merkezi eğilimini tanımlar. Ortalamalardaki bu farklılık, popülasyon ortalaması ve örneklem
ortalaması olmasından kaynaklanır. İlki tüm popülasyonun ortalamasıdır. Diğerleri alınan örneklerin
(kadın/erkek) ortalamasıdır (Görsel 6).
Genellikle ortalama, verilerin yeterli bir tanımlayıcısı değildir. Verileri, ortalama ve varyans gibi iki sayıyla biraz
daha iyi tanımlayabiliriz: Varyans σ Verinin yayılmasını açıklar. (xi −μ) terimine ortalamadan sapma denir, bu
nedenle varyans, ortalama kare sapmadır. Varyansın karekökü σ, standart sapma olarak adlandırılır. Standart
sapmayı tanımlarız çünkü varyansı yorumlamak zordur. Örnek verilerimiz için temel istatistikleri alalım (Görsel
7):
Örneklerin ortalaması iyi bir tanımlayıcıdır, ancak önemli bir dezavantajı vardır: Örnek setinde diğerlerinden çok
farklı bir değere sahip bir hata varsa ne olur? Örneğin, haftalık çalışılan saatler dikkate alındığında, normalde 20
ile 80 arasında bir aralıkta olacaktır ama yanlışlıkla 1000 değeri olsaydı ne olurdu? Verinin geri kalanından
önemli ölçüde farklı olan bir veri öğesine aykırı değer denir. Bu durumda, ortalama μ, uç değere doğru büyük
ölçüde değişecektir. Bu dezavantaja bir çözüm, bir numunenin orta değerini veren bir sıra istatistiği olan
istatistiksel medyan μ12 tarafından sunulur. Bu durumda, tüm değerler büyüklüklerine göre sıralanır ve medyan,
sıralı listenin ortasındaki değer olarak tanımlanır. Dolayısıyla, aykırı değerler karşısında çok daha sağlam olan bir
değerdir. Bu açıklamalardan sonra veri setimizdeki çalışan erkek ve kadınların medyan yaşını bulalım (Görsel 8).
about:blank 116/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Şimdide veri setimizdeki yüksek gelirli erkek ve kadınların medyan yaşını bulalım. Beklendiği gibi, her iki veri
setinde de erkekler ve kadınlar arasındaki fark aynı olsa da yüksek gelirli kişilerin medyan yaşı tüm çalışanlarda
(erkek/kadın) daha yüksek çıkmıştır (Görsel 9).
Veri Dağılımları
Verileri sadece ortalamalarına, medyanlarına ve varyanslarına bakarak özetlemek tehlikeli olabilir: Çok farklı
veriler aynı istatistiklerle tanımlanabilir. Yapılacak en iyi şey, verileri inceleyerek doğrulamaktır. Her bir değerin
ne sıklıkta göründüğünü (yani, sıklığının ne olduğunu) açıklayan veri dağılımına bir göz atabiliriz. Bir dağılımın
en yaygın temsili, her bir değerin sıklığını gösteren bir grafik olan histogramdır. Çalışan erkek ve kadınların
yaşlarını ayrı ayrı gösterelim (Görsel 10).
about:blank 117/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Tanım olarak, bir rastgele değişkenin; X'in Kümülatif Dağılım Fonksiyonu (CDF), rastgele değişken X'in, x'e eşit
veya daha küçük bir değer alması olasılığıdır (Görsel 12).
about:blank 118/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Aşağıdaki grafikte (Görsel 13) kadın ve erkeklerin kümülatif dağılım fonksiyonu birlikte gözükmektedir. Bu
grafiğe göre 22’li yaşlarda gelir seviyeleri eşit iken, ilerleyen yaşlarda zengin olan erkeklerin geliri kadınların
yaklaşık olarak iki katına çıkmaktadır:
Bölüm Özeti
∙ Veri kümelerinin ana özelliklerinin görsel yöntemler kullanılarak özetlenmesinde ve analiz edilmesinde
kullanılan bir yaklaşım olan Keşifsel Veri Analizi, sayıların yorumlanması sürecine görsellik unsurunu katarak bu
süreci sıkıcılıktan ve tekdüzelikten kurtarmayı hedeflemektedir.
∙ Keşifsel veri analizi yaklaşımını uygulayabilmek için öncelikle, verilerin internetten indirilmesi veya ilgili
verinin sisteme girilmesi gerekmektedir. Bu veriler, önceden bilgisayarda oluşturulan veri seti dizinine kaydedilir.
Sonrasında da bu veri seti, veri okuma komutu ile çalışma kitabına yüklenir ve veri.head() komutu kullanılarak
verinin ilk beş satırı görüntülenir.
∙ Sadece ortalama, medyan ve varyans dikkate alınarak verilerin özetlenmesi ve yorumlanması tehlikelidir. Bu
durumda uygulanması gereken en doğru yöntem, verilerin tek tek incelenmesi ve doğrulanmasıdır.
Kaynakça
about:blank 119/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
WEB: https://www.datacamp.com/community/tutorials/exploratory-data-analysis
WEB: https://www.edureka.co/blog/exploratory-data-analysis-in-python/
WEB: https://towardsdatascience.com/an-introduction-to-exploratory-data-analysis-in-python-9a76f04628b8
WEB: https://stats.libretexts.org/@go/page/3259
[1]
https://towardsdatascience.com/an-introduction-to-exploratory-data-analysis-in-python-9a76f04628b8
[2]
https://www.edureka.co/blog/exploratory-data-analysis-in-python/
[3]
https://www.kaggle.com/sohaibanwaar1203/adultscsv
[4]
Probability Mass Functions (PMFs) and Cumulative Distribution Functions (CDFs) for Discrete Random
Variables. (2020, January 9). Retrieved April 15, 2021, from https://stats.libretexts.org/@go/page/3259
Ünite Soruları
Soru-1 :
Keşifsel veri analizi aşağıda verilen şıklardan hangisini daha fazla göz önüne alır?
(Çoktan Seçmeli)
(C) modellemeye
Cevap-1 :
Soru-2 :
(Çoktan Seçmeli)
Cevap-2 :
about:blank 120/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-3 :
Veri setindeki herhnagi bir sütuna ait ortalama değeri bulmak için hangi komut kullanılır?
(Çoktan Seçmeli)
(A) var()
(B) mean()
(C) median()
(D) std()
Cevap-3 :
mean()
Soru-4 :
hız = [99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86] veri listesinin median değeri aşağıdaki şıklardan
hangisinde doğru olarak verilmiştir.
(Çoktan Seçmeli)
(A) 87
(B) 89.77
(C) 88
(D) 86
Cevap-4 :
87
Soru-5 :
hız = [99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86] veri listesinin ortalama değeri aşağıdaki şıklardan
hangisinde doğru olarak verilmiştir.
(Çoktan Seçmeli)
(A) 88.77
(B) 89.77
(C) 89
(D) 87.5
Cevap-5 :
89.77
about:blank 121/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-6 :
(Çoktan Seçmeli)
(A) hist
(B) histtype
(C) density
(D) alpha
Cevap-6 :
density
Soru-7 :
Kümülatif toplam fonksiyonunu çizdirmek için aşağıda verilen argümanlardan hangisi kullanılır?
(Çoktan Seçmeli)
(A) histtype
(B) linewidth
(C) bins
(D) cumulative
Cevap-7 :
cumulative
Soru-8 :
Aşağıda verilen “veri” adlı veri çerçevesinde “item” sütununa gruplama işlemi ile birlikte sayma işlemi
uygulanmak isteniyor. Bunun için gerekli komut hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
(A) say=veri.groupby("item").size()
(B) say=veri.groupby("item").count()
about:blank 122/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(C) say=veri.groupby(item).count()
(D) say=veri.groupby("item").head()
Cevap-8 :
say=veri.groupby("item").size()
Soru-9 :
Aşağıda verilen “veri” adlı veri çerçevesinde “network_type” i “mobile” olan kayıtları görüntülemek isteniyor.
Bunun için gerekli olan doğru komut hangi şıkta verilmiştir?
(Çoktan Seçmeli)
Cevap-9 :
x = veri[(veri.network_type == 'mobile')]
Soru-10 :
Aşağıda verilen “veri” adlı veri çerçevesinde göz önüne alınarak aşağıdaki komut yazılıyor.
y =veri[(veri.duration>=4.0)]
about:blank 123/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
Cevap-10 :
about:blank 124/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Elimizde var olan bir problem hangi makine öğrenimi problem sınıfına girer?
Başlamadan Önce
Makine öğrenmesi özellikle veri çokluğu olan problemlerde problem çözme aracı olarak kullanılır. Bu tür
problemlerin çözümünde denetimli ve denetimsiz olmak üzere kullanılan temelde iki yaklaşım vardır. Denetimli
öğrenme daha çok sınıflama problemleri için, denetimsiz öğrenme yöntemleri ise kümeleme problemleri için
kullanılırlar.
about:blank 125/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Makine öğrenimi bu sorununun üstesinden, giriş ve çıkış verilerinin nasıl ilişkilendirildiğini öğrenerek ve bunun
için gerekli kuralları yazarak gelir. Bu şekilde makine öğrenmesinde her yeni veri olduğunda/girildiğinde
programcıların yeni kurallar yazmasına gerek yoktur (Şekil 12). Kullanılan algoritmalar, etkinliği zaman içinde
iyileştirmek için yeni verilere ve alınan deneyim sonuçlarına göre uyarlanır.
Makine öğreniminin temel amacı öğrenme ve çıkarımdır. Her şeyden önce makine, kalıpları keşfederek öğrenir.
Bu keşif veriler sayesinde yapılır. Veri bilimcinin önemli bir parçası, makineye hangi verilerin sağlanacağını
dikkatlice seçmektir. Bir problemi çözmek için kullanılan özniteliklerin listesine özellik vektörü denir. Özellik
vektörünü, bir sorunu çözmek için kullanılan bir veri alt kümesi olarak düşünebilirsiniz.
Makine, gerçeği basitleştirmek ve bu keşfi bir modele dönüştürmek için bazı algoritmalar kullanır. Bu nedenle,
öğrenme aşaması verileri tanımlamak ve bir model halinde özetlemek için kullanılır. Bir makineye yeterli
miktarda veri sağlanırsa, gerçek dünyadaki problemleri çözmek için Makine Öğrenimi Algoritmalarını kullanarak
bu verileri nasıl yorumlayacağını, işleyeceğini ve analiz edeceğini öğrenebilir.
Makine Öğrenimini daha iyi anlamak için sık kullanılan terminolojilerden bazılarını bilmek gerekir. Makine
öğrenmesinde kullanılan tanımlamalar:
Algoritma: Bir Makine Öğrenimi algoritması, verilerden kalıpları öğrenmek ve ondan önemli bilgiler çıkarmak
için kullanılan bir dizi kural ve istatistiksel tekniktir. Bir Makine Öğrenimi modelinin arkasındaki mantıktır.
Makine Öğrenimi algoritmasına bir örnek, Doğrusal Regresyon algoritmasıdır.
Model: Model, Makine Öğreniminin ana bileşenidir. Bir model, Makine Öğrenimi Algoritması kullanılarak
eğitilir. Bir algoritma, doğru çıktıyı elde etmek için bir modelin verilmiş girdiye göre alması gereken tüm
kararları eşler.
Tahmin Değişkeni: Çıktıyı tahmin etmek için kullanılabilen verilerin bir özelliğidir.
Yanıt Değişkeni: Yordayıcı değişken(ler) kullanılarak tahmin edilmesi gereken özellik veya çıktı değişkenidir.
Eğitim Verileri: Makine Öğrenimi modeli, eğitim verileri kullanılarak oluşturulur. Eğitim verileri, modelin
çıktıyı tahmin etmek için gerekli olan temel eğilimleri ve kalıpları belirlemesine yardımcı olur.
Test Verileri: Model eğitildikten sonra, bir sonucu ne kadar doğru tahmin edebileceğini değerlendirmek için test
edilmelidir. Bu, test veri seti tarafından yapılır.
Bu tanımlamaları özetleyen Makine öğrenmesinin şematik modeli aşağıda Şekil 13’te verilmiştir. Makine
Öğrenimi süreci, makineye çok miktarda veri besleyerek başlar. Bu verileri kullanarak makine, veriler arasındaki
about:blank 126/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
ilişkileri ve eğilimleri tespit etmek üzere eğitilir. Bu bilgiler daha sonra bir problemi çözmek için bir algoritma
kullanarak bir Makine Öğrenimi Modeli oluşturmak için kullanılır.
Bu adımda, tam olarak neyin tahmin edilmesi gerektiğini anlamalıyız. Bizim durumumuzda amaç, hava
koşullarını inceleyerek yağmur olasılığını tahmin etmektir. Bu aşamada, bu sorunu çözmek için ne tür verilerin
kullanılabileceği veya çözüme ulaşmak için izlemeniz gereken yaklaşım türü hakkında zihinsel notlar almak da
önemlidir.
about:blank 127/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bu aşamada çeşitli sorular sormak gerekir. Örneğin; sorunu çözmek için ne tür verilere ihtiyaç var? İstenen
veriler mevcut mu? Verileri nasıl alabilirim? Gerekli olan veri türlerini öğrendikten sonra, bu verilerin nasıl elde
edebileceği anlaşılmalı. Örneğin; Veri toplama işlemi manuel olarak veya web kazıma yoluyla yapılabilir. Baştaki
sorunumuzu tekrar düşünürsek; hava tahmini için gerekli veriler, nem seviyesi, sıcaklık, basınç, yerel özellikler
gibi veriler analiz için toplanmalı ve saklanmalıdır.
Topladığınız veriler çoğu zaman istenen formatta olmaz. Veri setinde eksik değerler, fazlalık değişkenler,
yinelenen değerler vb. gibi birçok tutarsızlıkla karşılaşılır. Bu tür tutarsızlıkların giderilmesi çok önemlidir.
Çünkü bunlar yanlış hesaplamalara ve tahminlere yol açabilir. Bu nedenle, bu aşamada, veri setini herhangi
tutarsızlık bu aşamada düzeltilir.
Bu aşama tamamen verileri derinlemesine analiz ederek veride saklı olan ilişkileri bulmayı amaçlar. Keşifsel Veri
Analizi (EDA), Makine Öğreniminin beyin fırtınası aşamasını oluşturur. Veri Keşfi, verilerdeki kalıpları ve
eğilimleri anlamayı içerir. Bu adımda, tüm yararlı bilgiler çıkarılır ve değişkenler arasındaki korelasyonlar
anlaşılır. Örneğin, yağış tahmini durumunda, sıcaklık düştüğünde güçlü bir yağmur olasılığı olduğunu biliyoruz.
Bu tür korelasyonlar bu aşamada anlaşılır ve görselleştirilir.
Veri Keşfi sırasında elde edilen tüm içgörüler ve ilişkiler, Makine Öğrenimi Modelini oluşturmak için kullanılır.
Bu aşama her zaman veri kümesini eğitim verileri ve test verileri olmak üzere iki bölüme ayırarak başlar. Eğitim
verileri, modeli oluşturmak ve analiz etmek için kullanılacaktır. Modelin mantığı, uygulanmakta olan Makine
Öğrenimi Algoritmasına dayandırılır. Yağışı tahmin etme durumunda, çıktı True (yarın yağmur yağacaksa) veya
False (yarın yağmur yağmayacak) şeklinde olacağından, Lojistik Regresyon gibi bir Sınıflandırma Algoritması
kullanabiliriz. Doğru algoritmayı seçmek, çözmeye çalıştığınız problemin türüne, veri kümesine ve problemin
karmaşıklık düzeyine bağlıdır.
Eğitim veri setini kullanarak bir model oluşturduktan sonra, modeli test etme aşamasına gelinir. Test veri seti,
modelin verimliliğini ve sonucu ne kadar doğru tahmin edebileceğini kontrol etmek için kullanılır. Doğruluk
hesaplandıktan sonra, modeldeki diğer iyileştirmeler bu aşamada uygulanır. Modelin performansını iyileştirmek
için parametre ayarlama ve çapraz doğrulama gibi yöntemler kullanılabilir.
7. Adım: Tahminler
Model değerlendirilip geliştirildikten sonra, nihayet tahminlerde bulunmak için kullanılır. Nihai çıktı, Kategorik
bir değişken (ör. Doğru veya Yanlış) veya Sürekli Miktar (ör. Bir hisse senedinin tahmini değeri) olabilir. Başta
örnek olarak ele aldığımız yağış oluşumunun tahmini işleminin çıktısı kategorik bir değişken olacaktır.
∙ Denetimli Öğrenim
∙ Denetimsiz Öğrenme
∙ Takviyeli Öğrenme
Denetimli Öğrenim
Denetimli öğrenme, makineyi etiketlenmiş verileri kullanarak öğrettiğimiz veya eğittiğimiz bir tekniktir.
Denetimli Öğrenimi anlamak için bir analoji düşünelim. Çocuklar olarak matematik problemlerini çözmek için
hepimizin rehberliğe ihtiyacı vardı. Öğretmenlerimiz, toplamanın ne olduğunu ve nasıl yapıldığını anlamamıza
about:blank 128/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
yardımcı oldu. Benzer şekilde, denetimli öğrenmeyi bir rehber içeren bir Makine Öğrenimi türü olarak
düşünebilirsiniz. Etiketli veri seti, algoritmaya verilerdeki kalıpları anlaması için eğitecek öğretmendir (Şekil 15).
Yukarıdaki şekli göz önüne alalım (Şekil 15). Burada Tom ve Jerry'nin makine görüntülerini besliyoruz ve amaç,
makinenin görüntüleri iki gruba ayırması ve sınıflandırmasıdır (Tom görüntüleri ve Jerry görüntüleri). Modele
beslenen eğitim veri kümesi etiketlidir. Öğretmen gibi makineye "Tom böyle görünüyor ve bu da Jerry" diyoruz.
Bunu yaparak makineyi etiketli verileri kullanarak eğitiyoruz. Denetimli Öğrenmede, etiketli verilerin yardımıyla
yapılan iyi tanımlanmış bir eğitim aşaması vardır.
Denetimsiz Öğrenme
Denetimsiz öğrenme, etiketlenmemiş verileri kullanarak ve modelin rehberlik olmadan bu bilgiler üzerinde
hareket etmesine izin veren eğitimi içerir. Denetimsiz öğrenmeyi herhangi bir rehberlik olmadan öğrenen zeki bir
çocuk olarak düşünün. Bu tür Makine Öğreniminde, model etiketli verilerle beslenmez (Şekil 16). Çünkü
modelde 'bu görüntü Tom ve bu Jerry'dir' konusunda hiçbir ipucu yoktur, Tom ve Jerry arasındaki kalıpları ve
farklılıkları kendi başına çözer. Bu işlem için çok sayıda veriyi işlenir.
about:blank 129/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Örneğin, bu görüntünün 1. tip olduğunu anlamak için Tom'un sivri kulaklar, daha büyük boyut vb. gibi öne çıkan
özelliklerini tanımlar. Benzer şekilde Jerry'de de bu tür özellikleri bulur ve bu görüntünün 2. tip olduğunu bilir.
Tom'un veya Jerry'nin kim olduğunu bilmeden görüntüleri iki farklı sınıfa ayırıyor.
Takviyeli Öğrenme
Takviyeli Öğrenme, bir temsilcinin bir ortama yerleştirildiği ve bu ortamda davranmayı belirli eylemleri
gerçekleştirerek ve bu eylemlerden aldığı ödülleri gözlemleyerek öğrendiği Makine öğreniminin bir parçasıdır.
Bu tür bir Makine Öğrenimi nispeten farklıdır. Issız bir adaya bırakıldığınızı hayal edin! Siz ne yapardınız?
Elbette herkes gibi panik yapardınız. Ancak zaman geçtikçe adada nasıl yaşayacağınızı öğrenmeye başlarsınız.
Çevreyi keşfedecek, iklim koşullarını, orada yetişen yiyecek türlerini, adanın tehlikelerini vb. durumları
anlarsınız. Takviyeli Öğrenme tam olarak bu şekilde çalışır. Takviyeli Öğrenim, esas olarak kendi kendine giden
arabalar gibi gelişmiş Makine Öğrenimi alanlarında kullanılır.
Aşağıda verilen şekilde (Şekil 17) Makine Öğrenimi türleri özetlenmiştir. Şimdi, bu Makine Öğrenimi
yöntemlerini kullanılarak çözülebilen problemlerin türlerine bakalım. Bu şekle göre, Makine Öğreniminde
çözülebilecek üç ana sorun türü vardır:
[4]
11.6. Makine Öğreniminde Problem Türleri
Regresyon: Bu tür bir problemde çıktı sürekli bir miktardır. Yani, örneğin, mesafeye göre bir arabanın hızını
tahmin etmek istiyorsanız, bu bir Regresyon problemidir. Regresyon problemleri, Doğrusal Regresyon gibi
Denetimli Öğrenme algoritmaları kullanılarak çözülebilir.
Sınıflandırma: Bu tipte çıktı kategorik bir değerdir. E-postaları istenmeyen posta ve istenmeyen posta olmayan
olmak üzere iki sınıfa ayırmak, Destek Vektör Makineleri, Naive Bayes, Lojistik Regresyon, K-En Yakın Komşu
gibi Denetimli Öğrenme sınıflandırma algoritmaları kullanılarak çözülebilen bir sınıflandırma problemidir.
Kümeleme: Bu tür bir problem, girdinin özellik benzerliğine göre iki veya daha fazla kümeye atanmasını içerir.
Örneğin, izleyicileri ilgi alanlarına, yaşlarına, coğrafyalarına vb. göre benzer gruplara ayırmak. Bu işlem K-
Means Kümeleme gibi Denetimsiz Öğrenme algoritmaları kullanılarak yapılabilir. Aşağıda bu üç türün
özelliklerini özetleyen şekil aşağıda verilmiştir (Şekil 18).
about:blank 130/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bölüm Özeti
∙ Makine Öğrenimi, bilgisayarın bir öğrenme algoritması ile kendi kendini geliştirebilmesini ve verilen
örneklerden öğrenebilmesini hedefleyen ve sağlayan bir yazılım sistemidir.
∙ Makine öğrenimi önemli ölçüde farklıdır, bir programcının, yazılımın geliştirildiği sektördeki bir uzmana
danışarak tüm kuralları kodladığı geleneksel programlamadan önemli ölçüde farklıdır.
∙ Makine öğrenimi, giriş ve çıkış verilerinin ilişkilendirilme yöntemini öğrenerek ve bunun için gerekli
kuralları yazarak gerçekleştirilir. Bu sayede programcının her yeni durumda veri yazması zorunluluğu ortadan
kalkar.
∙ Makine Öğrenim süreci, bir problem ifadesine çözüm bulmak için kullanılabilecek bir öngörücü model
oluşturmayı içerir.
∙ Bir makineye; Denetimli Öğrenim, denetimsiz öğrenme ve takviyeli öğrenme yöntemleriyle bir husus
öğretilebilir.
∙ Makine öğreniminde karşılaşan problem türleri üç tanedir Bunlar: regresyon, sınıflandırma ve kümelemedir.
Kaynakça
Sinan Uğuz, “Makine Öğrenmesi”, Nobel Yayıncılık, 2019
WEB: https://machinelearningmastery.com/supervised-and-unsupervised-machine-learning-algorithms/
WEB: https://www.analyticssteps.com/blogs/introduction-machine-learning-supervised-and-unsupervised-
learning
[1]
https://www.mygreatlearning.com/blog/what-is-machine-learning/
about:blank 131/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
[2]
https://livecodestream.dev/post/7-steps-of-machine-learning/
[3]
https://www.potentiaco.com/what-is-machine-learning-definition-types-applications-and-examples/
[4]
https://elitedatascience.com/machine-learning-algorithms
Ünite Soruları
Soru-1 :
(Çoktan Seçmeli)
(A) PCA
Cevap-1 :
PCA
Soru-2 :
Bir dizi girdi verisine sahip olduğunuzda ve olası yanıtları bildiğinizde ne tür bir makine öğrenimi algoritması
tahminlerde bulunur?
(Çoktan Seçmeli)
Cevap-2 :
Denetimli öğrenme
Soru-3 :
(Çoktan Seçmeli)
(A) 3
(B) 7
about:blank 132/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(C) 5
(D) 6
Cevap-3 :
Soru-4 :
Aşağıda verilen şıklardan hangisi makine öğrenmesi problem türlerinden biri değildir?
(Çoktan Seçmeli)
(A) Sınıflama
(C) Kümeleme
(D) Regresyon
Cevap-4 :
Özellik indirgeme
Soru-5 :
Aşağıda verilen şıklardan hangisi makine öğrenim süreci adımlarından biri değildir?
(Çoktan Seçmeli)
Cevap-5 :
Algoritma geliştirme
Soru-6 :
(Çoktan Seçmeli)
(B) ML, bir algoritma veya yöntem kullanarak ham verilerden kalıpları çıkaran bir yapay zeka türüdür.
(D) Makine öğreniminin ana odağı, bilgisayar sistemlerinin, açıkça programlanmadan veya insan müdahalesi
olmaksızın deneyimlerden öğrenmesine olanak sağlamaktır.
about:blank 133/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-6 :
Soru-7 :
(Çoktan Seçmeli)
(A) denetimli
(B) denetimsiz
(C) Modellemi
(D) Pekiştirmeli
Cevap-7 :
denetimsiz
Soru-8 :
(Çoktan Seçmeli)
(A) Pekiştirmeli
(B) Denetimsiz
(C) Kümelemeli
(D) Denetimli
Cevap-8 :
Kümelemeli
about:blank 134/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-9 :
Makine öğrenimi (ML) ve yapay zeka (AI) ile ilgili aşağıda verilen seçeneklerden hangisi doğru değildir?
(Çoktan Seçmeli)
(C) Makine öğrenimi, bir veri kümesini yazılıma dönüştüren bir dizi tekniktir.
Cevap-9 :
Soru-10 :
Veri seti eğitim ve test (eğitim-test) verisi olarak iki kısma genel olarak hangi orana göre yapılır. Aşağıda verilen
şıklardan hangisi bu oranı en doğru olarak ifade etmektedir?
(Çoktan Seçmeli)
(A) %75~80-%25~30
(B) %45~50-%55~50
(C) %25~30-%75~70
(D) %35~70-%65~30
Cevap-10 :
%75~80-%25~30
about:blank 135/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
12. REGRESYON
Birlikte Düşünelim
∙ Regresyon nedir?
∙ Çalışma sayfasına aktarılan bir veri setinin bağımlı ve bağımsız özellikleri nasıl belirlenir?
Başlamadan Önce
Bu bölümde makine öğrenmesi algoritmalarında biri olan lineer regresyon algoritması incelenmiştir. Bu
algoritma denetimli öğrenme algoritmasıdır. Bağımsız değişkenlere göre bağımlı değişkenin alacağı değeri
tahmin etmekte kullanılır. Bunun için ilk olarak var olan verilerden modelin katsayıları belirlenir ve bu
katsayılara bağlı olarak verilerin sahip olduğu matematik formül oluşturulur. Bu formül daha sonra yeni veriler
geldiğinde çıktının ne olması gerektiğini tahmin etme işleminde gerekli hesaplamaları yapmak için kullanılır.
• Analiz yapabilmek için verilere ihtiyacımız vardır. Tüm popülasyonu değerlendirmek zahmetli bir iştir. Bu
yüzden analiz için örnek veriler elde edilir ve kullanılır.
• Verileri aldıktan sonra, tüm popülasyon için işe yarayacak bir model tasarlamamız gerekir.
Ders çalışma saati ile başarı arasında neden-sonuç tipi modelleme olduğunu fark ettiğimizi düşünelim. Eğer
sonuç böyle çıkarsa, doğrusal regresyonumuzu elde ettiğimiz problemde neden (çalışma saati) artırdıkça etkinin
(başarının) artması anlamına gelir. Bu durumda her ikisi de paralel olarak değişir.
about:blank 136/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
‘in bir fonksiyonudur. Regresyon modeli doğrusal bir yaklaşım olduğundan iyi bir
tahmin modeli kurabilmek için bulmamız gerekir. Bu katsayılar hesaplandıktan sonra
kurulacak doğrusal denklem yardımıyla verilecek yeni girdi değerlerinin sonucunu tahmin edebiliriz. Bu
katsayıların hesaplanmasını sağlayan matematiksel formüller vardır. Ancak bu kitap kapsamında bu formüllerin
detayına girilmemiştir. Ancak bu formülleri kullanan ve bize istediğimiz bu katsayıların değerlerini veren Python
kodunun nasıl kullanılacağı verilecek örnek ile detaylı bir şekilde açıklanacaktır.
Öncelikle Python’da ihtiyacımız olan tüm kütüphaneleri ve sınıfları Jupyter Notebook çalışma sayfasına
aktarmak gerekir. Sonuçlarımızı grafiksel olarak kolayca görselleştirebilmemiz için "matplotlib" adlı kitaplığı
yüklüyoruz. Gerekli hesaplama işlemeleri için Numpy ve veri okuyup üzerinde işlemler yapmak için Pandas
kütüphanelerini de ekliyoruz. Ayrıca bu zamana kadar kullanmadığımız ve doğrusal regresyon modelimizi
kurmak için gerekli olan sklearn kütüphanesi ve linear regresyon modelinin çalışma sayfasına eklenmiş hali
aşağıda Görsel 1’de verilmiştir.
about:blank 137/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Daha sonra verimizin sütunlarını Türkçeleştiriyoruz. Bu sayede sonuçları daha kolay takip etmiş oluruz. Bu işlem
için columns() metodunu kullanıyoruz. Ayrıca describe() metodu ile de verimiz hakkında istatistik bilgileri
görüntülüyoruz (Görsel 3).
Son olarak verimizin grafik üzerindeki durumunu çizdiren kodlar aşağıda Görsel 4’teki ekran görüntüsünde
verilmiştir. Dikkat edilirse çalışma saati başarı arasında doğrusal bir ilişkinin var olduğu anlaşılmaktadır:
about:blank 138/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
[3]
12.1.2. Veri Setinin Hazırlanması
İlk olarak verimizdeki özellikleri ve bağımlı değişkeni sırasıyla x ve y değişkenlerine ayırıyoruz. Verilerimizin
tamamı sayı olduğundan ve içinde metin olmadığından, verilerimizi kodlamak zorunda değiliz. Ayrıca
LinearRegression sınıfını kullandığımız için, özellik ölçeklendirme işlemini de yapmamıza gerek yok. Çünkü bu
işlem sklearn kütüphanesi tarafından hallediliyor. Daha sonra veri setini eğitim seti ve test seti şeklinde ikiye
ayırıyoruz. Verileri 1 / 3'e bölüyoruz. Böylece 30 satırdan 20 satır eğitim setine ve 10 satır test setine ayrılmış
oldu. Bu işlemleri yapan kodlar aşağıdaki şekilde (Görsel 5.) sırası ile verilmiştir:
Son olarak oluşturulan bu modeli verilerimize uydurmamız gerekir. Başka bir deyişle eğitim verilerimizi
kullanarak modelin "öğrenmesini" sağlıyoruz. Oluşturulan nesne ve modelin eğitilmesi için gerekli kodlar
aşağıdaki şekilde verilmiştir (Görsel 6).
about:blank 139/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Modelimiz, oluşturduğumuz eğitim seti ile eğitildi. Artık modeli, sahip olduğunuz test veri kümesiyle test etmeye
başlayabiliriz. Girilen test verilerine göre modelimiz çeşitli değerler üretti. Tahmin işlemi ve bu değerleri ekran
yazdıran kod aşağıdaki ekran görüntüsünde verilmiştir (Görsel 8).
about:blank 140/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bir sonraki adımda amacımız, tahmininizin ne kadar iyi çalıştığını görmektir. Bunun için matplotlib kütüphanesi
kullanılacaktır. İlk olarak, veri setimizdeki gerçek değerleri eğitim seti için tahmin edilen değerlere göre
görselleştireceğiz. Bu bize modelimizin ne kadar doğru olduğunu söyleyecektir. Daha sonra, test setiyle başka bir
grafik çizeceğiz. Her iki durumda da dağılım grafiği kullanacağız. Gerçek değerleri (veri kümesinden gelen)
mavi renkle ve modelimizin oluşturduğu doğru denklemi kırmızı olarak çizilmiştir. Bu şekilde (Görsel 9), gerçek
ve tahmini değerleri kolayca ayırt edebiliriz.
Görüldüğü gibi mavi noktalar kırmızı çizgiye yakın olmasına rağmen bazı farklılıklar var (Görsel 9). Bu
farklılıklar farklı teknikler kullanılarak azaltılabilir. Ancak bu konu bu kitabın dışında tutulmuştur.
Şimdi test verisinin grafiksel görünümüne bakalım. Aynı kodu kullanarak fakat sadece değişkenleri Test yaparak
bu işlem gerçekleştirilir. Bu işlemin kod ekranı ve elde edilen grafik çıktısı aşağıdaki ekran görüntüsünde
verilmiştir (Görsel 10):
about:blank 141/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Mutlak hata, tahmin edilen değerler ile gerçek değerler arasındaki farktır. Tam olarak ifade etmek gerekirse, veri
kümesinin tüm örneğinde, o örnek için gerçek değer ile öngörülen değer arasındaki her bir farkın mutlak
değerinin ortalamasıdır. Bu ölçüt 0 ile sonsuz arasında değerler alabilir. Değer ne kadar düşük ise doğruluk değeri
o kadar iyi anlamına gelir.
Ortalama Kare Hatası (MSE) en sık kullanılan regresyon kaybı fonksiyonudur. MSE, tüm veri kümesinde örnek
başına ortalama kare kaybını ifade eder. Uydurulmuş bir çizginin veri noktalarına ne kadar yakın olduğunun bir
ölçüsüdür. Ortalama Kare Hata ne kadar küçükse, verilere uyum o kadar yakın olur yani daha iyi doğruluğu
gösterir. Kare nedeniyle, büyük hataların MSE üzerinde küçük hatalardan daha fazla etkisi vardır. Bu nedenle
MAE, kareden faydalanmadığı için aykırı değerlere karşı daha sağlamdır/duyarsızdır. Verilerde aykırı değer varsa
ve bunlar yok saymak isteniyorsa MAE daha iyi bir seçenektir.
Kök Ortalama Kare Hatası (RMSE), artıkların (tahmin hataları) standart sapmasıdır. Artıklar, veri noktalarının
regresyon çizgisinden ne kadar uzakta olduğunun bir ölçüsüdür; RMSE, bu artıkların ne kadar yayıldığının bir
ölçüsüdür. Diğer bir deyişle, verilerin en uygun çizgide ne kadar yoğun olduğunu bize söyler. Kök ortalama kare
hatası, deneysel sonuçları doğrulamak için tahmin ve regresyon analizinde kullanılır.
Belirleme katsayısı yüzde olarak anlam ifade eder. Regresyon denkleminin oluşturduğu çizginin sonuçlarına kaç
veri noktasının düştüğüne dair bir fikir verir. Katsayı ne kadar yüksek olursa, veri noktaları ve çizgi çizildiğinde
çizginin geçtiği noktaların yüzdesi o kadar yüksek olur. Katsayı 0.80 ise, noktaların %80'i regresyon çizgisine
düşmesi anlamını taşır. 1 veya 0 değerleri, regresyon çizgisinin sırasıyla verilerin tümünü veya hiçbirini temsil
etmediğini gösterir. Daha yüksek bir katsayı, gözlemler için daha iyi bir uyum olduğunun bir göstergesidir.
Aşağıda verilen ekran görüntüsünde yukarıda ifade edilen ölçütler model başarımı hakkında bize fikir
vermektedir (Görsel 11):
Bölüm Özeti
∙ Regresyon analizinin yapılması sürecinde dikkat edilmesi gereken üç önemli nokta vardır. Bunlar: verilerin
girilmesi, verilerin ilişkili olduğu popülasyonun değerlendirilmesi için işe yarayacak bir modelin geliştirilmesi ve
çalışma saati ile başarı arasında tahminde bulunulması.
about:blank 142/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
∙ Veri setinin yüklenmesi için öncelikle, Pandas kütüphanesinden yararlanılarak read_csv() yöntemiyle veri
seti ilgili dizinden okunur. Daha sonra girilen verilerin sütunları Türkçeleştirilir. Bu işlemler gerçekleştirildikten
sonra da girilen verileri grafik üzerinde çizdirebilmek için gerekli kodlar yazılmaktadır.
∙ Veri setinin hazırlanması için ise öncelikle verilerdeki özellikler ve bağımlı değişkenler x ve y değişkenlerine
ayrılır. Ayrılan özellikle ve bağımlı değişkenler, eğitim seti ve test seti olmak üzere tekrar ikiye ayrılır.
∙ Algoritmanın eğitilmesi için uygulanacak basamaklar ise şu şekildedir: regresyon nesnesinin oluşturulması
ve bu nesnenin eğitim setine uydurulması, ardından da tahmin etmeye başlamak için eğitilmesidir.
Kaynakça
WEB: https://contactsunny.medium.com/linear-regression-in-python-using-scikit-learn-f0f7b125a204
WEB: https://pub.towardsai.net/fully-explained-linear-regression-with-python-fe2b313f32f3
Laura Lgual, Santi Segui, “Introduction to Data Science”, A Python Approcah to Concepts Techniques and
Applications, 2017, Springer
WEB: https://towardsdatascience.com/evaluation-metrics-model-selection-in-linear-regression-73c7573208be
[1]
https://pub.towardsai.net/fully-explained-linear-regression-with-python-fe2b313f32f3
[2]
https://www.kaggle.com/kamleshsam/student-scores
[3]
https://contactsunny.medium.com/linear-regression-in-python-using-scikit-learn-f0f7b125a204
[4]
https://towardsdatascience.com/evaluation-metrics-model-selection-in-linear-regression-73c7573208be
Ünite Soruları
Soru-1 :
Aşağıda verilen ölçütlerden hangisi Regresyon modellerini değerlendirmek için kullanılan ölçütlerden biri
değildir?
(Çoktan Seçmeli)
(A) R kare
(B) RMSE
(C) MSE
(D) MPE
Cevap-1 :
MPE
about:blank 143/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-2 :
Tek bağımsız değişken içeren basit bir doğrusal regresyon modelinde kaç katsayı tahmin etmek gerekir?
(Çoktan Seçmeli)
(A) 1
(B) 2
(C) 3
(D) 4
Cevap-2 :
Soru-3 :
(Çoktan Seçmeli)
(A) 3
(B) 7
(C) 5
(D) 6
Cevap-3 :
Soru-4 :
(Çoktan Seçmeli)
(D) genellikle x
Cevap-4 :
Soru-5 :
Regresyon analizinde, bağımsız değişken kilogram cinsinden ölçülürse, bağımlı değişken aşağıdakilerden hangisi
doğrudur?
about:blank 144/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
Cevap-5 :
Soru-6 :
Lineer regresyon modelini çalıştırmak için hangi Python kütüphanesi yüklenmesi gerekir?
(Çoktan Seçmeli)
(A) pandas
(B) matplotlib
(C) numpy
(D) sklearn
Cevap-6 :
sklearn
Soru-7 :
Lineer regresyon denklemindeki “intercept” değeri için aşağıdaki ifadelerden hangisi doğrudur?
(Çoktan Seçmeli)
Cevap-7 :
Soru-8 :
(Çoktan Seçmeli)
about:blank 145/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-8 :
Soru-9 :
y (bağımlı) ve x (bağımsız) sürekli değişkenlerin doğrusal ilişkisini test etmek için, aşağıdaki grafiklerden
hangisi en uygunudur?
(Çoktan Seçmeli)
Cevap-9 :
Dağılım grafiği
Soru-10 :
(Çoktan Seçmeli)
(A) x değişkeninin belirli bir değeri verildiğinde y değişkeninin belirli bir değerini belirtir.
(B) y değişkeninin belirli bir değeri verildiğinde x değişkeninin belirli bir değerini belirtir.
Cevap-10 :
about:blank 146/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
13. SINIFLANDIRMA
Birlikte Düşünelim
∙ Logistik regresyon nedir?
∙ Çalışma sayfasına aktarılan bir veri setinin bağımlı ve bağımsız özellikleri nasıl belirlenir?
Başlamadan Önce
Bu bölümde sınıflandırma problemlerinde kullanılan makine öğrenmesi algoritmalarından lojistik regresyon
algoritması incelenmiştir. Bu algoritma da lineer algoritma gibi denetimli öğrenme algoritmaları içerisinde yer
alır. Lineer regresyon algoritmasında farklı olarak, bu algoritma çıktı değerinin 0-1 veya Evet-Hayır biçiminde
iki durum alan problemlerde sınıflandırma aracı olarak kullanılır. Algoritmanın matematiksel model
formülasyonunda sigmoid fonksiyonu kullanılır. Bu fonksiyon ile hesaplanan tahmin değeri eşik değerinden
(genellikle 0.5) büyük olursa 1 sınıfı; küçük olursa 0 sınıfına ait olmuş olur.
Lojistik
Regresyon, bir
logit
fonksiyonu
kullanarak bir
ikili olayın meydana gelme olasılığını tahmin eder. Doğrusal regresyon denklemi:
Doğrusal regresyon sürekli bir çıktı verir, ancak lojistik regresyon sabit bir çıktı sağlar. Sürekli üretimin bir
örneği ev fiyatı ve hisse senedi fiyatıdır. Kesikli çıktı örnekleri, bir hastanın kanserli olup olmadığını tahmin
etmek, müşterinin işi bırakıp bırakmayacağını tahmin etmektir. Doğrusal regresyon, Sıradan En Küçük Kareler
(OLS) kullanılarak tahmin edilirken, lojistik regresyon, Maksimum Olabilirlik Tahmini (MLE) yaklaşımı
kullanılarak tahmin edilir (Görsel 1).
about:blank 147/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
OLS veya Sıradan En Küçük Kareler Doğrusal Regresyonda, gözlenen veriler ile tahmin edilen arasındaki
karesel hataların toplamını en aza indirecek bir model oluşturarak bilinmeyen parametreleri tahmin etme
yöntemidir.
Maksimum olabilirlik tahmini, bir modelin parametreleri için değerleri belirleyen bir yöntemdir. Parametre
değerleri, model tarafından açıklanan işlemin gerçekte gözlemlenen verileri üretme olasılığını en üst düzeye
çıkaracak şekilde bulunur. Yapılan araştırmalar sonucunda MLE tahminlerinin en küçük kareler yöntemine eş
değer olduğu ortaya çıkmıştır.
MLE bir "olasılık" maksimizasyon yöntemidir, OLS ise mesafeyi en aza indiren bir yaklaşım yöntemidir.
Olabilirlik işlevinin maksimize edilmesi, gözlemlenen verileri üretme olasılığı en yüksek olan parametreleri
belirler. İstatistiksel bir bakış açısından, MLE, bir model için spesifik parametrik değerlerin belirlenmesinde
ortalama ve varyansı parametreler olarak ayarlar. Bu parametre seti, normal bir dağılımda ihtiyaç duyulan verileri
tahmin etmek için kullanılabilir.
Sıradan en küçük kareler tahminleri, kare sapmaların minimum toplamına (en küçük kare hatası) sahip belirli veri
noktalarına bir regresyon doğrusu uydurularak hesaplanır. Her ikisi de doğrusal bir regresyon modelinin
parametrelerini tahmin etmek için kullanılır. MLE, bir ortak olasılık kütle işlevi varsayarken, OLS, mesafeyi en
aza indirmek için herhangi bir stokastik varsayım gerektirmez.
Sigmoid Fonksiyonu
Lojistik fonksiyon olarak da adlandırılan sigmoid fonksiyonu, herhangi bir gerçek değerli sayıyı alıp 0 ile 1
arasındaki bir değere eşleyebilen 'S' şeklinde bir eğri verir (Görsel 2). Eğri pozitif sonsuza giderse, tahmin edilen
y; 1 olur ve eğer eğri negatif sonsuzluğa giderse, tahmin edilen y; 0 olur. Sigmoid fonksiyonunun çıktısı 0.5'ten
fazlaysa, sonucu 1 veya EVET olarak sınıflandırabiliriz. 0.5'ten küçükse, 0 olarak sınıflandırabiliriz veya HAYIR
olarak adlandırılır. Örneğin: Çıktı 0.75 ise, olasılık açısından şöyle diyebiliriz: Hastanın kansere yakalanma
ihtimali yüzde 75’tir.
Problem Formülasyonu
about:blank 148/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Metodoloji
13.1.1.
Scikit-
learn'de
Model
Oluşturma
Bu bölümde
yukarıda
anlatılan
matematiksel
alt yapıları
kodlanmış
olarak bize
sunan ve bu
algoritmaları
çalıştırmamıza
imkân veren
Sklearn
kütüphanesini
kullanarak
lojistik
regresyon
örneğinin
adımları
[2]
anlatılacaktır .
İlk olarak lojistik regresyon algoritmasının kullanabilmek için gerekli olan kütüphaneler çalışma sayfasına
aşağıdaki şekilde verildiği gibi dahi edilir (Görsel 3).
Verinin Yüklenmesi
Örneğimizde Lojistik Regresyon Sınıflandırıcısını kullanarak hastaların diyabet olup olmadığı tahmin edilmeye
çalışılacaktır. Öncelikle Pandas kütüphanesinin csv dosyası okuma işlevini kullanarak internetten indirilen Pima
about:blank 149/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Indian Diabetes veri kümesi çalışma sayfasına aşağıdaki şekilde verildiği gibi yüklenir (Görsel 4). Örnekte
[3]
kullanılacak verileri aşağıdaki bağlantıdan indirebilirsiniz.
Özellik Seçme
Burada, verilen sütunları, bağımlı (veya hedef değişken) ve bağımsız değişken (veya özellik değişkenleri) olmak
üzere iki tür değişkene bölmemiz gerekir. Aşağıdaki ekran görüntüsünde bu işlemleri yapan kod verilmiştir
(Görsel 5):
Verileri Bölme
Model performansını anlamak için, veri setini bir eğitim setine ve bir test setine bölmek iyi bir stratejidir.
Train_test_split() işlevini kullanarak veri kümesini bölelim. Hedef ve test_set boyutu olmak üzere 3 parametre
özelliğini geçmeniz gerekir. Ek olarak, kayıtları rastgele seçmek için random_state kullanabilirsiniz. Burada veri
kümesi 75:25 oranında iki bölüme ayrılmıştır. Bu, model eğitimi için verinin %75’i ve model testi için verinin
%25’i kullanılacağı anlamına gelir (Görsel 6).
İlk olarak, kullanılacak olan Logistic Regression modülü çalışma sayfasına aktarılır. Bu işlem için
LogisticRegression() işlevini kullanarak “model” adında bir Logistic Regression sınıflandırıcı nesnesi
about:blank 150/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
oluşturulur. Ardından, modelinizi fit() kullanarak eğitim verisine oturtulur. Daha sonra modelin intercept ve
bağımsız değişkenlerin katsayıları belirlenir. Son olarak sigmoid fonksiyonuna girdi olacak olan lineer denklem
elde edilir (Görsel 7).
Modelin Değerlendirilmesi
predict() fonksiyonu kullanılarak oluşturduğumuz modelin tahmin etmesini sağlıyoruz. Aşağıda verilen ekran
görüntüsünde p_tahmin, lojistik regresyonun matematiksel anlatımında kullanılan olasılık fonksiyonuna
karşılık gelmektedir. y_tahmin ise değerine bağlı olarak verinin alacağı sınıf değerini belirtir. Aşağıdaki
ekran görüntüsünde (Görsel 8) tahmin olasılıklarına bağlı olarak sınıfların çıktı verilmiştir.
Doğruluk Değeri
Elde ettiğimiz rakamlarla, lojistik regresyon için kullandığımız ölçü olan doğruluğu bulabiliriz. Doğruluk, doğru
tahmin sayısının toplam tahmin sayısına oranıdır. Doğruluk değeri aşağıdaki formülle hesaplanır:
about:blank 151/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Sklearn kütüphanesi ile Python’da modelimizin lojistik regresyon doğruluk değerini score() fonksiyonu
kullanarak aşağıda verilen ekran görüntüsündeki kod ile bulabiliriz (Görsel 9).
Bu sonuç, iyi bir doğruluk değeri olarak kabul edebileceğimiz %78'lik bir sınıflandırma oranını elde ettiğimizi
ifade etmektedir.
Karmaşıklık Matrisi
Karışıklık matrisi, bir sınıflandırma modelinin performansını değerlendirmek için kullanılan bir tablodur. Ayrıca
bu matrisin sonuçlarını da görselleştirilebilir. Karmaşıklık matrisi, doğru ve yanlış tahminlerin sayısının sınıf
bazında özetlenmesini gösterir. Aşağıdaki görselde (Görsel 10) modelin karmaşıklık matrisinin çıktı değerleri
verilmiştir:
Karmaşıklık matrisini grafiksel olarak göstermek mümkündür. Bu şekilde matrisin anlaşılırlığı daha kolay
olmaktadır. Grafiksel gösterim için aşağıda Görsel 11’da ekran görüntüsü verilen kodu yazmak gerekir:
Bu matris 2 x 2' boyutunda bir matristir. Bunun sebebi veri setimizde bağımlı değişken olarak 0 ve 1 olmak üzere
iki sınıf mevcuttur. Bu grafikte köşegen değerler doğru tahminleri temsil ederken, köşegen olmayan öğeler yanlış
tahminlerdir. Çıktıda, 445 ve 155 gerçek tahminler 26 ve 11 ise yanlış tahminlerdir.
about:blank 152/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Lojistik regresyon, gözlemler için bir olasılık puanı sağlar. Verimli ve anlaşılır yapısı nedeniyle, yüksek
hesaplama gücü gerektirmeyen uygulaması ve yorumlaması kolay olan ve veri bilimcileri tarafından yaygın
olarak kullanılan bir algoritmadır.
Lojistik regresyon, çok sayıda kategorik özelliği/değişkeni işleyemez. Aşırı uyuma karşı savunmasızdır. Ayrıca,
doğrusal olmayan problemler lojistik regresyon ile çözülemez. Bu nedenle doğrusal olmayan özellikler için
dönüşüm işlemi yapmak gerekir. Lojistik regresyon, hedef değişkenle ilişkili olmayan ve birbirine çok benzer
veya ilişkili olan bağımsız değişkenlerle iyi performans vermez.
Bölüm Özeti
∙ Makine öğrenimi uygulamalarının önemli bir parçası olan sınıflandırma teknikleri, Veri Bilimindeki
problemlerin yaklaşık %70'ini oluşturmaktadır.
∙ Makine Öğrenimi algoritmalarından iki sınıflı sınıflandırma için kullanılanlarından en basit ve yaygın olanı
Lojistik Regresyondur.
∙ Doğrusal regresyonun lojistik regresyondan farklılaşan yönü, doğrusal regresyonun sürekli lojistik
regresyonun ise sabit bir çıktı sağlamasıdır.
∙ MLE’nin olabilirlik işlevinin maksimize edilmesine yönelik bir "olasılık" maksimizasyon yöntemi olmasına
karşılık, OLS mesafeyi en aza indiren bir yaklaşım yöntemidir.
∙ Scikit-learn'de model oluşturabilmek için birtakım adımların takip edilmesi gerekmektedir. Bunlar: gerekli
kütüphanelerin yüklenmesi, verinin yüklenmesi, özellik seçme, verileri bölme, modelin oluşturulması ve
eğitilmesi, modelin değerlendirilmesi, doğruluk değerinin belirlenmesi, karmaşıklık matrisinin grafiksel olarak
gösterimi.
∙ Lojistik regresyon, sınıflandırma amaçlı kullanılır. Çıktı değeri 0-1 gibi sonuç alabilen problemlerin
çözümünde kullanılır. Bu algoritma sigmoid fonksiyonuna bağlı olarak bir ihtimal değeri hesaplar. Bu değer belli
bir eşik değerinden büyük ise ele alınan örnek veri 1; değilse 0 sınıfına atanır.
Kaynakça
Laura Lgual, Santi Segui, “Introduction to Data Science”, A Python Approcah to Concepts Techniques and
Applications, 2017, Springer
WEB: https://datascience.foundation/sciencewhitepaper/understanding-logistic-regression-with-python-practical-
guide-1
WEB: https://www.reneshbedre.com/blog/logistic-regression.html
WEB: https://datatofish.com/logistic-regression-python/
WEB: https://realpython.com/logistic-regression-python/
[1]
https://www.datacamp.com/community/tutorials/understanding-logistic-regression-python
[2]
https://realpython.com/logistic-regression-python/
[3]
https://www.kaggle.com/uciml/pima-indians-diabetes-database
about:blank 153/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Ünite Soruları
Soru-1 :
(Çoktan Seçmeli)
Cevap-1 :
Soru-2 :
(Çoktan Seçmeli)
(B) Kümeleme
Cevap-2 :
Lojistik regresyon
Soru-3 :
(Çoktan Seçmeli)
(A) Sigmoid
(B) Logaritmik
(C) Parabolik
(D) Lineer
Cevap-3 :
Sigmoid
about:blank 154/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-4 :
Lojistik regresyonda kullanılan eşik değerinin en yaygın değeri hangi şıkta verilmiştir?
(Çoktan Seçmeli)
(A) 1.0
(B) 0
(C) 0.75
(D) 0.5
Cevap-4 :
0.5
Soru-5 :
Aşağıda verilen p formülünde yer alan (-y) nin eşiti hangi şıkta doğru olarak verilmiştir?
(Çoktan Seçmeli)
Cevap-5 :
Soru-6 :
Lojistik regresyon modelini çalıştırmak için hangi Python kütüphanesi yüklenmesi gerekir?
about:blank 155/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(Çoktan Seçmeli)
(A) pandas
(B) sklearn
(C) numpy
(D) matplotlib
Cevap-6 :
sklearn
Soru-7 :
Lojistik regresyonda doğruluk değeri aşağıda verilen komutlardan hangisi ile hesaplanır?
(Çoktan Seçmeli)
(A) score()
(B) mean()
(C) median()
(D) function()
Cevap-7 :
score()
Soru-8 :
Aşğıda verilen ifadelerden hangisi lojistik regresyon için doğru olarak kabul edilemez?
(Çoktan Seçmeli)
Cevap-8 :
Soru-9 :
Aşağıde verilen ölçütlerden hangisi sınıflandırma modelinin başarımını ölçmek için kullanılır?
(Çoktan Seçmeli)
about:blank 156/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(B) R kare
(C) MSE
(D) RMSE
Cevap-9 :
Karışıklık matrisi
Soru-10 :
(Çoktan Seçmeli)
(A) print()
(B) score()
(C) train()
(D) fit()
Cevap-10 :
fit()
about:blank 157/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
14. KÜMELEME
Birlikte Düşünelim
∙ Nesnelerin hangi kümeye atanacağı nasıl belirlenir?
∙ Küme merkezleri ile nesneler arasındaki mesafe hangi ölçüt kullanılarak hesaplanır?
Başlamadan Önce
Denetimsiz algoritmalar sınıfına giren K-means algoritması nesnelerin benzer özelliklerine göre
gruplandırılması için kullanılır. Bu algoritma başlangıçta rastgele olarak belirlenen küme sayı ve küme
merkezlerine göre verileri öklit uzaklığına göre kümelere atar. Algoritma küme nesneler ve küme merkezleri
arasındaki mesafeleri küme elemanlarının değişmediği duruma kadar tekrarlı olarak her iterasyonda hesaplar.
Değişim olmadığı zaman algoritma sonlanır. İlk olarak algoritma elle ile çalıştırılarak bir örnek üzerinde
anlatılmıştır. Daha sonra algoritma bir veri seti üzerinde Python Sklearn Kütüphanesi kullanılarak gerekli
kodlamalar ve ekran görüntüleri bölüm içerisinde verilmiştir.
K-ortalama algoritması, her küme için rastgele bir ağırlık merkezi değeri seçerek başlar. Bundan sonra, algoritma
yinelemeli olarak üç adımı gerçekleştirir:
(i) Her veri örneği ve tüm kümelerin ağırlık merkezleri arasındaki Öklid mesafesini hesaplar (Görsel 1);
"
target="_blank">https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/Euclidean_distance_2d.svg/300px-
Euclidean_distance_2d.svg.png">
(ii) Veri örneklerini en yakın mesafe ile ağırlık merkezi kümesine atar;
about:blank 158/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Bunun için D adlı, d = { (5,3), (10,15), (15,12), (24,10), (30,45), (85,70), (71,80), (60,78), (55,52), (80,91) } iki
boyutlu veri örneklerinden oluşan bir setimiz olduğunu varsayalım. Bu verileri, veri noktaları arasındaki
benzerliğe dayanarak iki kümeye, C1 ve C2'ye bölmek isteyelim.
İlk adım, her iki kümenin ağırlık merkezleri rastgele olarak belirlenir. C1 ve C2 kümelerinin merkezlerini c1 ve
c2 olarak adlandıralım ve ilk iki veri noktasının değerleri yani (5, 3) ve (10, 15) bu iki kümenin merkezi
olduğunu kabul edelim. Şimdi yinelemelere başlayalım.
İterasyon-1
Her bir noktanın başlangıçta kabul edilen küme merkezlerine olan uzaklıkları hesaplanır ve aşağıdaki başlangıç
tablosu (Tablo 1) oluşturulur:
Yukarıdaki tabloda, ikinci sütun tüm veri noktalarını içerir. Üçüncü sütun, tüm veri noktaları ve ağırlık merkezi
c1 arasındaki Öklid mesafesini içerir.
Benzer şekilde, dördüncü sütun c2 merkezi ile veri noktaları arasındaki mesafeyi içerir. Son olarak, beşinci
sütunda, iki küme ağırlık merkezi arasındaki Öklid mesafesine dayalı olarak veri noktasının hangi kümeye
atandığını gösteriyor. Örneğin, üçüncü veri noktasına (15, 12) ye bakalım. c1'den 13.45 birim, c2'den 5.83 birim
uzaklığa sahiptir; bu nedenle c2'de kümelenmiştir.
Veri noktalarını ilgili kümelere atadıktan sonra, sonraki adım yeni ağırlık merkez değerlerini hesaplamaktır. Bu
değerler, belirli bir kümeye ait olan veri noktalarının koordinatlarının ortalamaları bulunarak hesaplanır.
C1 kümesi için, şu anda yalnızca bir nokta, yani (5,3) vardır, bu nedenle koordinatların ortalaması aynı kalır ve
c1 için yeni ağırlık merkezi değeri de (5,3) olacaktır.
C2 için şu anda 9 veri noktası vardır. Veri noktalarının koordinatlarını x ve y olarak adlandırıyoruz. Merkez
c2'nin x koordinatı için yeni değer, aşağıda verildiği gibi c2 kümesine ait olan 9 noktanın tümünün x
about:blank 159/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Merkez c2'nin y koordinatı için yeni değer, c2 kümesine ait olan 9 noktanın tüm y koordinatlarının ortalaması
belirlenerek hesaplanabilir:
Bir sonraki yineleme için, c1 ve c2 için yeni merkez değerleri kullanılacak ve tüm süreç tekrarlanacaktır (Tablo
2). Yinelemeler, ağırlık merkezi değerlerinin güncellenmesi durana kadar devam eder. Sonraki yinelemeler
aşağıdaki gibidir:
İterasyon-2
C1 (13.5, 10.0)
olarak
güncellendi.
c2(x) = (30 +
85 + 71 + 60 +
55 + 80) / 6 =
63.5
c2(y) = (45 +
70 + 80 + 78 +
52 +91) / 6 = 69.33
İterasyon-3
İterasyon-4
about:blank 160/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
C1 (16.8, 17.0)
olarak
güncellendi.
c2(x) = (85 +
71 + 60 + 55 +
80) / 5 = 70.2
c2(y) = (70 +
80 + 78 + 52 +
91) / 5 = 74.2
C2 (70.2, 74.2)
olarak
güncellendi.
Dördüncü
yinelemenin
sonunda,
güncellenen
C1 ve C2
değerleri
üçüncü
yinelemenin
sonundakilerle
aynıdır (Tablo
4). Bu,
verilerin daha
fazla
kümelenemeyeceği anlamına gelir. c1 ve c2, C1 ve C2 için ağırlık merkezleridir. Yeni bir veri noktasını
sınıflandırmak için veri noktası ile kümelerin ağırlık merkezleri arasındaki mesafe hesaplanır. Veri, merkez
noktası ile veri noktası arasındaki mesafenin en az olduğu kümeye atanır.
Örneğimizi için matplotlib, numpy, pandas ve scikit-learn kitaplıklarına ihtiyacınız vardır. Aşağıda Görsel 2’deki
ekran görüntüsünde gerekli kütüphaneleri yüklenmesinin kodu verilmiştir:
about:blank 161/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Şimdi, kuracağımız modeli veri setindeki özelliklerle eğitebilmemiz için veri setinin dört özelliğini (Taç
uzunluğu, Taç genişliği, Çanak uzunluğu ve Çanak genişliği) x adlı bir değişkende seçiyoruz. Bunun için, veri
seti üzerinde iloc fonksiyonunu ve aşağıda gösterildiği gibi (Görsel 4) yukarıdaki dört sütun için sütun indeksi
(0,1,2,3) kullanıyoruz:
about:blank 162/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Başlangıçta, k küme sayısını keyfi olarak 5 atayalım. K=5 kullanarak k-ortalamalı kümelemeyi algoritmasını
uygulayacağız. Bunun için K-means sınıfını somutlaştırıp onu kmeans5 değişkenine atanır. Daha sonra, k-means
üzerinde fit yöntemi çağırılıp ve kümelemek istenen verilerin (x) kümeleri belirlenir. Cluster_centers_ yöntemi
ile algoritmanın oluşturduğu kümelerin ağırlık merkezleri belirlenir (Görsel 5).
Görsel 5’teki ilk çıktı veri setinin her bir noktasının atanmış olduğu kümelere karşılık gelen 150 öğeden oluşan
tek boyutlu bir dizidir. Burada 0, 1, 2, 3 ve 4, yalnızca küme kimliklerini temsil etmek için kullanılır ve
matematiksel bir anlamı yoktur. İkinci çıktıda ise ilk satır, birinci kümenin merkez koordinatları için değerleri
içerir. Diğer satırlar sırasıyla ikinci, üçüncü, dördüncü ve beşinci kümelerin merkez koordinatlarını ifade eder.
Veri noktalarını grafik üzerinde çizelim ve verilerin nasıl kümelendiğini görselleştirelim. Bu sefer verileri
atanmış etiketleri ile birlikte çizeceğiz, böylece kümeler arasında ayrım yapabilelim. Aşağıda verilen komut
satırları ile oluşan kümeler ve merkezleri görülmektedir (Görsel 6):
about:blank 163/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Yukarıdaki şekle bakıldığında en uygun küme sayısının eğrinin yatay olmaya başladığı k=3 değeri olduğu
kolayca görülmektedir. Şimdide bu “k” sayısına bağlı olarak yeni kümeleri ve merkezlerini bulalım.
Aşağıdaki şekilde (Görsel 8) k=3 değerine göre modelin çalıştırılması sonucunda verilen atanmış olduğu küme
etiketleri ve oluşan kümelerin merkezleri verilmiştir:
Üç küme olması durumunda, ortadaki iki nokta (kırmızı renkte gösterilir), sol üstteki veya sağ orta üstü ağırlık
merkezlerine kıyasla ortadaki ağırlık merkezine (siyah olarak gösterilen noktalar) yakın olan verilerin fazla
olduğu görülmektedir (Görsel 9):
about:blank 164/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Sonuç olarak k-ortalama kümeleme algoritması, verilerin kümelenmesi için basit ama etkili denetimsiz bir
makine öğrenme algoritmasıdır. Bu algoritma verileri, veri noktaları arasındaki öklit mesafesine göre kümeler. K-
means kümeleme algoritması, metin belgelerini, resimleri ve videoları gruplamak gibi birçok alanda
kullanılmaktadır.
Bölüm Özeti
∙ K-means algoritması verileri özelliklerine göre gruplama amaçlı kullanılır. Denetimsiz öğrenme algoritmalar
sınıfına giren bu algoritma, başlangıçta belirtilen küme sayısına göre verileri kümelere atar. Atama işlemi için
küme merkezi ve öklit mesafesinden faydalanır.
1. Her veri örneği ve tüm kümelerin ağırlık merkezleri arasındaki mesafe Öklid yöntemiyle hesaplanır.
2. Hesaplama neticesinde veri örnekleri, en yakın mesafede oldukları ağırlık merkezi kümesine atanır.
3. Atama neticesinde kümede bulunan tüm veri örneklerinin koordinatlarının ortalama değerleri dikkate alınarak
yeni ağırlık merkezi değerleri hesaplanır.
∙ Dirsek Yöntemi, herhangi bir denetimsiz algoritmanın en temel adımı olan, “verilerin kümelenebileceği en
uygun (optimum) küme sayısını belirlemek” için kullanılan en yaygın yöntemdir.
Kaynakça
WEB: https://datascienceplus.com/k-means-clustering/
WEB: https://heartbeat.fritz.ai/k-means-clustering-using-sklearn-and-python-4a054d67b187
WEB: https://stackabuse.com/k-means-clustering-with-scikit-learn/
WEB: https://predictivehacks.com/k-means-elbow-method-code-for-python/
about:blank 165/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
WEB: https://pythonprogramminglanguage.com/kmeans-elbow-method/
İlker Arslan, “Python ile Veri Bilimi”, 2019, Pusula Yayınevi, 2. Baskı
Bu kitap Veri Bilimi alanına giriş niteliğindeki konuları kapsayan bir içeriğe sahip olarak tasarlanmıştır. Veri
Bilimi günümüzde çok farklı iş alanlarında kullanımı giderek artan bir bilim alanı olarak sürekli gelişme
göstermektedir. Bu kitap özellikle bu alana ilgi duyan ancak nereden başlayacağını bilmeyen öğrenciler ve
meraklılar için başlangıç niteliği taşımaktadır. Dolayısıyla kitaptaki konular temel kavramlardan başlayarak belli
bir akış çerçevesinde anlatılmıştır. Bu amaçla veri bilimi uygulamalarında yaygın kullanımı olan ve sahip olduğu
kütüphaneler ile yeni başlayanlara önemli kolaylıklar sağlayan açık kaynak kodlu Python programlama dili
seçilmiştir. Kitap içerisindeki uygulamalar ise Jupyter Notebook arayüzü kullanılarak gerçekleştirilmiştir. Her
uygulamanın Jupyter Notebook geliştirme ortamındaki kodu gösteren ekran görüntüleri ayrıca verilmiştir.
Böylece okuyucu bu kodları kendisi de yazarak kolayca deneme şansına sahip olacaktır.
∙ İstatistiksel Analiz
∙ Regresyon
∙ Sınıflandırma
∙ Kümeleme
[1]
https://stackabuse.com/k-means-clustering-with-scikit-learn/
[2]
https://gist.github.com/netj/8836201
[3]
https://pythonprogramminglanguage.com/kmeans-elbow-method/
Ünite Soruları
Soru-1 :
(Çoktan Seçmeli)
about:blank 166/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
(A) Denetimli
(B) Pekiştirmeli
(C) Denetimsiz
(D) Uygulamalı
Cevap-1 :
Denetimsiz
Soru-2 :
(Çoktan Seçmeli)
(D) Veri ile küme merkezi arasındaki mesafe için öklit uzaklığı kullanılır.
Cevap-2 :
Soru-3 :
Aşağıda verilen yöntemlerden hangisi en uygun küme sayısını bulmak için kullanılan bir yöntemdir.
(Çoktan Seçmeli)
(A) Sigmoid
(B) Dirsek
(C) Öklit
Cevap-3 :
Dirsek
Soru-4 :
(Çoktan Seçmeli)
about:blank 167/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Soru-5 :
Kümeleme algoritması ile oluşturulan kümeleri görüntülek için hangi grafik kullanılır?
(Çoktan Seçmeli)
Cevap-5 :
Soru-6 :
(Çoktan Seçmeli)
(A) sklearn
(B) pandas
(C) matplotlib
(D) numpy
Cevap-6 :
sklearn
Soru-7 :
(Çoktan Seçmeli)
(A) median()
(B) figsize()
(C) cluster_centers_
(D) function()
about:blank 168/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap
Cevap-7 :
cluster_centers_
Soru-8 :
(Çoktan Seçmeli)
Cevap-8 :
Etiketli veriler
Soru-9 :
(Çoktan Seçmeli)
Cevap-9 :
Soru-10 :
K-ortalamalı kümeleme, n tane veriyi küme sayısına bölmek için aşağıdaki yaklaşımlardan hangisi kullanılır?
(Çoktan Seçmeli)
(A) medyan
(B) mod
(C) ortalama
(D) hiçbiri
Cevap-10 :
hiçbiri
about:blank 169/169