You are on page 1of 169

18.03.

2024 23:24 Ders : Veri Bilimi - eKitap

İ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

1. VERİ BİLİMİ İÇİN TEMEL KAVRAMLAR


2. VERİ BİLİMİ İÇİN PYTHON PROGRAMLAMASINA GİRİŞ
3. PYTHON’A ÖZGÜ VERİ YAPILARI-1 (LİSTE)
4. PYTHON’A ÖZGÜ VERİ YAPILARI-2 (TUPLE, KÜME,
SÖZLÜK)
5. PYTHON’DA KONTROL YAPILARI-1
6. PYTHON’DA KONTROL YAPILARI-2
7. PYTHON İÇİN VERİ ANALİZİ ARAÇLARI-1 (NUMPY)
8. PYTHON İÇİN VERİ ANALİZİ ARAÇLARI-1 (PANDAS)
9. PYTHON İÇİN VERİ ANALİZİ ARAÇLARI-3 (MATPLOTLIB)
10. İSTATİSTİKSEL ANALİZ
11. MAKİNE ÖĞRENİMİ (DENETİMLİ-DENETİMSİZ ÖĞRENME)
12. REGRESYON
13. SINIFLANDIRMA
14. KÜMELEME

about:blank 2/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

1. VERİ BİLİMİ İÇİN TEMEL KAVRAMLAR


Birlikte Düşünelim
∙ Veri Bilimi nedir?

∙ Veri Bilimi’nde temel kavramlar nelerdir? Başlıca veri modelleri nelerdir?

∙ Modelleme, Programlama, İstatistik veri biliminde ne işe yarar?

∙ Genel olarak regresyon, Kümeleme, Karar ağacı algoritmaları ne işe yarar?

∙ Veri Biliminde proje yaşam döngüsü hangi adımlardan oluşur?

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.

1.1. Veri Bilimi Nedir?


Veri bilimi, veri içerisinde yer alan ancak direkt olarak gözle görülemeyen kalıpları/örüntüleri bulmak, anlamlı
bilgiler elde etmek ve iş kararları vermek için modern araçlar ve teknikler kullanarak büyük hacimli verilerle
[1]
ilgilenen bir çalışma alanıdır . Veri bilimi, tahmine dayalı modeller oluşturmak için karmaşık makine öğrenimi
algoritmaları kullanır. Analiz için kullanılan veriler birden fazla kaynaktan olabilir ve çeşitli formatlarda
sunulabilir. Veri bilimi, dijital araçlarla üretilen büyük miktarda veri göz önüne alındığında günümüzde çeşitli
endüstri ve işletmelerin önemli bir uğraş alanı haline gelmiştir. Şirketler, işlerini büyütmek ve müşteri
memnuniyetini artırmak için veri bilimi tekniklerini uygulamaya başladılar.

1.1.1. Veri Biliminde Kullanılan Temel Kavramlar

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.1.2. Temel Makine Öğrenimi Algoritmaları


[3]
Bir veri bilimcinin kullandığı en temel makine öğrenimi algoritmaları aşağıda kısaca açıklanmıştır:

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.

4. Destek Vektör Makineleri

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.

1.1.3. Bir Veri Bilimi Projesinin Yaşam Döngüsü

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.

Şekil 1. Veriler arasındaki ilişkinin gösterilmesi

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:

4. Model Planlama Araçları

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

Popüler ve öğrenmesi kolay araçlardan biridir.

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.

Şekil 2. Doğrusal model örneği.

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

İlker Arslan, “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019

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ı

(C) Makine öğrenmesi

(D) Tarih

Cevap-1 :

Tarih

Soru-2 :

Aşağıdakilerden hangisi veri bilimi temel kavramlarından biri değildir?

(Çoktan Seçmeli)

(A) Modelleme

(B) Programlama

(C) Fizik

(D) Veritabanları

Cevap-2 :

Fizik

Soru-3 :

Aşağıdakilerden hangisi Veri Bilimi’nin faydalarından biri değildir?

(Çoktan Seçmeli)

(A) İşletmelere yararlı çıktılar sağlar.

(B) İşletmelere gereksiz bir uğraş getirir.

(C) Tahminleme işlemlerinde kullanılır.

(D) Müşteri memnuniyeti sağlar.

Cevap-3 :

İşletmelere gereksiz bir uğraş getirir.


about:blank 8/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Soru-4 :

Aşağıdakilerden hangisi Makine Öğrenimi algoritmalarından biri değildir?

(Çoktan Seçmeli)

(A) İstatistik

(B) Regresyon

(C) Karar Ağacı

(D) Naive Bayes

Cevap-4 :

İstatistik

Soru-5 :

Aşağıdakilerden hangisi Model planlama araçlarından biri değildir?

(Ç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

(C) Postgre SQL

(D) MySQL

Cevap-6 :

Python

Soru-7 :

Genel bir veri bilimi projesi kaç adımdan oluşur?

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)

(A) Veri hazırlama

(B) Model Planlama

(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)

(A) Sorunu anlamak

(B) Terminolojiye hakim olmak

(C) Sektörün çalışma yapısını anlamak

(D) Sektörün karlı olup olmadığını öğrenmek

Cevap-9 :

Sektörün karlı olup olmadığını öğrenmek

Soru-10 :

Aşağıdaki algoritmalardan hangisi denetimli öğrenme sınıfında yer almaz?

(Çoktan Seçmeli)

(A) Destek Vektör Makineleri

about:blank 10/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(B) Kümeleme

(C) Regresyon

(D) Karar ağaçları

Cevap-10 :

Kümeleme

about:blank 11/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

2. VERİ BİLİMİ İÇİN PYTHON


PROGRAMLAMASINA GİRİŞ
Birlikte Düşünelim
∙ Python programlama dili nedir?

∙ Python ile Veri Bilimi arasındaki ilişki nedir?

∙ Python için kurulması gereken programlar nelerdir?

∙ Python için hangi sürümü kurmam gerekir?

∙ Veri Bilimi için hangi geliştirme ara yüzünü kullanmalıyım?

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.

2.1. Python Programlama Dili


Python, Guido Van Rossum tarafından 1990 yılında geliştirilmeye başlanan nesne yönelimli, yorumlanabilen ve
yüksek seviyeli bir programlama dilidir. İlk ortaya çıkışından bu yana yazılım ve özellikle veri bilimi
uygulamalarında en fazla kullanılan popüler programlama dillerinden biri haline geldi. Bu dili bu kadar popüler
yapan etmenlerin başında Numpy, Pandas ve Scikit-learn gibi sahip olduğu birçok geliştirme aracı
kütüphanelerin açık kaynak kodlu olarak ücretsiz bir şekilde indirilebilmesidir. Bu yapısı Python’u genel amaçlı
yazılım mühendisliği ve veri uygulamaları geliştirmek için öğrenilmesi gereken en önemli dillerden biri haline
getirmiştir. Yayınlanan sürümler düzenli olarak https://www.python.org/"
[1]
target="_blank">https://www.python.org/ sitesinde ilan edilmekte ve eklenen yenilikler açıklanmaktadır. Bu
dokümanın yazılma sürecinde en son sürüm olarak October 5th, 2020 tarihinde Python 3.9 yayınlanmıştır.
Python 3’ün önceki sürümlerinde yazılan kodlar Python 3.9’da çalışmaktadır.

2.2. Python ile Veri Bilimi Arasındaki İlişki


Python, popülerliğini hızlı bir şekilde arttırmaktadır. İlk defa programlamaya başlangıç yapanlar ya da farklı
dillerde uzmanlaşanlar “Python öğrenmeli miyim?” sorusunu sormaktadır. Uzun yıllar önce programlama
öğrenmek isteyenler için bir programlama dilini öğrenmek veya aşina olmak şimdikinden çok daha zordu. Ancak
zamanla insan diline yakın denilebilecek yüksek seviyeli programlama dilleri ortaya çıkmıştır.
[2]
Python kodlarını yorumlamak ve öğrenmek diğer dillere göre daha kolaydır . Diğer dillerde bulunan noktalama
işareti zorunlulukları, parantezler veya kurallar programlamaya yeni başlayan kullanıcı için zaman zaman
about:blank 12/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

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.

2.3. Python Programlama Dilinin Kurulumu


İnternet tarayıcısını (browser) açıp adres çubuğuna https://www.anaconda.com/ adresi"
[4]
target="_blank">https://www.anaconda.com/ adresi yazılır. Açılan pencereden “Products” sekmesine tıklanır.
Daha sonra aşağı doğru açılan pencereden en üstte yer alan “Individual Edition” e tıklandıktan sonra aşağıdaki
şekilde verilen ekran görüntüsüne ulaşılı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

Programlama Dilinin Kurulumu


Kurulumdan sonra bilgisayarınızın başlat menüsünde bulunan ara sekmesinin içine “anaconda” yazarak
uygulamanın nerede olduğunu bulabilirsiniz. Açılan pencerede en üstte yer alan “Jupyter Notebook” a sağ
tıklayarak sağa doğru açılan pencerede “Görev çubuğuna sabitle” sekmesine tıklayarak, görev çubuğuna
sabitlemiş olursunuz (Görsel 4).

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).

Görsel 6. Jupyter Notebook geliştirme ortamının ana ekranı

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

Görsel 7. Jupyter Notebook çalışma için Python 3’ün seçilme ekranı

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).

Görsel 8. Jupyter Notebook bütünleşik geliştirme ara yüzü

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/

WEB: https://www.python.org/" target="_blank">https://www.python.org/doc/essays/blurb/

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 :

Aşağıda verilen adreslerden hangisi Python dilinin resmi web sitesidir?

(Ç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 :

Aşağıda verilen ifadelerden hangisi Python dili için yanlıştır?

(Çoktan Seçmeli)

(A) Ücretsiz sürümleri vardır

about:blank 16/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(B) Veri Biliminde yaygın kullanılır.

(C) Öğrenmesi kolaydır

(D) C diline göre daha hızlıdır.

Cevap-3 :

C diline göre daha hızlıdır.

Soru-4 :

Aşağıda verilen ifadelerden hangisi Veri Analistleri için doğru bir söylemdir?

(Çoktan Seçmeli)

(A) Daha çok günlük rutin veri işlemleri ile uğraşırlar.

(B) Güçlü problem çözme özellikleri olması gerekir

(C) Veri Bilimcilere göre daha fazla ücret alırlar.

(D) R, Python gibi dilleri bilmesine gerek yoktur

Cevap-4 :

Daha çok günlük rutin veri işlemleri ile uğraşırlar.

Soru-5 :

Aşağıda verilen Python ürünlerinden hangisi bireysel kullanıcılar içindir?

(Çoktan Seçmeli)

(A) Team Edition

(B) Commercial Edition

(C) Individual Edition

(D) Enterprise Edition.

Cevap-5 :

Individual Edition

Soru-6 :

Python’un aşağıda verilen işletim sistemlerinin hangisine kurulumu desteklenmez?

(Ç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 :

Aşağıda Jupyter Notebook için verilen ifadelerden hangisi yanlıştır?

(Çoktan Seçmeli)

(A) Kullanımı kolaydır.

(B) Python dili tarafından desteklenmez.

(C) Ücretsiz bir uygulamadır

(D) Web arayüzü görünümündedir.

Cevap-7 :

Python dili tarafından desteklenmez.

Soru-8 :

Aşağıda verilen sürümlerden hangisi en güncel süreme yakın Python sürümüdür?

(Çoktan Seçmeli)

(A) Python 1.4

(B) Python 3.9

(C) Python 3.7

(D) Python 2.9

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

3. PYTHON’A ÖZGÜ VERİ YAPILARI - 1 (LİSTE)


Birlikte Düşünelim
∙ Python’da var olan temel değişkenler nelerdir?

∙ Liste veri yapısının özellikleri nelerdir?

∙ Liste nasıl oluşturulur?

∙ Liste elemanlarına nasıl erişim sağlanır?

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.

3.1. Python’da Değişken Tanımlama


Bir Python değişkeni, sayısal ya da metinsel değerleri saklamak için bilgisayar belleğinde ayrılan konumu
tanımlar. Başka bir deyişle, python programındaki bir değişken, işlenmesi için bilgisayara veri verir. Temelde
sayısal ve metinsel olmak üzere iki tip veri vardır. Python'daki değişkenler, herhangi bir adla veya a, bb, abc gibi
[1]
harflerle bildirilebilir/tanımlanabilir (Görsel 1).

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.

Görsel 1. Değişken tanımlama

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:

Görsel 3. Değişkenlerin ekrana yazdırılması

3.1.1. Temel Sayısal Veri Tipleri


Temelde sayısal veri tipleri integer ve float olmak üzere iki kısma ayrılır. Integer veri tipi, virgül içermeyen
sayıları ifade eder. Float veri tipi ise virgül içeren (ondalıklı) sayıları içerir. Aşağıdaki ekran çıktısında bu iki sayı
tipine örnek verilmiştir (Görsel 4):

Görsel 4. Integer ve float veri tipi

3.2. Python'a Özgü Veri Yapıları


[2]
Python’da Liste, Tuple, Küme ve Sözlük olmak üzere dört farklı veri yapısı vardır . Bu veri yapıları Python
diline özgüdür. Bu yapılar Python ortamında farklı veri türlerini depolamada daha fazla esneklik ve daha hızlı
işlem sağlar. Sonraki bölümlerde, bu veri yapılarının her birinin Python kullanılarak nasıl uygulanabileceğinin
ayrıntıları verilmiştir.

about:blank 21/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

3.2.1. Liste Veri Yapısı Oluşturma

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:

Görsel 5. Liste oluşturma örneği

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.

Görsel 6. Liste elemanlarına erişim örneği

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:

Görsel 7. Listenin uzunluğunu öğrenme

about:blank 22/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Görsel 8. Listeye yeni bir eleman ekleme

3.2.2. Liste İçerisine Başka Bir Liste Eklemek


Bu işlem için ilk olarak elemanları metin olan bir liste oluşturalım. Daha sonra bu listeyi, önceden
oluşturduğumuz sayısal liste içerisine ekleyelim. Aşağıdaki şekilde (Görsel 9) yapılan işlemlerin ekran çıktısı
gözükmektedir:

Görsel 9. Listeye farklı bir liste eklemek

3.2.3. Listenin Birden Çok Elemanına Erişmek

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:

Görsel 10. Listenin birden çok elemanına erişmek

İş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).

Görsel 12. Atlama aralığı ile liste elemanlarını yazdırmak

3.2.4. Liste Veri Yapısında Kullanılan Bazı Yararlı Metotlar


Bu bölümde liste veri yapısı ile kullanılan .index(), .pop(), .del(), .remove() ve .sorted() gibi bazı yararlı
metotlarının kullanımı ile ilgili örnekler verilmiştir. Şimdi bu metotları sırası ile inceleyelim.

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:

Görsel 13. Listedeki bir elemanın indis numarasını bulmak

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

Görsel 14. Listede indis numarası girilen elemanı silmek

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:

Görsel 15. Listeden del() ve .remove() metodu ile eleman silmek

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

Görsel 17. Liste elemanlarını sıralama ve ters çevirme

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

İlker Arslan “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019

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)

(B) 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)

(A) 140 sayısını siler

(B) 110,120,130,140 sayılarını siler

(C) 140,150,160,170 sayılarını siler

(D) 150 sayısını siler

Cevap-10 :

150 sayısını siler

about:blank 30/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

4. PYTHON’A ÖZGÜ VERİ YAPILARI - 2


(TUPLE, KÜME, SÖZLÜK)
Birlikte Düşünelim
∙ Tuple veri yapısının Liste veri yapısından farkı ve özelliği nedir?

∙ Küme veri yapısının özellikleri nelerdir?

∙ 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.

4.1. Tuple (Demet) Veri Yapısı


Tuples, tıpkı listeler gibi sıralı bir öğe dizisidir. Tuple'lar ve listeler arasındaki temel fark; Listelerden farklı
[1]
olarak Tupple’da veri değerlerini değiştirmek mümkün değildir . Bunun nedeni içeriği değiştirilmemesi gereken
veriler Tuple veri yapısında tutulur.

4.1.1. Tuple Oluşturma

Öğ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.

Görsel 1. Tuple oluşturma

4.1.2. Tuple Öğelerine Erişim

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:

Görsel 2. Tuple öğelere erişim

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:

Görsel 3. Tuple veri yapısının değiştirilemezlik özelliği

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):

Görsel 4. Tuple elemanlarının değişkenlere aktarılması

4.1.3. Listeye Göre Tuple Avantajları


Tuple’lar Listelere oldukça benzediğinden ikisi de benzer
durumlarda kullanılır. Bununla birlikte, bir listeye bir tuple
uygulamanın belirli avantajları vardır. Aşağıda bu
avantajlardan bazıları verilmiştir:

∙ Genelde heterojen (farklı) veri türleri için Tuple ve


homojen (benzer) veri türleri için listeler kullanırız.

∙ Tuple’lar değişmez olduğundan, bir demet boyunca


yineleme, Liste’den daha hızlıdır. Yani hafif bir performans artışı var.

∙ 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.

4.2. Küme (Set) Veri Yapısı


Küme (set), farklı nesnelerin değiştirilebilir, sıralanmamış bir koleksiyonudur. Veri nesnelerini sıralama olmadan
her nesneden sadece bir tane olacak şekilde kaydetmek için Set (küme) yapısı kullanılır. Küme, matematikteki
kümenin bir Python uygulamasıdır. Küme nesnesinin, birleşim, kesişim, fark vb. matematiksel küme işlemlerini
gerçekleştirmek için uygun yöntemleri vardır. Küme veri yapısında, verilerin sırası önemli değildir. Set’ler,
[2]
listelerde olduğu gibi sonradan değiştirilebilir veriler içerir .

4.2.1. Küme Oluşturma

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:

Görsel 5. Küme oluşturma örnekleri

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

Görsel 6. Tuple veri yapısını kümeye dönüştürme

4.2.2. Kümeye Veri Ekleme, Silme ve Çıkarma İşlemleri


Kümeye veri eklemek için .add( ) metodu kullanılır. Ancak bu metot kümeye sadece bir eleman ekler. Birden çok
eleman eklenmeye çalışılırsa hata verir. Birden fazla eleman eklemek için .update() komutu kullanılır. Ancak bu
yaklaşımda kümeye veri bir liste olarak eklenir. Bunun için eklenecek veri önce liste olarak oluşturulur, daha
sonra kümeye eklenir.

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ı:

Görsel 7. Kümeye veri ekleme işlemi

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

Görsel 8. Kümeden eleman çıkarma ve silme işlemi

4.3. Sözlük Veri Yapısı


Sözlük veri yapısı, bir öğe olarak yalnızca tek bir değeri tutan diğer Veri Türlerinden farklı olarak, bir harita gibi
[3]
veri değerlerini depolamak için kullanılan, sırasız bir veri değerleri koleksiyonudur . Sözlük oluşturmak için bir
adet anahtar(key), bir adet değer(value)olması gerekir. Sözlük'teki her anahtar - değer çifti iki nokta üst üste “:”
ile ayrılırken, her anahtar -değer çifti diğer anahtar-değer çiftlerinden "," virgül ile ayrılır.

4.3.1. Sözlük Oluşturma

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

4.3.2. Sözlük Elemanlarına Erişmek ve Anahtar Kelimelerini Öğrenmek


Sözlük veri yapısı içerisinde yer alan elemanlara erişmek için Listelerde var olan indeksleme mantığı/yapısı
kullanılır. Sözlükleri bizim oluşturmadığımızı varsayıp başka bir veri kaynağından geldiğini göz önüne alalım.
Bu durumda sözlüğün anahtar ve değer öğelerini öğrenmek isteyebiliriz. Bu şekilde karşımıza çıkan bir sözlük
verisinden key'leri öğrenmek için .keys( ) metodu, sözlük değerlerini görmek için ise .values() metodu kullanılır.

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:

Görsel 10. Sözlük


elemanlarına erişmek

4.3.3. Sözlük Elemanlarında Değişiklik ve Güncelleme Yapmak


Sözlüğün herhangi bir elemanını değiştirmek istersek, sözlüğün key (anahtar) kelimesinin değeri/içeriği
değiştirilir. Sözlükte güncelleme yapmak için ise .update( ) metodu kullanılır.

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ı:

Görsel 11. Sözlük elemanlarında değişiklik ve güncelleme işlemi

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

Görsel 12. Sözlük veri yapısında kullanılan bazı komut işlemleri

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.

∙ Küme (set), farklı nesnelerin değiştirilebilir, sıralanmamış bir koleksiyonudur.

∙ Sözlük veri yapısı, sırasız bir veri değerleri koleksiyonudur.

Kaynakça
WEB: https://www.programiz.com/python-programming/tuple

Atıl Samancıoğlu, “Python Sıfırdan Uzmanlığa Programlama”, UniKod, 1. Baskı, 2020

İlker Arslan “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019

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)

(A) Elemanları değiştirilebilir

(B) Tuple’da indis değeri 1’den başlar

(C) Tuple elemanları değiştirilemez

(D) Tuple sadece sayısal değerler içerebilir

Cevap-1 :

Tuple elemanları değiştirilemez

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)

(A) kümenin ilk elemanını siler

(B) kümenin son elemanını siler

(C) kümenin ortasındaki elemanı siler

(D) kümeden rasgele bir eleman siler

Cevap-8 :

kümeden rasgele bir eleman siler

Soru-9 :

Sözlük veri yapılarında kullanılan .popitem() komutu ne yapar?

(Çoktan Seçmeli)

about:blank 40/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(A) Sözlüğün ilk anahtarını görüntüler

(B) Sözlüğün son anahtarını siler

(C) Sözlüğün ilk anahtar ve değerini siler

(D) Sözlüğün son anahtar ve değerini siler

Cevap-9 :

Sözlüğün son anahtar ve değerini siler

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)

(A) s[“Ad1”]=“Mehmet Ziya”

(B) s[“key1”]=“Mehmet Ziya”

(C) s[“key1”]= Mehmet Ziya

(D) s[“Ad1”]= Mehmet Ziya

Cevap-10 :

s[“Ad1”]=“Mehmet Ziya”

about:blank 41/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

5. PYTHON’DA KONTROL YAPILARI - 1


Birlikte Düşünelim
∙ Temel kontrol yapıları nelerdir?

∙ Bu kontrol yapılarının temel özellikleri nelerdir?

∙ Seçmeli ve sıralı yapılar Python’a özgü veri yapıları ile nasıl kullanılır?

∙ İç içe for 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.

5.1. Programlama Kontrol Akış Şekilleri


Kontrol akışı (yapısı), bir yazılım programının bağımsız ifadelerinin, talimatlarının veya işlevlerinin yürütüldüğü
ve değerlendirildiği sıradır. Basitçe ifade etmek gerekirse program akışı, kod satırlarının işlendiği sırayı
tanımlayan genel bir terimdir. Bir bilgisayar programı temel kontrol yapıları kullanılarak yazılabilir. Bir kontrol
yapısı değişkenleri analiz eden ve verilen parametrelere göre gidilecek yönü seçen bir programlama bloğudur.
Başka bir ifade ile bir kontrol yapısı sadece bilgisayarın verdiği bir karardır. Bu nedenle, programlamada temel
karar verme sürecidir ve kontrol akışı, bir bilgisayar programının belirli koşullar ve parametreler verildiğinde
nasıl tepki vereceğini belirler.

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

Şekil 3. Kontrol yapıları

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

Şekil 4. Şartlı kontrol yapısı

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.

Görsel 1. if kontrol yapısı örneği

5.1.2. if else Yapısı


Sonuç açısından iki durum varsa if..else kontrol yapısı (Şekil 5) kullanılır. Else ifadesi, if ifadesindeki şart
yanlışsa yürütülecek olan kod bloğunu belirtmektir. Böylece, else cümlesi, bir dizi ifadenin yürütülmesini sağlar.
about:blank 44/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Şekil 5. if else kontrol yapısı

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ı:

Görsel 2. if..else kontrol yapısı örneği

about:blank 45/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

5.1.3. if-elif-else Yapısı

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:

If değer şart-1 sağlıyorsa:

işlem-1’i yap

elif değer şartı-2 sağlıyorsa:

işlem-2’yi yap

elif değer şartı-3 sağlıyorsa:

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.

Görsel 3. if..elif..else kontrol yapısı örneği

5.1.4. in İşlecinin Kullanımı

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).

Görsel 4. in işlecinin kullanım örneği

5.1.5. for Kontrol Yapısı

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.

Şekil 6. for kontrol yapısı

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:

for değişken in dizi:

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

Görsel 5. for döngüsü örneği-1

Ş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.

Görsel 6. for döngüsü örneği-2

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):

Görsel 7. for döngüsü örneği-3

about:blank 48/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

5.1.6. for Döngüsünün Python Veri Yapıları ile Kullanımı


[3]
Bu bölümde for döngü yapısının Pyton’a özgü veri yapıları ile kullanımına ait örnekler verilmiştir .

Küme Veri Yapısı ile Kullanımı

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):

Görsel 8. for döngüsü ile küme veri yapısı örneği

Sözlük Veri Yapısı ile Kullanımı

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

Görsel 9. for döngüsü ile sözlük veri yapısı örneği

İç içe for Döngüsü Kullanımı.

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

Görsel 10. iç içe for döngüsü örneği

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.

∙ Program akışı, kod satırlarının işlendiği sırayı tanımlamaktadır.

∙ Veriler ve yönergeler, bilgisayar programlamasının olmak iki temel yönünü oluşturmaktadı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

İlker Arslan “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019

Atıl Samancıoğlu, “Python Sıfırdan Uzmanlığa Programlama”, Unikod, 1. Baskı, 2020

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 :

Aşağıda verilen ifadelerden hangisi kontrol yapıları içerisinde yer almaz?

(Ç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 :

Aşağıda verilen ifadelerden hangisi doğru değildir?

(Çoktan Seçmeli)

(A) Döngüsel yapılarda for kullanılır.

(B) for ve if aynı kod içerisinde kullanılmaz.

(C) if şartlı cümleler için kullanılır

(D) Birden çok seçenek farsa if elif yapısı kullanır.

Cevap-10 :

for ve if aynı kod içerisinde kullanılmaz.

about:blank 56/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

6. PYTHON’DA KONTROL YAPILARI - 2


Birlikte Düşünelim
∙ While kontrol yapısı genel biçimi nasıldır?

∙ Break komutu döngü içerisinde nasıl kullanılır?

∙ Continue komutu kullanımı nasıl kullanılır, Break komutundan farklı olan işlevi nedir?

∙ Range komutu ve Random fonksiyonu nasıl kullanılır?

∙ Zip komutunu ne için kullanıyoruz?

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.

6.1. While Kontrol Yapısı


Yineleme, aynı kod bloğunu defalarca, potansiyel olarak birçok kez çalıştırmak anlamına gelir. Yinelemeyi
uygulayan bir programlama yapısına döngü denir. Programlamada, belirsiz ve belirli olmak üzere iki tür
yineleme vardır: Belirsiz yinelemeyle, döngünün çalıştırılma sayısı önceden açıkça belirtilmemiştir. Aksine
belirtilen blok, bazı koşullar karşılandığı sürece tekrar tekrar yürütülür (Şekil 7).

about:blank 57/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Şekil 7. While yapısının şeması

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.

Görsel 1. While yapısı örnekleri

6.1.1. Break Anahtar Komutu


[1]
Break anahtar komutu şart ifadesinin doğru (True) olduğu anda geçerli döngüyü sonlandırır, şart ifadesi
gerçekleşmediği sürece (False) döngü içindeki ifadeler yürütülmeye devam eder (Şekil 8).

about:blank 58/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Şekil 8. Break komut yapısı

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

Görsel 2. Break komutuna ait örnek

Ş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:

Görsel 3. While döngüsünün durdurulması

6.1.2. Continue Anahtar Komutu

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).

Şekil 9. Continue komut yapısı

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:

Görsel 4. Continue komut yapısı

6.1.3. Yararlı Metotlar-1: Range Metodu

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 .

start (başlangıç): dizinin değer döndürüleceği başlangıç tam sayısı

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)

Görsel 5. range (stop) kullanım örneği

range (start, stop).

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):

Görsel 6. range (start, stop) kullanım örneği

range (start, stop, step)

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:

Görsel 7. range (start, stop, step) kullanım örneği

6.1.4. Yararlı Metotlar-2: Random Metodu

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.

Rastgele Float Tipinde Sayı Üretmek

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:

Görsel 8. Float tipinde sayı üretim örneği

Rastgele Integer Tipinde Sayı Üretmek

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:

Görsel 9. Integer tipinde sayı üretim örneği

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

6.1.5. Yararlı Metotlar-3: Zip Metodu

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.

Tuple Verilerin Zip() fonksiyonu ile Birleştirilmesi

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:

Görsel 12. Zip() fonksiyonunun kullanımı.

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).

Görsel 13. Tuple nesnesine dönüştürme işlemi

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.

Tuple Verilerinin Sözlüğe Dönüştürülmesi

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).

Görsel 14. Sözlük nesnesine dönüştürme işlemi

Liste Verilerinin Küme Veri Yapısına Dönüştürülmesi

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

Görsel 15. Küme nesnesine dönüştürme işlemi

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.

∙ Döngü ise, bu yöntemi uygulayan programlama yapısıdı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.

∙ Range, random ve zip metotları python’daki yararlı metotları oluşturmaktadır.

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.w3resource.com/python/python-break-continue.php t"


target="_blank">https://www.w3resource.com/python/python-break-continue.php t

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)

(A) şart ve işlemler olmak üzere iki yapıdan oluşmaktadır.

(B) şart cülesi kontrol için kullanılır.

(C) döngüsel işlemler için kullanılır.

(D) Seçimli yapılar ile kullanılamaz.

Cevap-1 :

Seçimli yapılar ile kullanılamaz.

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 :

Aşağıda verilen kodun çıktısı hangi şıkta doğru olarak verilmiştir?

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 :

Aşağıdaki ekrandaki çıktının alınabilmesi için 3 numaralı satıra ne yazılması gerekir?

(Ç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)

(A) (“Can”, 40)

(B) (“Zehra”, 17)

(C) (“Hale”, 25)

(D) (“Kazım”, 25)

Cevap-9 :

(“Kazım”, 25)

about:blank 69/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Soru-10 :

Aşağıda listeleri sözlük yapısına dönüştürmek için hangi komut kullanılmalıdır?

(Ç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

7. PYTHON İÇİN VERİ ANALİZİ ARAÇLARI - 1


(NUMPY)
Birlikte Düşünelim
Python’a özgü Liste veri yapıları varken neden Numpy dizilerine ihtiyaç vardır. NumPy, Python programlama
dili için bir kütüphane olup büyük ve çok boyutlu diziler ve matrislerle çalışmak için geniş üst düzey
matematiksel fonksiyon koleksiyonu içerir. Başka bir ifade ile liste veri yapıları ile yapılamayan matematiksel
işlemler Numpy dizileri ile yapılabilmektedir. Python, Fortran, C ve diğer dillere kıyasla döngü işlemlerinde
daha yavaştır. Bunun üstesinden gelmek için monoton kodu derlenmiş forma dönüştüren NumPy paketi
kullanılır.

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.

7.1. Numpy Kütüphanesi


[1]
NumPy, Numerical Python'un kısaltmasıdır . Python programlamadaki en yararlı bilimsel kütüphanelerden
biridir. Büyük çok boyutlu dizi nesneleri ve bunlarla çalışmak için çeşitli araçlar sağlar. Pandas, Matplotlib ve
Scikit-learn gibi çeşitli diğer kütüphaneler bu kütüphanenin üzerine inşa edilmiştir. Bu, Python’un veri bilimi
araç setinin neredeyse tüm gücünün üzerine inşa edildiği temeldir. NumPy'yi öğrenmek, herhangi bir Python veri
bilimcisinin yolculuğunun ilk adımıdı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:

Görsel 1. Numpy kütüphanesinin yüklenmesi

7.1.1. Numpy Dizisi Oluşturma

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

Görsel 2. Numpy dizisi oluşturma

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:

Görsel 3. Liste veri yapısı ile ortalama hesaplama

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:

Görsel 4. Numpy dizileri ile ortalama hesaplama

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:

Görsel 5. Listelerde birleştirme işlemi

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.

Görsel 6. Numpy dizilerinde toplama işlemi

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:

Görsel 7. Float tipinde Numpy dizisi oluşturma

7.1.2. İki Boyutlu Numpy Dizisi Oluşturma


İki boyutlu, yani matris biçiminde dizi oluşturmak için aşağıdaki Görsel 8’de gösterildiği gibi bir yapı kullanılır.

about:blank 73/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Görsel 8. İki boyutlu Numpy dizisi oluşturma

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.

Görsel 9. Random komutu ile iki boyutlu Numpy dizisi oluşturma

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:

Görsel 10. arange() komutu ile dizi oluşturma

7.1.3. Bir Boyutlu Diziyi Dilimleme


Dilimleme, bir indeksten diğer indekse kadar olan öğeleri almak anlamına gelir. Bunun için dizindeki başlangıç
ve bitiş noktasını [başlangıç: bitiş] yani [start: end] seçmek gerekir. Ayrıca adım boyutunu seçerek bir parça da
alınabilir. Örneğin, adım boyutunu 2 almak demek; öğeyi mevcut indeksten 2 basamak uzağa almak demektir.
Kısacası tüm bunları tek bir dizine dahil etmek için şu ifade kullanılır: [başlangıç: bitiş: adım] veya [start: end:
step-size]. Aşağıdaki ekran görüntüsünde (Görsel 11) oluşturulmuş olan “dizim3” adlı dizinin birinci indis ve
dokuzuncu indis değeri arasında atlama adımı iki olarak dilimlenen sayılar verilmiştir:

about:blank 74/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Görsel 11. Birinci dilimleme işlemi örneği

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):

Görsel 12. İkinci dilimleme işlemi örneği

7.1.4. İki Boyutlu Diziyi Dilimleme


İki boyutlu bir dizinin satırları ve sütunları vardır. İki boyutlu dizileri dilimlemek biraz zor olabilir. Ama bir kez
anladıktan sonra, herhangi bir iki boyutlu diziyi kolaylıkla dilimleyebilirsiniz.

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:

Görsel 13. İki boyutlu diziyi dilimleme işlemi

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

İlker Arslan “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019

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)

(A) Numpy, Numerical Python’un kısaltmasıdır.

(B) Python kütüphanelerinde biridir.

(C) Büyük boyutlu dizileri işlemede başarılı değildir

(D) Pandas, bu kütüphanenin üzerine inşa edilmiştir.

Cevap-1 :

Büyük boyutlu dizileri işlemede başarılı değildir

Soru-2 :

Aşağıda verilen ifadelerden hangisi Numpy kütüphanesini çalışma sayfasına yükler

(Çoktan Seçmeli)

(A) load numpy as np

(B) import numpy as np

about:blank 76/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(C) export numpy as np

(D) read numpy as np

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)

(A) import numpy as np


np.array([[20,40,15]:[90,70,85]])

(B) import numpy as np


np.array([[20,40,15],[90,70,85]])

(C) import numpy as np


np.array([[20,40,15];[90,70,85]])

(D) import numpy as np


np.array([[20,40,15][90,70,85]])

Cevap-4 :

import numpy as np
np.array([[20,40,15],[90,70,85]])

Soru-5 :

Aşağıda verilen kodun çıktısı hangi şıkta doğru olarak verilmiştir?

about:blank 77/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(Çoktan Seçmeli)

(A) iki satırlı, 4 sütünlü bir numpy dizisi oluşturur

(B) sekiz elemanlı bir numpy dizisi oluşturur

(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 :

dört satır, iki sütundan oluşan bir numpy dizisi oluşturur

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)

(A) 45, 14, 66, 81

(B) 25,45,14,66,81

(C) 45,14,66,81,93

(D) 25,45,14,66

Cevap-8 :

45, 14, 66, 81

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 :

Aşağıda belirtilen ifadelerden hangisi doğrudur?

about:blank 79/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(Çoktan Seçmeli)

(A) Numpy dizilerinde index birden başlar

(B) Numpy dizilerinde son eleman yazdırılamaz

(C) Numpy dizilerinde index sıfırdan başlar

(D) Numpy dizilerindeki elemanlara indexlerle erişilemez.

Cevap-10 :

Numpy dizilerinde index sıfırdan başlar

about:blank 80/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

8. PYTHON İÇİN VERİ ANALİZİ ARAÇLARI - 2


(PANDAS)
Birlikte Düşünelim
∙ Pandas kütüphanesi ne işe yarar?

∙ Veri çerçevesi nasıl kullanılır?

∙ Veri çerçevesine dışarıdan veri aktarımı nasıl sağlanır?

∙ Satır, sütün seçme işlemleri nasıl yapılır.

∙ Loc ile iLoc arasındaki fark nedir, ne zaman kullanılırlar?

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:

Her sütunun ortalaması, medyanı, maksimum veya minimum değeri nedir?

A sütunu B sütunu ile ilişkili mi?

C sütunundaki verilerin dağılımı nasıl görünüyor?

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.

8.1. Pandas Kütüphanesi


Pandas kütüphanesi, veri bilimi araç setinin bir bileşeni olmasının yanı sıra aynı zamanda Python’daki diğer
kütüphanelerle birlikte kullanılabilen bir pakettir. Pandas, NumPy paketinin üzerine inşa edilmiştir. Buda birçok
NumPy yapısının Pandas'da kullanıldığı anlamına gelir. Pandas’daki veriler genellikle SciPy'de istatistiksel
analizi yapmak, Matplotlib'de fonksiyonlar çizmek ve Scikit-learn'deki makine öğrenimi algoritmalarını
[1]
beslemek için kullanılır .

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:

Görsel 1. Pandas paketinin çalışma sayfasına yüklenmesi

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.

Şekil 10. Seri ve Veri Çerçevesi

8.1.1. Pandas Serisi ve Veri Çerçevesi Oluşturmak


Pandas serileri indekslenmiş bir boyutlu diziler gibi bir yapıya sahiptir. Pandas serisi oluşturmak için için
pd.Series() metodu kullanılır (Görsel 2).

Görsel 2. Seri oluşturma örneği

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):

Görsel 3. iris verisi için oluşturulan sözlük

İ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

Görsel 4. Sözlüğün veri çerçevesine dönüştürülmesi

8.1.2. Veri Çerçevesi Üzerinde İşlem Yapmak


Veri çerçevesi üzerinde ekleme ve silme gibi işlemler uygulanabilir. Bu bölümde bu işlemler örnekler verilerek
açıklanmıştır.

Veri Çerçevesine Sütun Ekleme İşlemi:

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).

Görsel 5. Veri çerçevesine sütun ekleme

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

Görsel 6. Veri çerçevesine elemanları farklı olan sütun ekleme

Veri Çerçevesinden Sütun Silme İşlemi:

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.

Görsel 7. Veri çerçevesinden sütun silme işlemi

8.1.3. Veri Çerçevesini Dışarıdan Veri Okuyarak Doldurmak


Yukarıdaki bölümlerde olduğu şekilde verileri önce listeler olarak düzenlemek daha sonra bu listeleri veri
çerçevesine dönüştürmek özellikle verilerin fazla olduğu durumlarda zordur. Yukarıdaki işlemler ilk haftalarda
gördüğümüz veri saklama araçlarını tekrar etmek amacıyla oluşturduk. Gerçek hayatta ise veriler daha çok excel
veya csv formatında tutulur.

Ş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

Görsel 8. csv uzantılı bir dosyanın okunması

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

Görsel 10. Sütun adlarının değiştirilmesi

Veri Çerçevesinde Sütun Seçmek

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).

Görsel 11. Sütun seçme işlemi

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

Görsel 12. Birden fazla sütun seçme işlemi

Veri Çerçevesinde Satır Seçmek

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.

Görsel 13. Satır seçme işlemi

Loc ve iLOc Komutları

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

Görsel 14. Liste verilerinin veri çerçevesine dönüştürülmesi

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).

Görsel 15. Liste verilerinin veri çerçevesine dönüştürülmesi

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

Görsel 16. Loc fonksiyonu ile veri çerçevesinden satır dilimleme

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).

Görsel 17. Loc fonksiyonu ile satır sütun kesişimi dilimleme

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

aşağıdaki komut yazılır (Görsel 18).

Görsel 18. iLoc fonksiyonu ile satır dilimleme

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).

Görsel 19. iLoc fonksiyonu ile satır dilimleme

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

İlker Arslan “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019

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 :

Aşağıdaki ifadelerden hangisi pandaları ithal edecek?

(Çoktan Seçmeli)

(A) import pandas as pd

(B) import panda as py

(C) import pandaspy as pd

(D) Yukarıda belirtilenlerin tümü

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)

(A) Character Vector

(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)

(A) öğrenci [Bölümü]= Orman, Bilgisayar, Elektronik

(B) öğrenci (Bölümü)= “Orman”, “Bilgisayar”, “Elektronik”

about:blank 92/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(C) öğrenci (Bölümü)= Orman, Bilgisayar, Elektronik

(D) öğrenci [Bölümü]= “Orman”, “Bilgisayar”, “Elektronik”

Cevap-4 :

öğrenci [Bölümü]= “Orman”, “Bilgisayar”, “Elektronik”

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)

(A) öğrenci.columns=[“Numarası”, “İsmi”, “Bölümü”]

(B) öğrenci.columns([“Numarası”, “İsmi”, “Bölümü”])

(C) öğrenci.column=[“Numarası”, “İsmi”, “Bölümü”]

about:blank 93/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(D) öğrenci_columns=[“Numarası”, “İsmi”, “Bölümü”]

Cevap-6 :

öğrenci.columns=[“Numarası”, “İsmi”, “Bölümü”]

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 :

Aşağıdaki ifadelerden hangisi type() komutunun işlevini doğru olarak açıklar?

(Çoktan Seçmeli)

(A) veri çerçvesinin sütun sayısını verir.

(B) veri çerçvesinin satır sayısını verir.

(C) veri yapısının tipini belirtir.

(D) veri yapısının tipini değiştirir.

Cevap-10 :

veri yapısının tipini belirtir.

about:blank 95/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

9. PYTHON İÇİN VERİ ANALİZİ ARAÇLARI - 3


(MATPLOTLIB)
Birlikte Düşünelim
∙ Grafik çizimi nasıl yapılır?

∙ Grafik türleri nelerdir?

∙ Grafiklerde, renk, etiket, başlık nasıl eklenir?

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.

9.1. Matplotlib Kütüphanesi


Verilerden gerekli istatistiksel çıkarımları yapmak için verileri görselleştirmek gerekir. Matplotlib, Python
[1]
kullanıcıları için böyle bir çözüm sunan popüler veri görselleştirme aracıdır . Başka bir ifade ile Matplotlib,
NumPy dizileri üzerine kurulmuş çok platformlu bir veri görselleştirme kütüphanesidir. Matplotlib, çeşitli çizim
türlerini destekleyen açık kaynaklı bir çizim kitaplığı olup, çok az satır kodla grafikler, histogramlar, çubuk
[2]
grafikler ve diğer grafik türleri oluşturmaya imkân sağlar. Bu bölümde, Matplotlib ile çalışmaya başlamaya
yardımcı olacak temel konular anlatılacaktır. En sık kullanılan grafiklerin nasıl oluşturulacağı ve her birinin ne
zaman kullanılacağı açıklanacaktır.

9.1.1. Matplotlib Kütüphanesinin Yüklenmesi


Matplotlib, kütüphanesini çalışma sayfasına yüklemek için aşağıdaki komut satırlarını yazmak gerekir.
matplotlib.pyplot ifadesi “as plt” olarak kısaltılarak kullanılır. .pyplot modülü, grafik üzerinde çeşitli özellikleri
değiştirmeye yarayan fonksiyonları içerir. %matplotlib inline komut satırı Jupyter Notbook’ta grafik
gösterimini sağlamak için yazılır (Görsel 1).

Görsel 1. matplotlib kütüphanesinin yüklenmesi

9.1.2. Çizgi Grafiği Çizdirmek

Ç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

Görsel 2. Grafik çizimi için gerekli kütüphanelerin yüklenmesi

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):

Görsel 3. Çizgi grafiği çizimi

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

Görsel 4. Sinüs grafiği çizimi

Grafik Çizdirmekte Kullanılan Renk ve Karakterler

Grafik çiziminde çizgilerin farklı şekilde görünmesi istendiğinde aşağıda verilen şekildeki karakterler kullanılır
(Görsel 5):

Görsel 5. Grafik çiziminde kullanılan karakterler

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).

Görsel 6. Farklı renk ve karakterle sinüs grafiği çizimi

Çoklu Grafik Çizdirmek, Etiket ve Izgara Eklemek

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

Görsel 7. Çoklu grafik çizimi

9.1.3. Bar Grafiği Çizdirmek


Bu bölümde Python’un Matplotlib kitaplığını tek bir eksende kullanarak farklı bir eksende iki çubuk grafiğin ve
çoklu çubuk grafiğin nasıl çizileceği gösterilmiştir. Önce çubuk grafiğin ne olduğunu anlayalım. Farklı grupların
sayısal değerlerini veya verilerini karşılaştırmak için çubuk grafik kullanılır veya bir çubuk grafiğin, kategorik
verileri dikdörtgen çubuklarla görselleştirebilen ve dikey veya yatay bir eksende kolayca çizilebilen bir grafik
veya grafik türü olduğunu söyleyebiliriz. Bar grafiği çizdirmek için plt.bar() fonksiyonu kullanılır.

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

Görsel 8. Bar grafik çizimi

Çoklu Bar Grafiği Çizdirmek

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

Görsel 9. Çoklu bar grafik çizimi

Yatay Bar Grafiği Çizdirmek

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

Görsel 10. Yatay bar grafik çizimi

9.1.4. Scatter (Dağıtık) Grafik Çizdirmek


Dağıtık grafik çizdirmek için plt.scatter() fonksiyonu kullanılır. Aşağıdaki kodu inceleyelim. İlk olarak x1, y1 ve
x2, y2 dizileri oluşturuldu. plt.scatter(x1,y1 ,label = 'Sınıf 1',marker='o' , color = 'green') komutu ile x1 ve y1
değerleri koordinatlarına yerleştirildi. Bu kodda marker=‘o‘ ile değerlerin gösterim şekli belirleniyor.
Fontsize=12 ile karakter büyüklüğü; Plt.legend(loc=‘upper right‘) ile legend’ın konumu belirtiliyor (Görsel 11).

about:blank 103/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Görsel 11. Dağıtık grafik çizimi

9.1.5. Dilim (Pasta) Grafik Çizdirmek


Dilim grafik çizdirmek için plt.pie( ) fonksiyonu kullanılır. Yandaki kodun açıklaması: Dilim=(0,0,0,0.1) 4.
dilimin öne çıkarılmasını sağlar. plt.pie(alan, explode=dilim,..) explode parametresi, dilim sayısını sağlar.
startangle=90, parametresi ise dilim grafiğini kaç derece döndürüleceğini tanımlar (Görsel 12).

about:blank 104/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Görsel 12. Dilim (Pasta) grafik çizimi

Pasta Dilimi Üzerine Yüzde İşaretlerinin Gösterilmesi

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

Görsel 13. Pasta grafikte değerlerin yüzde olarak gösterimi

9.1.6. Histogram Grafiği Çizdirmek


Histogram grafiğini çizdirmek için plt.hist() fonksiyonu kullanılır. np.random.normal(size=2000), normal
dağılıma uyan 2000 adet rastgele değer üretir. bins=40, x, değişkeni ile üretilen 2000 değerin kaç sütun olarak
ifade edileceğini belirtir (Ş Görsel 14).

about:blank 106/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Şekil 9.14. Histogram grafik çizimi

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).

Şekil 9.15. Normal dağılıma göre üretilmeyen sayıların histogram grafiği

Histograma Kenar Çizgi Çizdirmek

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

Şekil 9.16. Kenarları çizdirilmiş histogram grafiği

Farklı Histogramları Aynı Grafikte Çizdirmek

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

İlker Arslan, “Python ile Veri Bilimi”, Pusula, 2. Baskı, 2019

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 :

Aşağıda verilen şıklardan hangisi grafik çizme kütüphanesidir?

(Çoktan Seçmeli)

(A) numpy

(B) pandas

(C) skilearn

(D) matplotlib

Cevap-1 :

matplotlib

Soru-2 :

plot() fonksiyonu ne yapar?

(Çoktan Seçmeli)

(A) çizgi çizdirir

about:blank 109/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(B) grafik çizdirir

(C) sütun çizdirir

(D) daire çizdirir

Cevap-2 :

çizgi çizdirir

Soru-3 :

Çizilen grafiği ekrana görüntülemek için hangi komut kullanılır?

(Çoktan Seçmeli)

(A) plt.plot()

(B) plt.show()

(C) plt.legend()

(D) plt.screen()

Cevap-3 :

plt.show()

Soru-4 :

np.linspace(5,15, 50) komutu ne yapar?

(Çoktan Seçmeli)

(A) 50 tane sayı üretir.

(B) 1-10 arasında 50 tane sayı üretir.

(C) 5-15 arasında 50 tane sayı üretir.

(D) 5-15 arasında 25 tane sayı üretir.

Cevap-4 :

5-15 arasında 50 tane sayı üretir.

Soru-5 :

Grafik çiziminde kullanılan “s” karakteri ne nayapar?

(Çoktan Seçmeli)

(A) veri noktalarını kare biçiminde gösterir.

(B) veri noktalarını “s” biçiminde gösterir.

(C) veri noktalarını küçülterek gösterir.

about:blank 110/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(D) veri noktalarını sarı renkte gösterir.

Cevap-5 :

veri noktalarını kare biçiminde gösterir.

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

(B) r”= kırmızı

(C) m”= mavi

(D) y”= sarı

Cevap-6 :

m”= mavi

Soru-7 :

plt.figure(figsize=(8,6)) fonksiyonu ne yapar?

(Çoktan Seçmeli)

(A) çizilecek grafiğin 48 mm2 olarak ayarlar.

(B) çizilecek grafiğin enini 6, yüksekliğini 8 olarak ayarlar.

(C) çizilecek grafiğinin alanını 48 cm2 olarak ayarlar.

(D) çizilecek grafiğin enini sekiz, yüksekliğini 6 olarak ayarlar.

Cevap-7 :

çizilecek grafiğin enini sekiz, yüksekliğini 6 olarak ayarlar.

Soru-8 :

Sütun grafiği çizdirmek için hangi komut kullanılır?

(Ç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 :

Histogram grafiği çizdirmek için hangi komut kullanılır?

(Çoktan Seçmeli)

(A) plt.plot()

(B) plt.scatter()

(C) plt.hist()

(D) plt.barhist()

Cevap-9 :

plt.hist()

Soru-10 :

plt.grid() komutu ne yapar?

(Çoktan Seçmeli)

(A) grafiğe yatay çizgiler çizdirir

(B) grafiğe ızgara çizgileri çizdirir

(C) grafiğe dikey çizgiler çizdirir,

(D) grafiğin rengini gri olarak çizdirir

Cevap-10 :

grafiğe ızgara çizgileri çizdirir

about:blank 112/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

10. İSTATİSTİKSEL ANALİZ


Bölümle İlgili Özlü Söz

"Verilerimiz varsa, verilere bakalım. Elimizdeki tek şey fikirse, benimkiyle gidelim." Jim Barksdale, eski
Netscape CEO'su

Kazanımlar

1. Keşifsel veri analizi yapabilir.

2. Verilerin ortalamasını alabilir.

3. Verilerin standart sapmasını hesaplayabilir.

4. Verilerin medyanını almayı öğrenebilir.

5. Olasılık kümülatif fonksiyonunu anlayabilir.

6. Kümülatif dağılım fonksiyonunu kavrayabilir.

Birlikte Düşünelim

∙ Temel istatistiksel fonksiyonları ne işe yarar?

∙ Olasılık kümülatif fonksiyonu ne için kullanılır?

∙ Kümülatif dağılım fonksiyonu ne anlama gelir?

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.

10.1. Keşifsel Veri Analizi


Veri Biliminde, Keşifsel Veri Analizi (EDA), veri kümelerinin ana özelliklerini genellikle görsel yöntemlerle
[1]
özetlemek için analiz etmeye yönelik bir yaklaşımdır . EDA, modelleme görevinden önce verilerin bize ne
anlatabileceğini görmek için kullanılır. Bir sayı sütununa veya bütün bir veri çerçevesi tablosuna bakmak ve
verilerin önemli özelliklerini belirlemek kolay değildir. Düz sayılara bakarak içgörü elde etmek yorucu, sıkıcı ve
/ veya bunaltıcı olabilir. Keşifsel veri analizi teknikleri, bu durumda bir yardımcı olarak tasarlanmıştır.

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.

10.2. Verilerin Yüklenmesi

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.

Görsel 1. Veri setinin yüklenmesi ve görüntülenmesi

Ülkeler Bazında Kişi Sayısı

.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):

Görsel 2. Ülkelere göre veri setinde yer alan kişilerin sayısı

Verideki Erkeklerin ve Kadınların Sayısı

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

Görsel 3. Erkeklerin sayısı

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):

Görsel 4. Kadınların sayısı

Veriyi Yaşa Göre Gruplama

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).

Görsel 5. Veri setinde yer yaş grupları ve sayıları

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).

Görsel 6. Verilerin ortalaması

Verilerin Standart Sapması

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):

Görsel 7. Cinsiyete göre ortalama, varyans ve standart sapma değerleri

Ö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

Görsel 8. Cinsiyete göre medyan değerleri

Yüksek Gelirlilerin Medyanını Hesaplama

Ş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).

Görsel 9. Yüksek erkek ve kadınların medyan değerleri

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

Görsel 10. Erkek ve kadınların dağılımı

Olasılık Kütle Fonksiyonu


[4]
Olasılık Kütle Fonksiyonu (PMF), ayrık rastgele değişkenlerin bir kavramıdır (Görsel 11). Kesikli bir rastgele
değişkenin bir değere tam olarak eşit olma olasılığını gösterir. En büyük PMF değerine sahip rastgele değişkenin
değerine Mod denir.

Görsel 11. Olasılık kütle fonksiyon grafiği

Kümülatif Dağılım Fonksiyonu

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

Görsel 12. Kütle dağılım fonksiyon grafiği (sol:erkek; sağ=kadın)

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:

Görsel 13. Bütünleşik kütle dağılım fonksiyon grafiği (erkek-kadın)

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

Laura Igual, Santi Segui, “Introduction to Data Science”, Springer, 2017

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)

(A) görsel tekniklere

(B) matematiksel hesaplamaya

(C) modellemeye

(D) veriyi istatistiksel olarak anlamaya

Cevap-1 :

veriyi istatistiksel olarak anlamaya

Soru-2 :

shape komutu veri hakkında hangi bilgiyi verir?

(Çoktan Seçmeli)

(A) verideki satır sayısı

(B) verideki sütun sayısını

(C) verinin satır ve sütun sayısını

(D) veri içeriisndeki boş satırların sayısını

Cevap-2 :
about:blank 120/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

verinin satır ve sütun sayısını

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 :

Olasılık fonksiyonunu çizdirmek için aşağıda verilen argümanlardan hangisi kullanılır?

(Ç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)

(A) x = veri[(veri.network_type == ' network_type ')]

(B) x = veri[(veri.network_type == mobile)]

(C) x = veri[(veri.network_type == 'mobile')]

(D) x = veri[(veri.network_type == 'data')]

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)]

Bu komutun sonucu hangi şıkta doğru olarak ifade edilmiştir?

about:blank 123/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(Çoktan Seçmeli)

(A) 4.0’dan büyük olan duration değerleri görüntülenir.

(B) 4.0’a eşit ve büyük olan duration değerleri görüntülenir.

(C) 4.0’a eşit duration değerleri görüntülenir.

(D) 4.0’dan küçük ve büyük olan duration değerleri görüntülenir.

Cevap-10 :

4.0’a eşit ve büyük olan duration değerleri görüntülenir.

about:blank 124/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

11. MAKİNE ÖĞRENİMİ (DENETİMLİ-


DENETİMSİZ ÖĞRENME)
Birlikte Düşünelim
∙ Makine öğrenmesi nedir?

∙ Makine öğrenmesinin geleneksel programlamadan ne farkı var?

∙ Makine öğrenimi nasıl bir süreçtir?

∙ Elimizde var olan bir problem hangi makine öğrenimi problem sınıfına girer?

∙ Veri seti kaç farklı kısma ayrılır neden?

∙ Eğitim ve test verisinin ayrılma oranı ne olması gerekir?

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.

11.1. Makine Öğrenimi nedir?


Makine öğrenmesi, bir bilgisayarın doğru sonuçlar elde etmek için kendisine verilen örneklerden öğrenebileceği
fikrine dayanır. Makine Öğrenimi, yeni örnekleri için programcının tekrar kodlamasına gerek kalmadan verilen
bir öğrenme algoritması ile kendi kendini geliştirme yoluyla örneklerden öğrenebilen bilgisayar yazılım
[1]
sistemidir . Bu şekilde öğrenen sistemler gelecek durumlar için kullanıcılara öneri sağlar veya tahminde
bulunur. Başka bir ifade ile makine öğrenimi, eyleme geçirilebilir sezgiler oluşturmak için kullanılabilecek bir
çıktıyı tahmin etmek için verileri istatistiksel araçlarla birleştiren yapay zekânın bir parçasıdır. Makine öğrenimi,
dolandırıcılık tespiti, tahmini bakım, portföy optimizasyonu, görevi otomatikleştirme gibi çeşitli uygulamalarda
kullanılır.

11.2. Makine Öğrenimi ve Geleneksel Programlama


Geleneksel programlama, makine öğreniminden önemli ölçüde farklıdır. Geleneksel programlamada, bir
programcı, yazılımın geliştirildiği sektördeki bir uzmana danışarak tüm kuralları kodlar. Her kural mantıksal bir
temele dayanır. Makine mantıksal ifadeyi takiben bir çıktı yürütür/üretir (Şekil 11). Sistem karmaşıklaştığında,
daha fazla kural yazılması gerekir. Böyle bir durumda sürdürülebilirlik zor bir hale gelebilir.

about:blank 125/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Şekil 11. Geleneksel programlama

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.

Şekil 12. Makine öğrenmesinin ana şeması

11.3. Makine Öğrenimi Nasıl Çalışır?


Makinenin öğrenme şekli insana benzer. İnsanlar deneyimlerden öğrenirler. Ne kadar çok bilirsek, o kadar kolay
tahmin edebiliriz. Benzetme yapmak gerekirse, bilinmeyen bir durumla karşı karşıya kaldığımızda, başarı
ihtimali bilinen durumdan daha düşüktür. Makinelerde insan beynine benzer şekilde eğitilir. Doğru bir tahmin
yapmak için makineye birçok örnek verilir/öğretilir. Makineye mevcut örneklerin dışında benzer bir örnek
verdiğimizde sonucu anlayabilir/tahminde bulunabilir. Bununla birlikte, tıpkı bir insan gibi, daha önce
görülmemiş bir örnek verilirse, makine tahmin etmekte güçlük çeker.

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.

Şekil 13. Makine öğrenmesinin şematik yapısı

11.4. Makine Öğrenim Süreci


Makine Öğrenim süreci, bir problem ifadesine çözüm bulmak için kullanılabilecek bir öngörücü model
oluşturmayı içerir. Makine Öğrenimi sürecini anlamak için, Makine Öğrenimi kullanılarak çözülmesi gereken bir
problemin göz önüne alındığını varsayalım. Örneğin yerel bölgemizde yağmur oluşumunu tahmin etmek
amaçlanmaktadır. Bu işlemi makine öğrenimi kullanarak gerçekleştirmek için aşağıdaki adımların izlenmesi
[2]
gerekir (Şekil 14).

Şekil 14. Makine öğrenme süreci

Adım 1: Problemin amacını tanımlama

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.

Adım 2: Veri Toplama

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.

3. Adım: Veri Hazırlama

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.

4. Adım: Keşifsel Veri Analizi

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.

Adım 5: Bir Makine Öğrenimi Modeli Oluşturma

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.

Adım 6: Model Değerlendirme ve Optimizasyon

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.

11.5. Makine Öğrenimi Türleri


Bir makine, aşağıdaki üç yaklaşımdan herhangi birini izleyerek bir sorunu çözmeyi öğrenebilir. Bir makinenin
[3]
öğrenebileceği yollar şunlardı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).

Şekil 15. Denetimli öğrenme

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

Şekil 16. Denetimsiz öğrenme

Ö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:

Şekil 17. Makine öğrenmesi ile çözülen problem tipleri

[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

Şekil 18. Regresyon, Sınıflandırma ve Kümeleme arasındaki farkın özet tablosu

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 öğrenmesinde, makinenin insanlar gibi, kendi deneyimlerinden öğrenmesi hedeflenmektedir. Bu


amaçla, makineler de insan beynine benzer şekilde eğitilir.

∙ 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 :

Aşağıdakilerden hangisi denetimli öğrenmesi algoritması değildir?

(Çoktan Seçmeli)

(A) PCA

(B) Karar Ağacı

(C) Doğrusal Regresyon

(D) Naif Bayesyen

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)

(A) Denetimsiz öğrenme

(B) Denetleme mantığı

(C) Denetimli öğrenme

(D) Derin öğrenme

Cevap-2 :

Denetimli öğrenme

Soru-3 :

Makine öğrenme süreci genel olarak kaç adımdan oluşur?

(Ç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

(B) Özellik indirgeme

(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)

(A) Model kurma

(B) Veri toplama

(C) Tahminde bulunma

(D) Algoritma geliştirme

Cevap-5 :

Algoritma geliştirme

Soru-6 :

Makine Öğrenimi (ML) aşağıda verilen ifadelerden hangisi doğru değildir?

(Çoktan Seçmeli)

(A) Makine Öğrenimi (ML), bilgisayar bilimi alanıdır

(B) ML, bir algoritma veya yöntem kullanarak ham verilerden kalıpları çıkaran bir yapay zeka türüdür.

(C) Makine öğreniminde sadece denetimli algoritmalar kullanılı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 :

Makine öğreniminde sadece denetimli algoritmalar kullanılır.

Soru-7 :

Aşağıda verilen resimdeki sonucu veren algoritma türü ne olmalıdır?

(Çoktan Seçmeli)

(A) denetimli

(B) denetimsiz

(C) Modellemi

(D) Pekiştirmeli

Cevap-7 :

denetimsiz

Soru-8 :

Aşağıda verilen resimdeki sonucu veren algoritma türü ne olmalıdır?

(Ç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)

(A) Makine öğrenimi, akıllı makineleri programlamanın alternatif bir yoludur.

(B) Makine öğrenimi ve yapay zekanın çok farklı hedefleri var.

(C) Makine öğrenimi, bir veri kümesini yazılıma dönüştüren bir dizi tekniktir.

(D) AI, insan zihnini taklit edebilen bir yazılımdır.

Cevap-9 :

AI, insan zihnini taklit edebilen bir yazılımdır.

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?

∙ Basit liner regresyon modelinin katsayıları nasıl bulunur?

∙ Çalışma sayfasına aktarılan bir veri setinin bağımlı ve bağımsız özellikleri nasıl belirlenir?

∙ Eğitim ve test verisi nasıl elde edilir?

∙ Model nasıl eğitilir?

∙ Tahmin işlemi nasıl yapılır?

∙ Tahminin başarımı için hangi ölçütler kullanılır?

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.

12.1. Basit Doğrusal Regresyon


Tahmine dayalı analiz ve çıkarımlar yapmak için basit doğrusal regresyon kullanılır. Bu regresyon modelinde bir
bağımlı ve bir bağımsız değişken vardır. Modellemede neden ve sonuç olduğu zaman, regresyon analizine
gideriz. Faktör analizi tekniklerini kullandığımızda gerçek zamanlı analizde performans daha doğrudur.
Regresyon analizinin temelleri denetimli makine öğreniminde kullanılır. Burada dikkat edilmesi gereken üç
önemli nokta vardı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.

• Modellemeden sonra çalışma saati ile başarı arasında tahminlerde bulunabiliriz.


[1]
Doğrusal tahminler elde etmek için matematiksel bilgilere ihtiyacımız var . Dolayısıyla, doğrusal bir denklem
kurabilmek için doğrusal çizginin özelliklerini çıkarmamız gerekir. Genel olarak doğrusal bir çizginin denklemi
matematiksel olarak aşağıdaki şekilde ifade edilir:

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.

Görsel 1. Gerekli kütüphanelerin yüklenmesi

12.1.1. Veri Setinin Yüklenmesi


[2]
İlk olarak Pandas kütüphanesinden yararlanarak ve read_csv() yöntemini kullanarak veri setimizi ilgili
dizinden okuyoruz. Daha sonra veri setimizin ilk beş satırını head() yöntemi ile ekrana görüntülüyoruz. shape()
metodu ile de verimizin kaç satır ve sütundan oluştuğu bilgisini alıyoruz (Görsel 2).

about:blank 137/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Görsel 2. Veri setinin çalışma sayfasına aktarılması

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).

Görsel 3. Sütun adlarının değiştirilmesi

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

Görsel 4. Verinin grafiksel görünümü

[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:

Görsel 5. Bağımlı, bağımsız değişken, eğitim ve test verisinin oluşturulması

12.1.3. Algoritmanın Eğitilmesi


Bu adım da ilk olarak bir doğrusal regresyon nesnesi oluşturulacak. Daha sonra bu nesneyi eğitim setimize
uydurmak ve tahmin etmeye başlamak için eğitilecektir. Aşağıda verilen ekran görüntüsünde doğrusal regresyon
nesnesi oluşturuldu. Bu nesnenin arkasındaki matematik bilgisini detaylı olarak bilmemize gerek yoktur. Zira
sklearn kütüphanesi bu algoritmanın arkasındaki gerekli matematik eylemleri bizim adımıza gerçekleştiriyor.

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

Görsel 6. Regresyon nesnesinin oluşturulması ve verinin eğitilmesi

12.1.4. Modelin Katsayı Değerlerinin Hesaplanması

Görsel 7. Denklem katsayılarının elde edilmesi

Bu katsayıları yerine koyduğumuzda eğitilmiş modelimizin matematiksel denklemi


aşağıdaki biçimde elde edilmiş olur.

12.1.5. Tahminde Bulunma İşlemi

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).

Görsel 8. Gerçek değer ve elde edilen tahmini değerler

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örsel 9. Eğitim verisinin modele uyumu

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

Görsel 10. Test verisinin modele uyumu

12.1.6. Modelin Değerlendirilmesi


[4]
Makine öğrenmesi algoritmalarının başarımın değerlendirilmesinde bazı değerlendirme ölçütleri vardır . Bu
bölümde bu ölçütlerin matematiksel formülasyonlarına girmeden direkt olarak kısa açıklamaları ve daha sonra bu
ölçütlerin kurulan modelden elde edilen sonuçları verilecektir.

Ortalama Mutlak Hata (Mean Absolute Error -MAE)

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 Hata (Mean Squared Error -MSE)

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.

Ortalama Kare Hata Karekökü (Root Mean Squared Error -RMSE)

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ı-Coefficient of Determination (R Squared)¶

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):

Görsel 11. Test verisinin modele uyumu

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.

∙ Makine öğrenmesi algoritmalarının başarılarının değerlendirilmesinde kullandıkları değerlendirme ölçütleri


şunlardır: ortalama mutlak hata, ortalama kare hata, ortalama kare hata karekökü, belirleme katsayısı.

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

Neyran Orhunbilge, “İşletme İstatistiğinin Temelleri, 2013, Nobel Yayınevi

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 :

Makine öğrenme süreci genel olarak kaç adımdan oluşur?

(Çoktan Seçmeli)

(A) 3

(B) 7

(C) 5

(D) 6

Cevap-3 :

Soru-4 :

Regresyon analizinde tahmin edilen değişken,

(Çoktan Seçmeli)

(A) yanıt veya bağımlı değişken

(B) bağımsız değişken

(C) Ara değişken

(D) genellikle x

Cevap-4 :

yanıt veya bağımlı değişken

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)

(A) Kilogram cinsinden olamaz

(B) Alan biriminde olmalıdır.

(C) Kilogram cinsinden olmalıdır

(D) Herhangi bir birim olabilir

Cevap-5 :

Kilogram cinsinden olmalıdır

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)

(A) doğrunun eğimini belirtir

(B) y eksenini kestiği noktayı belirtir

(C) Sabit olan katsayıyı ifade eder

(D) x eksesnini kestiği noktayı belirtir..

Cevap-7 :

y eksenini kestiği noktayı belirtir

Soru-8 :

Basit bir doğrusal regresyon analizi neyi inceler?

(Çoktan Seçmeli)

(A) Sadece iki değişken ya da birçok değişken arasındaki ilişkiyi

about:blank 145/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(B) Bir bağımlı ve bir bağımsız değişken arasındaki ilişkiyi

(C) Sadece bağımlı değişkenler arasındaki ilişkiyi

(D) İki bağımlı ve bir bağımsız değişken arasındaki ilişkiyi

Cevap-8 :

Sadece iki değişken ya da birçok değişken arasındaki ilişkiyi

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)

(A) Dağılım grafiği

(B) Bar grafiği

(C) Histogram grafiği

(D) Pasta dilimi grafiği

Cevap-9 :

Dağılım grafiği

Soru-10 :

Korelasyon katsayısı için aşağıda verilen ifadelerden hangisi doğrudur?

(Ç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.

(C) x ve y değişkenleri arasındaki ilişkinin gücünün bir değerini belirtir.

(D) y ekseni ile x ekseni arasındaki eğim değerini belirtir.

Cevap-10 :

x ve y değişkenleri arasındaki ilişkinin gücünün bir değerini belirtir.

about:blank 146/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

13. SINIFLANDIRMA
Birlikte Düşünelim
∙ Logistik regresyon nedir?

∙ Lojistik regresyonun basit liner regresyon modelinden farkı nedir?

∙ Lojistik regresyon modelinin çıktı fonksiyonu nedir?

∙ Çalışma sayfasına aktarılan bir veri setinin bağımlı ve bağımsız özellikleri nasıl belirlenir?

∙ Eğitim ve test verisi nasıl elde edilir?

∙ Lojistik regresyon modeli nasıl eğitilir?

∙ Logistik regresyon ile sınıflama işlemi nasıl yapılır?

∙ Lojistik regresyonun başarımı için hangi ölçütler kullanılır?

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.

13.1. Lojistik Regresyon


Sınıflandırma teknikleri, makine öğrenimi uygulamalarının önemli bir parçasıdır. Veri Bilimindeki problemlerin
[1]
yaklaşık %70'i sınıflandırma problemleridir . Mevcut birçok sınıflandırma problemi vardır. Lojistik Regresyon,
iki sınıflı sınıflandırma için en basit ve yaygın olarak kullanılan Makine Öğrenimi algoritmalarından biridir.
Uygulanması kolaydır ve herhangi bir ikili sınıflandırma problemi için temel olarak kullanılabilir. Lojistik
regresyon, bir bağımlı ikili değişken ile bağımsız değişkenler arasındaki ilişkiyi tanımlar ve tahmin eder.

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

Görsel 1. Liner ve lojistik regresyon

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.

Görsel 2. Sigmoid fonksiyonun grafiksel şekli

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 .

Gerekli Kütüphanelerin Yüklenmesi

İ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).

Görsel 3. Sigmoid fonksiyonun grafiksel şekli

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.

Görsel 4. Veri setinin yüklenmesi

Ö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):

Görsel 5. Özelliklerin seçilmesi

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).

Görsel 6. Eğitim ve test verisinin ayrıştırılması

Modelin Oluşturulması ve Eğitilmesi

İ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).

Görsel 7. Eğitim ve test verisinin ayrıştırılması

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.

Görsel 8. Tahmin sınıfları

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:

doğruluk =doğru_tahminler /toplam_tahminler

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).

Görsel 9. Tahmin sınıfları

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:

Görsel 10. Karmaşıklık matrisinin çıktı değerleri

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:

Görsel 11. Karmaşıklık matrisinin grafiksel gösterimi

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.

Lojistik regresyonun avantajları

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 regresyonun dezavantajları

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

Neyran Orhunbilge (Editör), “İşletme İstatistiğinin Temelleri, 2013, Nobel Yayınevi

Sinan Uğuz, “Makine Öğrenmesi”, 2019, Nobel Yayınevi

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 :

Lojistik regresyon modeli tahmin işleminde aşağıdaki yöntemlerden hangisini kullanır?

(Çoktan Seçmeli)

(A) Sıradan en küçük kareler

(B) Maksimum olasılık tahmini

(C) Poisson Dağılımı

(D) Negatif binom dağılımı

Cevap-1 :

Maksimum olasılık tahmini

Soru-2 :

İkili sınıflama problemlerinde hangi algoritma kullanılır?

(Çoktan Seçmeli)

(A) Lineer regresyon

(B) Kümeleme

(C) Lojistik regresyon

(D) Poisson Dağılımı

Cevap-2 :

Lojistik regresyon

Soru-3 :

Aşağıda adları verilen fonksiyonlardan hangisi lojistik regresyon için kullanılır.

(Ç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)

(A) Yaygın kullanılan makine öğrenme algoritmasıdır.

(B) İkili sınıflandırma problemlerinde kullanılır.

(C) Denetimsiz bir sınıflandırma algortimasıdır.

(D) Özellikler ve sonuçlar arasındaki ilişkilerin olasılıklarını tahmin eder.

Cevap-8 :

Denetimsiz bir sınıflandırma algortimasıdır.

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)

(A) Karışıklık matrisi

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 :

Oluşturulan lojistik regresyon modelini eğitmek için hangi komut kullanılır?

(Ç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?

∙ En uygun küme sayısını belirlemek için hangi yöntem kullanılır?

∙ Oluşturulan kümelerin grafikleri nasıl çizilir?

∙ Grafikler üzerinde kümelerin, küme merkezleri nasıl işaretlenir?

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.

14.1. Kümeleme Algoritması


K-means (K-ortalama) kümeleme, veri örnekleri arasındaki benzerliğe dayalı olarak veri kümeleri oluşturan en
yaygın kullanılan denetimsiz makine öğrenimi algoritmalarından biridir. Bu algoritmanın çalışması için, küme
sayısının önceden tanımlanması ya da belirlenmesi gerekir. K-ortalamasındaki K, harfi oluşturulacak küme
sayısını ifade eder.

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">

Görsel 1. Oklit mesafesi hesaplama

(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

(iii) Karşılık gelen kümedeki tüm veri örneklerinin


koordinatlarının ortalama değerlerine dayalı olarak
yeni ağırlık merkezi değerlerini hesaplar.

14.1.1. Algoritmanın Çalışma Mantığı


Algoritmayı Python’un Scikit-Learn kütüphanesini kullanarak uygulamadan önce bir örnek yardımıyla K-
ortalama algoritmasının nasıl çalıştığını anlamakta fayda var. Algoritmanın, gerçekte nasıl çalıştığını anlamak
[1]
için elle çalıştırarak küçük bir kümeleme problemini çözelim .

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:

Tablo 1. Başlangıç Tablosu

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

koordinatlarının ortalamasını belirleyerek hesaplanabilir:

c2(x) = (10 + 15 + 24 + 30 + 85 + 71 + 60 + 55 + 80) / 9 = 47.77

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:

c2(y) = (15 + 12 + 10 + 45 + 70 + 80 + 78 + 52 + 91) / 9 = 50.33

c2 için güncellenmiş merkezi değeri artık {47.77, 50.33} olacaktır.

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

Tablo 2. İkinci İterasyon Sonucu

c1(x) = (5, 10,


15, 24) / 4 =
13.5

c1(y) = (3, 15,


12, 10) / 4 =
10.0

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

C2 (63.5, 69.33) olarak güncellendi.

İterasyon-3

Tablo 3. Üçüncü İterasyon Sonucu

c1(x) = (5, 10, 15, 24, 30) / 5 = 16.8

c1(y) = (3, 15, 12, 10, 45) / 5 = 17.0

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 (Tablo 3).

İterasyon-4

Tablo 4. Kümeler Belirlenmiş Sonuç Tablosu

about:blank 160/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

c1(x) = (5, 10,


15, 24, 30) / 5
= 16.8

c1(y) = (3, 15,


12, 10, 45) / 5
= 17.0

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.

14.1.2. Scikit-Learn Kütüphanesi ile Kümeleme Örneği


K-ortalama kümeleme algoritmasının gerçekte nasıl çalıştığını anladıktan sonra göre, Scikit-Learn kütüphanesi
kullanılarak aşağıda yapılan örneğin işlemleri sırası ile açıklandı.

Gerekli Kütüphanelerin Yüklenmesi

Ö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:

Görsel 2. Gerekli kütüphanelerin yüklenmesi

about:blank 161/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

Veri Setinin Yüklenmesi


[2]
Bu aşamada kümelemede kullanılacak veri seti çalışma ekranına aktarılması gerekir. Bu örneğimizde iris veri
kümesi kullanılacaktır. Bu veri seti internetten indirilerek bilgisayarda herhangi bir dizin içine kaydedilir.
Aşağıda verilen ekran görüntüsünde (Görsel 3) iris veri seti read_csv() fonksiyonu ile AUZEFVERI dizininden
okunması ve ilk 10 satırın head() komutu ile ekrana yansıtılmasının kodları verilmiştir:

Görsel 3. Veri setinin yüklenmesi

Veri Özelliklerinin Seçilmesi

Ş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:

Görsel 4. Özelliklerin seçimi

Modelin Kurulması ve Kümelerin Oluşturulması

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. Modele bağlı kümeler ve oluşan küme merkezleri

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.

Oluşan Kümelerin Görselleştirilmesi

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

Görsel 6. Oluşan kümeler ve merkezleri

14.1.3. Dirsek (Elbow) Yöntemi ile Küme Sayısını Belirleme


Herhangi bir denetimsiz algoritma için temel adım, verilerin kümelenebileceği en uygun (optimum) küme
sayısını belirlemektir. Dirsek Yöntemi, bu en uygun k değerini belirlemek için kullanılan en popüler
yöntemlerden biridir. Bu bölümde Python'un Sklearn kitaplığını kullanarak K-means kümeleme algoritması için
en uygun olan k sayısının elde edilmesi açıklanmıştır. Dirsek yöntemini uygulamak için, aşağıdaki Python
[3]
kodu yazılarak küme sayısı ile hata (burulma) değeri arasındaki grafik çizilir (Görsel 7):

Görsel 7. Dirsek yöntemi kodu

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.

Yeni Kümelerin Oluşturulması

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:

Görsel 8. Dirsek yöntemi kodu

Yeni Kümelerin ve Merkezlerinin Görselleştirilmesi

Üç 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

Görsel 9. k=3 sayısına göre oluşan kümeler ve merkezleri

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.

∙ K-means algoritmasının çalışma prensibi şu şekildedir:

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ı

ARKA KAPAK YAZISI

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.

Kitapta aşağıdaki konular ele alınmıştır:

∙ Veri Bilimi için Temel Kavramlar

∙ Veri Bilimi için Python Programlamasına Giriş (Kurulumlar ve Jupyter Notebook)

∙ Python’a Özgü Veri Yapıları

∙ Python’da Kontrol Yapıları

∙ Python için Veri Analizi Araçları

∙ İstatistiksel Analiz

∙ Makine Öğrenimi (Denetimli Öğrenme, Denetimsiz Öğrenme)

∙ Regresyon

∙ Sınıflandırma

∙ Kümeleme

Kitabın okuyuculara faydalı olmasını dilerim.

Doç. Dr. Numan ÇELEBİ

[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 :

Kümeleme algoritmaları hangi öğrenme grubuna girer?

(Ç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 :

Kümeleme analizi için aşağıda verilen ifadelerden hangisi doğru değildir?

(Çoktan Seçmeli)

(A) Verileri özelliklerine göre gruplayan bir tekniktir.

(B) Denetimli algoritmalara göre daha başarılıdır.

(C) Küme sayıları rasgele olarak ya da bir yöntem kullanılarak belirlenebilir.

(D) Veri ile küme merkezi arasındaki mesafe için öklit uzaklığı kullanılır.

Cevap-2 :

Denetimli algoritmalara göre daha başarılıdır.

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

(D) Denetimli öğrenme

Cevap-3 :

Dirsek

Soru-4 :

K-means algoritması, kümeleri oluşturmayı veya optimize etmeyi ne zaman durdurur?

(Çoktan Seçmeli)

(A) Veri noktalarının yeniden atanmadığını bulduktan sonra

about:blank 167/169
18.03.2024 23:24 Ders : Veri Bilimi - eKitap

(B) Algoritma tanımlanan yineleme sayısına ulaştıktan sonra

(C) Küme sayısı veri sayısına ulaştıktan sonra

(D) Beş küme oluştuktan sonra


Cevap-4 :

Veri noktalarının yeniden atanmadığını bulduktan sonra

Soru-5 :

Kümeleme algoritması ile oluşturulan kümeleri görüntülek için hangi grafik kullanılır?

(Çoktan Seçmeli)

(A) bar grafiği

(B) histogram grafiği

(C) scatter (dağıtık) grafiği

(D) çizgi grafiği

Cevap-5 :

scatter (dağıtık) grafiği

Soru-6 :

Kümeleme algoritmasını çalıştırmak için hangi Python kütüphanesi yüklenmesi gerekir?

(Çoktan Seçmeli)

(A) sklearn

(B) pandas

(C) matplotlib

(D) numpy

Cevap-6 :

sklearn

Soru-7 :

Küme merkezlerini belirlemek için hangi komut kullanılır?

(Ç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 :

Kümeleme işlemi için aşağıda verilen ifadelerden hangisine gerek yoktur?

(Çoktan Seçmeli)

(A) Kategorik veriler

(B) Etiketsiz veriler

(C) Sayısal veriler

(D) Etiketli veriler

Cevap-8 :

Etiketli veriler

Soru-9 :

K-means algoritmasında k harfi neyi ifade eder?

(Çoktan Seçmeli)

(A) Kümelenecek verilerin sayısı

(B) Giriş özelliklerinin sayısı

(C) Küme sayısı

(D) İterasyon sayısı

Cevap-9 :

Kümelenecek verilerin sayısı

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

You might also like