Benzetimli Tavlama (Simulated Annealing) Algoritması

BENZETİMLİ TAVLAMA ALGORİTMASI

Herkese merhabalar, optimize kelimesi aslında günlük hayatta çok sık karşımıza çıkan bir kelimedir. Takdir edersiniz ki optimizasyon kelimesi aslında bir olayın, problemin veya bir durumun içerisindeki olasılıklardan mümkün olan en iyiyi seçmesi durumudur 📈.

Genel bir minimum noktası bulmak amacı ile problemin farklı zamanlarındaki sonuçlarını elde ederek bu sonuçlardan iyi olan değere doğru hareket edip birden fazla çözümü test ederek en iyi sonucu bulmaya yardımcı olan yöntem olan Simulated Annealing (Benzetimli Tavlama) yöntemi de bir optimizasyon problemi çözüm yöntemidir [1].

🔎Simulated Annealing Algoritması Hakkında

Benzetimli tavlama (Simulated Annealing) yöntemi, ayrık ve daha az ölçüdeki sürekli optimizasyon problemlerini ele almak için kullanılan popüler bir metasezgisel yerel arama yöntemidir.

Benzetimli tavlama algoritmasının temel özelliği, küresel bir optimum bulma umudu ile tepe tırmanma hareketlerine (amaç fonksiyon değerini kötüleştiren hareketlere) izin vererek yerel optimumdan kaçma aracı sağlamasıdır [2].

Algoritmaya tavlama ismi verilmesinin sebebi, demircilerin demiri döverken belirli bir dereceye kadar ısıl işlemden geçirmesi sonucu demirin istenilen kıvama gelmesini esas almasından kaynaklanmaktadır. Aynı mantık ile bir problem ele alınarak tavlama derecesi ile ısıtma sürecinden geçiriliyor ve ardından istenilen noktaya geldiğinde sonuca ulaştığı kabul ediliyor. (Local Objective Function)  

Simulated Annealing
                                                          Demirin ısıl işlemden geçirilerek tavlanması [3]

Amaç fonksiyonunda Δ kadar bir yükselmeye yol açan hareketin kabul edilme olasılığını veren fonksiyon kabul (accept) fonksiyonu olarak adlandırılır [4].Probability Formula

                                                                      Değerler arasında swap değişim yöntemi

Table1

İterasyon çıktılarındaki ilk çözüm ve elde edilen en iyi çözüm değerleri ise sırasıyla aşağıda gösterilmektedir. Optimum değerleri ulaşmayı hedefleyerek 10 iterasyon boyunca ilk çözüm ve son çözüm değerlerini elde edeceğiz.

First Five İteration

                                                                              Objective değerler tablosu

Visual                                                                         Objective değerlerin grafikselleştirilmesi

Örneğin 5.iterasyon çalıştırılırken değer değişimlerini gözlemlemek amacı ile hesaplama sırasında farklı zamanlarda alınan sonuçlar aşağıda gösterilmiştir. Böylelikle swap işlemi mantığını ve bu süreçteki enerji değişimleri (ΔE) gözle görülebilmektedir.

Table3

                                                         Swap işlemi devam ederken enerji değerlerinin gösterilmesi

Table4                                                     5 ve 102 nolu bağdaki hesaplamaya bağlı result değerleri

Table5

                                                           113 ve 127 bağındaki hesaplamaya bağlı olarak result değerleri

🔎 2-OPT ALGORİTMASININ SA ÜZERİNDE UYGULANMASI

2-opt algoritması, GSP problemlerinin çözümüne yönelik, muhtemelen en temel ve çok geniş kullanım alanına sahip bir algoritmadır [6]. Temel olarak tur içerisindeki iki kenarın silinmesi ve iki parçaya ayrılan turun maliyetleri düşürecek şekilde, farklı olarak bağlanması şeklinde tanımlanabilir (Gutin ve Punnen, 2002).

✔️Benzetimli tavlamanın swap yönteminde iki değer birbiri ile kontrol edilmekte ve olasılık değerine göre hafızaya alınmaktadır. Fakat tüm işlemler sırası ile yapılacağından çalışma zamanı açısından çok verimli olmayacaktır.

✔️2opt algoritması ile örneğin tour olarak adlandırılan indis değerlerinde (initial_p) 4. düğümden sonra 17. düğüme geçiş yapmakta olduğu görülmektedir. 2opt algoritması devreye 4 ve 5. düğümler arasındaki bağı kırıp d ile 17 düğümleri arasındaki bağı oluşturmakta girer. Böylelikle çalışma zamanı daha verimli sonuçlar üretir.      

                                                     Tour bağlantısındaki farklı değerlerin bağlanması

two_opt_python fonksiyonunda şehirlerdeki indis değerleri 2 artırımlı olarak kontrol edilerek değişimi vermektedir. Tour üzerindeki yolda herhangi bir değişim yaşandıysa bu değişim tour değişkenine atanmaktadır. dist( ) fonksiyonu sonucunda iki şehir arasındaki ( 4-17 gibi) Öklid uzaklığı hesaplatılarak tour içerisindeki koordinatlar döndürülmektedir. Bu sayede en iyi çözüm üzerinde iyileştirme sağlanmaktadır ⭐

REFERANSLAR

[1] Sadi Evren Şeker, Bilgisayar Kavramları, “Simulated Annealing (Benzetilmiş Tavlama)”, http://bilgisayarkavramlari.sadievrenseker.com/2009/11/23/simulated-annealing-benzetilmis-tavlama/ adresinden alınmıştır.

 [2] Darrall Henderson, Sheldon H Jacobson, Alan W. Johnson, The Theory and Practice of Simulated Annealing, April 2006.          

 [3] Orhan Baylan, “ISIL İŞLEM NEDİR? ÇELİĞE NİÇİN ISIL İŞLEM YAPILIR?”, https://www.metaluzmani.com/isil-islem-nedir-celige-nicin-isil-islem-yapilir/ adresinden alınmıştır.     

 [4] Tavlama Benzetimi Algoritması (Simulated Annealing), BMÜ-579 Benzetim ve Modelleme, Yrd. Doç. Dr. İlhan AYDIN.

[5] Hefei University, Thomas Weise, Metaheuristic Optimization, 7. Simulated Annealing.

[6] Timur KESKİNTÜRK, Barış KİREMİTCİ, Serap KİREMİTCİ, 2-OPT Algoritması ve Başlangıç Çözümünün Algoritma Sonuçları Üzerindeki Etkisi, 2016.

                                                                                              Olasılık formülü

Sıcaklık yüksek olduğunda, amaç fonksiyonunda artışa neden olabilecek hareketlerin kabul edilme olasılığı çok yüksek olacak, sıcaklık düştükçe bu olasılık da azalacaktır. Bu sebeple, aramaya yeteri kadar yüksek bir sıcaklık değeri ile başlamak gereklidir [4]. Ben çalıştığım projede kullanılacak başlangıç sıcaklık değerini T= 100000 olarak belirledim 🌡️.

Algoritmada, sıcaklık yavaş yavaş azaltılırken her sıcaklık değerinde belli sayıda hareket deneyerek arama işlemi sürdürülmektedir [4].

Algoritmanın Akış Şeması 🖋️Flowchart

                                                   Benzetimli Tavlama Algoritması Akış Diyagramı

Algoritmanın Çalışma Prensibi 🔨

Benzetimli algoritmanın çalışma mantığında en önemli işlem, sıcaklığın zamanla soğutulması gerektiğidir. Çünkü başlangıç sıcaklığı zamanla azalmazsa enerji sürekli yüksek kalacak ve yüksek orandaki entropi ile tüm ağacın aranması sağlanacaktır, bu istenmeyen bir durumdur.

Algoritmada soğuma işlemi gerçekleştirilene kadar her çözümde enerji seviyeleri karşılaştırılır. Enerji değişimi hesaplanmasında pos’ olarak olası bir yapılandırmadan mevcut yapılandırma farkından faydalanılır [5].

Solution1                                                                  Enerji değişimi hesaplanması [5]

Daha sonra kabul edilecek pozisyonun hesaplanması için Şekil 4’ de görüldüğü gibi bir hesaplama olasılığı sunulmuştur. Boltzmann sabiti olan k değeri göz ardı edilerek denklem sadeleştirilmiştir. Bu sayede yeni aday çözümün hesaplanmasına imkân sunulmuştur.

                                                               Yeni aday çözümün olasılık hesabı [5]

Bu durumlarda T sıcaklığı ise yinelenen belirli bir aralıkta sıcaklığını azaltmaya devam etmektedir. Bu projede kullanılan veri seti ‘gr137.tsp’ olarak seçilmiştir.

Bu veri seti TSP alt yapısı ile çalışmakta ve gezgin satıcı problemlerini baz almaktadır. Bu veri seti Amerika alt yapısındaki 666 tane şehir problemi için bilgi içermekte ve içerik boyutunda 137 tane X ve Y koordinatları verilmektedir.

Benzetimli tavlama yönteminde çalıştırılan düğümleri öncelikle swap yöntemi ile değiştirerek karşılaştıracağız ve en iyi sonucu elde etmeye çalışacağız 👩🏻‍🏫

Amaç fonksiyonu olarak gösterilen Objective Function ’da karşılaştırılacak düğümlerin mesafelerini aşağıdaki gibi hesaplayacağız. Burada hesaplanacak mesafeyi ise öklid mesafesi olarak alacağız 📏

Optimizasyon algoritmalarında çok sık kullanılan bir dil olan Python dilinde kodlamaya devam edeceğiz. Haydi birlikte amaç fonksiyonunu öklid mesafesi baz alarak yazalım 👍

Objective Function                                                              Amaç fonksiyonu mesafe hesaplanması

Swap Yöntemi ile Hesaplama 🧮

Şekil 8’ de görüldüğü üzere N ile gösterilen değer koordinatların boyutunu ifade etmektedir. N boyutunda rastgele değerler üreterek swap1 ve swap2 değişkenlerine atayacağız. 

Kontrol edilecek iki değer birbiri ile aynı ise yeni olasılık değeri oluşturmak üzere swap2 olasılığı yeniden değer oluşturacak demektir. Bu veri setinde p ile ifade edilen değer bir bakıma Id sütununa denk gelmektedir. 

Üzerinde değişiklik yapılmaması için copy( ) fonksiyonu ile değerler kopyalanmaktadır. Her aşamada enerji hesaplaması yapılmasının sebebi, Simulated Annealing algoritma mantığındaki sıcaklık ( temperature ) değerinin belirli bir değere kadar ısıtılması ve sonra cooling factor denilen soğuma faktörü ile belirli bir seviyeye kadar soğutulması gerektiğinden kaynaklanmaktadır.

Benzetimli tavlama örneğindeki ısınma sürecinde içerisindeki partiküllerin hareketliliğinden dolayı enerji yükselmesi olacaktır ve enerji hesabı her süreçte yapılarak yüksek enerjiye sahip olup olmadığı kontrol edilmek istenmektedir ⚡

Swap method

                                                                        Swap yöntemi ile hesaplama

Algoritmada kullanılan bu yöntemde sıra ile (order) işlem yapılmakta olduğundan rastgele değerler üzerinde hesaplama yöntemine gidemez böylelikle doğru sonuçlara diğer arama operatörlerinin kullanımı ile gidilmesi zaman açısından da çok önem arz etmektedir.Swap Changing

                                                                      Değerler arasında swap değişim yöntemi

Table1

İterasyon çıktılarındaki ilk çözüm ve elde edilen en iyi çözüm değerleri ise sırasıyla aşağıda gösterilmektedir. Optimum değerleri ulaşmayı hedefleyerek 10 iterasyon boyunca ilk çözüm ve son çözüm değerlerini elde edeceğiz.

First Five İteration

                                                                              Objective değerler tablosu

Visual                                                                         Objective değerlerin grafikselleştirilmesi

Örneğin 5.iterasyon çalıştırılırken değer değişimlerini gözlemlemek amacı ile hesaplama sırasında farklı zamanlarda alınan sonuçlar aşağıda gösterilmiştir. Böylelikle swap işlemi mantığını ve bu süreçteki enerji değişimleri (ΔE) gözle görülebilmektedir.

Table3

                                                         Swap işlemi devam ederken enerji değerlerinin gösterilmesi

Table4                                                     5 ve 102 nolu bağdaki hesaplamaya bağlı result değerleri

Table5

                                                           113 ve 127 bağındaki hesaplamaya bağlı olarak result değerleri

🔎 2-OPT ALGORİTMASININ SA ÜZERİNDE UYGULANMASI

2-opt algoritması, GSP problemlerinin çözümüne yönelik, muhtemelen en temel ve çok geniş kullanım alanına sahip bir algoritmadır [6]. Temel olarak tur içerisindeki iki kenarın silinmesi ve iki parçaya ayrılan turun maliyetleri düşürecek şekilde, farklı olarak bağlanması şeklinde tanımlanabilir (Gutin ve Punnen, 2002).

✔️Benzetimli tavlamanın swap yönteminde iki değer birbiri ile kontrol edilmekte ve olasılık değerine göre hafızaya alınmaktadır. Fakat tüm işlemler sırası ile yapılacağından çalışma zamanı açısından çok verimli olmayacaktır.

✔️2opt algoritması ile örneğin tour olarak adlandırılan indis değerlerinde (initial_p) 4. düğümden sonra 17. düğüme geçiş yapmakta olduğu görülmektedir. 2opt algoritması devreye 4 ve 5. düğümler arasındaki bağı kırıp d ile 17 düğümleri arasındaki bağı oluşturmakta girer. Böylelikle çalışma zamanı daha verimli sonuçlar üretir.      

                                                     Tour bağlantısındaki farklı değerlerin bağlanması

two_opt_python fonksiyonunda şehirlerdeki indis değerleri 2 artırımlı olarak kontrol edilerek değişimi vermektedir. Tour üzerindeki yolda herhangi bir değişim yaşandıysa bu değişim tour değişkenine atanmaktadır. dist( ) fonksiyonu sonucunda iki şehir arasındaki ( 4-17 gibi) Öklid uzaklığı hesaplatılarak tour içerisindeki koordinatlar döndürülmektedir. Bu sayede en iyi çözüm üzerinde iyileştirme sağlanmaktadır ⭐

REFERANSLAR

[1] Sadi Evren Şeker, Bilgisayar Kavramları, “Simulated Annealing (Benzetilmiş Tavlama)”, http://bilgisayarkavramlari.sadievrenseker.com/2009/11/23/simulated-annealing-benzetilmis-tavlama/ adresinden alınmıştır.

 [2] Darrall Henderson, Sheldon H Jacobson, Alan W. Johnson, The Theory and Practice of Simulated Annealing, April 2006.          

 [3] Orhan Baylan, “ISIL İŞLEM NEDİR? ÇELİĞE NİÇİN ISIL İŞLEM YAPILIR?”, https://www.metaluzmani.com/isil-islem-nedir-celige-nicin-isil-islem-yapilir/ adresinden alınmıştır.     

 [4] Tavlama Benzetimi Algoritması (Simulated Annealing), BMÜ-579 Benzetim ve Modelleme, Yrd. Doç. Dr. İlhan AYDIN.

[5] Hefei University, Thomas Weise, Metaheuristic Optimization, 7. Simulated Annealing.

[6] Timur KESKİNTÜRK, Barış KİREMİTCİ, Serap KİREMİTCİ, 2-OPT Algoritması ve Başlangıç Çözümünün Algoritma Sonuçları Üzerindeki Etkisi, 2016.

Python Data Science Libraries 2 – Numpy Methodology

One of the most important and fundamental libraries in Python is undoubtedly the numpy library. In the continuation of this series, I will first continue with numpy from the pandas library now. In general, its functional structure with library-based features is based on a more robust infrastructure than other libraries. Therefore, it can perform the mathematical operations to be done quickly and in a healthy way. Its expansion is already known as Numerical (num) python (py) in python. As it can be understood from here, it is a library with strong mathematical aspect and possible to reach desired results quickly and easily. It is one of the indispensable building block libraries in Machine Learning and Deep Learning. Basically, it plays a role in the background of every transaction. What is mentioned here is the matrices in the form of arrays and the operations between them according to their states, the calculation of their outputs and the use of matrices in the basis of the work done as a project is the most necessary condition. Although we often see this frequently in Image Processing operations, people who will work in this field must have numpy knowledge in their transactions.

 

This library, which is used as a whole, offers you mathematical structures suitable for the models you will use. In this way, descriptive explanations of your transactions will also make more sense. As I mentioned in the upper paragraph, matrix operations are the most important event in mathematics. This spreads to the whole of the transactions you are currently doing and numpy provides you convenience in layer-based transaction processes. When we actively process images, we can see the most important layer operations visibly. Even if the OpenCV library carries the necessary load during the operations, operations that are not done through the array structure of any numpy library will not be sustainable. The numpy library is an indispensable value of these works, as there will be matrices and products of matrices behind many operations. It is a fully user-friendly library in line with the possibilities of its functional structure. It is among the top 5 most useful libraries among Python libraries, according to tests conducted by people working in this field worldwide. Usage areas are increasing in direct proportion to this.

 

Deep learning and Machine Learning topics do not only mean writing long lines of code contrary to popular belief. For this reason, most of the people start writing code or even making a career in this field without knowing the events that are going on in their background. Behind these events lies an extensive knowledge of mathematics and statistics, the best example of which is Image Processing. Because on the back of it is all mathematics, these operations are matrices and there are numpy in the libraries used. This is the biggest proof that this library is active almost everywhere. There is no library in python that is multifunctional in this way. Because there are two libraries that must be found in every field. These are the numpy and pandas libraries. While these provide convenience in both processing the data and performing numerical operations on the data, they show us the differences in the data perspective. This is a proof of the importance of libraries in Python, especially libraries on data processing and data analysis.

 

 

I can clearly say that the Numpy library makes a great difference in data shaping and preparation. It has functions that we would call useful in many ways such as reshape, array, exp, std, min, sum in the numpy library. This is actually the most basic level that distinguishes it from other libraries. For those who want to reach the necessary details of this, I will leave information about them in the resources section. From here, you can use the numpy library and what kind of features you can take advantage of, or what kind of convenience you can get in numerical transactions, you can find them yourself from the cheat sheet or numpy’s own website.

 

Thank you for reading and following my articles until this time, I wish you a good day.

 

References:

-https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Numpy_Python_Cheat_Sheet.pdf

-https://numpy.org/

-https://cs231n.github.io/python-numpy-tutorial/

-https://www.w3schools.com/python/numpy_intro.asp

-http://globalaihub.com/python-veri-bilimi-kutuphaneleri-1-pandas-metodoloji/

-http://globalaihub.com/python-data-science-libraries-1-pandas-methodology/

Python Veri Bilimi Kütüphaneleri 2 – Numpy Metodoloji

Python içerisinde en önemli ve temel olarak bakılan kütüphanelerden birisi de şüphesiz numpy kütüphanesidir. Bu serinin devamında öncelikle pandas kütüphanesinden şimdi de numpy ile devam edeceğim. Genelde sahip olduğu kütüphane bazlı özelliklerde fonksiyonel yapısı, diğer kütüphanelere göre daha sağlam bir altyapıya dayanmaktadır. Bundan ötürü, yapılacak olan matematiksel işlemleri de hızlıca ve sağlıklı bir şekilde yapabilmektedir. Açılımı zaten python içerisinde Numerical (num) python (py) olarak bilinmektedir. Buradan da anlaşıldığı üzere, matematiksel yönü kuvvetli, istenen sonuçlara hızlı ve kolay şekilde ulaşması mümkün bir kütüphanedir. Makine Öğrenmesi ve Derin Öğrenme konularında vazgeçilmez yapı taşı kütüphanelerinden birisidir. Temel anlamda yapılan her işlemin arka planında kendisi rol oynar. Burada bahsedilen şey array halde bulunan matrisler ve onların durumlarına göre kendi aralarındaki işlemler, çıktılarının hesaplanması ve proje olarak yapılan iş esasında matrisleri kullanmak en gerekli koşuldur. Genellikle bunu Image Processing işlemlerinde sıkça görsek bile, bu alanda çalışacak olan kişilerin yapacağı işlemlerde numpy bilgisi mutlaka olmalıdır.

 

Başlı başına bir bütün olarak kullanılan bu kütüphane, sizlere kullanacağınız modeller için uygun matematiksel yapılar sunar. Bu sayede, yapacağınız işlemlerin betimsel anlamda açıklamaları da aynı şekilde daha mantıklı olur. Üst paragrafta da bahsettiğim gibi matris işlemleri matematik tabanında en mühim olaydır. Bu halihazırda sizin yapacak olduğunuz işlemler bütününe yayılır ve katman bazlı olarak işlem süreçlerinde numpy size kolaylık sağlar. En önemli katman işlemlerini, resimleri aktif olarak işlediğimiz zaman gözle görülebilir bir şekilde fark edebiliriz. OpenCV kütüphanesi işlemler boyunca gerekli yükü sırtlasa bile, herhangi bir numpy kütüphanesinin array yapısı aracılığı ile yapılmamış işlemler sürdürülebilir bir halde olmaz. Yapılacak birçok işlem arkasında, matrisler ve matrislerin çarpımları olacağı için numpy kütüphanesi bu işlerin vazgeçilmez değeridir. Fonksiyonel yapısının verdiği imkanlar doğrultusunda tam anlamıyla kullanıcı dostu bir kütüphanedir. Dünya çapında bu alanda çalışan kişilere yapılan testlere göre, Python kütüphaneleri içerisinde en kullanışlı ilk 5 kütüphane içerisindedir. Kullanım alanları da bununla doğru orantılı olarak artmaktadır.

 

 

Derin öğrenme ve Makine Öğrenmesi konuları, sanılanın aksine sadece uzun satırlar süren kodları yazmak demek değildir. Bu sebepten insanların çoğu, arka planında dönen olayları bilmeden kod yazmaya hatta bu alanda kariyer yapmaya başlıyorlar. Bu olayların arka tarafında yoğun bir matematik ve istatistik bilgisi yatmaktadır ki buna en iyi örnek, Image Processing işlemleridir. Çünkü arka tarafında tamamen matematik yatmaktadır ki bu işlemler matrisler ve kullanılan kütüphaneler içerisinde numpy vardır. Bu da bu kütüphanenin hemen hemen her yerde aktif görev aldığının en büyük kanıtıdır. Bu şekilde çok fonksiyonlu olan python içerisinde kütüphane yoktur. Çünkü her alanda mutlaka bulunması gereken iki kütüphane vardır. Bunlar numpy ve pandas kütüphaneleridir. Bunlar hem veriyi işleme hem veri üzerinde sayısal işlemleri yapma konusunda kolaylık sağlarken bizlere veriye bakış açısında oluşan farklılıkları gösterir. Bu da Python bünyesinde bulunan kütüphanelerin özellikle veri işleme ve veri analizleri üzerine olan kütüphanelerin ne derece mühim olduğunun bir kanıtıdır.

 

 

Numpy kütüphanesinin veri şekillendirme ve hazırlama konusunda büyük ölçüde fark yarattığını net bir şekilde söyleyebilirim. Numpy kütüphanesi içerisinde bulunan reshape, array, exp, std, min, sum gibi birçok anlamda kullanışlı diyeceğimiz fonksiyonlara sahiptir. Diğer kütüphanelerden ayırt eden en temel seviyesi aslında budur. Bunun gerekli detaylarına ulaşmak isteyenler için kaynaklar kısmında bunlara dair bilgiler bırakacağım. Buradan siz de numpy kütüphanesini kullanırken ne gibi özelliklerden faydalanabilirsiniz ya da sayısal işlemlerde ne tarz kolaylıklar yakalayabilirsiniz bunları kendiniz de cheat sheet veya numpy’ın kendine ait olan internet sitesinden bulabilirsiniz.

 

Bu zaman kadar okuduğunuz ve yazılarımı takip ettiğiniz için teşekkür eder, iyi günler dilerim.

 

References:

-https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Numpy_Python_Cheat_Sheet.pdf

-https://numpy.org/

-https://cs231n.github.io/python-numpy-tutorial/

-https://www.w3schools.com/python/numpy_intro.asp

-http://globalaihub.com/python-veri-bilimi-kutuphaneleri-1-pandas-metodoloji/

-http://globalaihub.com/python-data-science-libraries-1-pandas-methodology/

Python Data Science Libraries 1 – Pandas Methodology

I am putting the topics I have been working on into a series that I will tell you one by one. For this reason, I will explain the methodology and usage aspects of almost all libraries that I am actively working on. I’ll start with pandas, which allows functional operations such as data preprocessing without reading data first. With this library, we can easily perform data pre-processing steps, which are vital steps for data science, such as observing missing data and extracting that data from the data set. In addition, you can bypass data types and the front part of numerical or categorical operations that you will do on them. This provides us with significant convenience before proceeding. Each library in Python has its own specialties, but speaking for pandas, it is responsible for all of the pre-part modifications to the data to form the basis of the data science steps. Data classification processes in Pandas can be designed and activated quickly with a few functional codes. This is the most critical point in the data preprocessing stage, in the previous steps of data modeling.

 

 

We can store the data as “dataframe” or “series” and perform operations on it. The fact that Pandas library performs every operation on data in a functional, easy and fast way reduces the workload in data science processes on behalf of data scientists. In this way, it can handle steps such as the beginning and most difficult part of the process, such as data preprocessing, and focus on the last steps of the job. By reading data such as .csv, .xlsx, .json, .txt prepared in different types, it takes the data that has been entered or collected through data mining into python to process. Pandas library, which has the dataframe method, is more logical and even sustainable than other libraries in terms of making the data more functional and scalable. Those who will work in this field should work on the methodology of pandas library, which has the basic and robust structure of the python programming language, not to write code directly. Because new assignments on the data, column names, grouping variables, removing empty observations from the data or filling empty observations in a specific way (mean, 0 or median assignment) can be performed.

 

 

Data cannot be processed or analyzed before the Pandas library is known. To be clear, the pandas library can be called the heart of data science. Specially designed functions such as apply (), drop (), iloc (), dtypes () and sort_values ​​() are the most important features that make this library exclusive. It is an indispensable library for these operations, even if it is not based here on the basis of its original starting point. In the steps to be taken, it has a structure with tremendous features and a more basic case in terms of syntax. It is possible to host the results from the loops in clusters and convert them into dataframe or series. The acceleration of the processes provides a great advantage in functional terms if the project that will emerge has a progressing process depending on time, which is generally the case. Looking at its other possibilities, it is one of the most efficient libraries among the python libraries. The fact that it is suitable for use in many areas can be considered as a great additional feature. Pandas is among the top 3 libraries in the voting among data processing libraries made by software developers using the python programming language. You can reach this situation, which I quoted with datarequest in the sources section.

 

 

The concept of “data science”, which has been developing since 2015, has brought the pandas library to the forefront and this library, which has been developing in silence for years, has come to light. After Pandas, I will explain numpy and talk about numerical and matrix operations. In general, Pandas is a library that has high-level features in basic data analysis and data processing. In addition, if you specify the topics you will talk about and the things you want me to mention, I will draw a more solid way in terms of efficiency. I hope these articles that I will publish in series will help people who will work in this field. In the future, I will add the cheatsheet style contents that I will prepare on github to the bibliography section. If you want to take advantage of such notes, I will put my github account in the resource section, and you can easily access there.

 

 

References:

https://www.geeksforgeeks.org/python-pandas-dataframe/

https://medium.com/deep-learning-turkiye/adan-z-ye-pandas-tutoriali-ba%C5%9Flang%C4%B1%C3%A7-ve-orta-seviye-4edf0094e0d5#:~:text=Pandas%2C%20Python%20programlama%20dili%20i%C3%A7in,sonuca%20kolayca%20ula%C5%9Fmak%20i%C3%A7in%20kullan%C4%B1lmaktad%C4%B1r.

https://www.dataquest.io/blog/15-python-libraries-for-data-science/

https://github.com/tanersekmen/

https://www.edureka.co/blog/python-pandas-tutorial/

http://globalaihub.com/importance-of-data-quality-and-data-processing/

http://globalaihub.com/hareketli-ortalama-algoritmasiyla-al-sat-tavsiyeleri/

https://www.dataquest.io/course/pandas-fundamentals/Python Data Science Libraries 1 – Pandas Methodology

Python Veri Bilimi Kütüphaneleri 1 – Pandas Metodoloji

Üzerinde çalıştığım konuları, sizlere de tek tek anlatacağım bir seri haline getiriyorum. Bu sebeple, aktif olarak üzerinde çalıştığım hemen hemen tüm kütüphanelerin metodolojisini ve kullanım yönlerini anlatacağım. Önceliği veri okumadan veri ön işleme gibi fonksiyonel işlemlere izin veren pandas ile başlayacağım. Eksik verilerin gözlenmesi ve o verilerin veri seti içerisinden çıkartma işlemi gibi veri bilimi için hayati önemi olan adımları, bu kütüphane sayesinde veri ön işleme adımlarını rahatlıkla gerçekleştirebiliriz. Ek olarak veri tiplerini ve onların üzerinde yapacağınız, sayısal ya da kategorik işlemlerin ön kısmını bu şekilde atlatabilirsiniz. Bu da yapılacak işlemlerin öncesinde bize önemli anlamda kolaylık sağlar. Python içerisinde bulunan her kütüphanenin kendine has özellikleri bulunmaktadır fakat pandas için konuşmak gerekirse, veri bilimi adımlarının temelini oluşturmak için verinin üzerinde yapılacak ön parça değişikliklerin tamamından sorumludur. Pandas içerisinde veriyi sınıflama işlemleri de birkaç fonksiyonel kod ile hızlıca tasarlanıp aktif hale getirilebilir. Bu da veri ön işleme aşamasında, veriyi modellemenin önceki adımlarında en kritik noktadır.

 

 

Veriyi, ‘dataframe’ ya da ‘series’ halde saklayabilir ve üzerinde işlemleri yapabiliriz. Pandas kütüphanesinin veri üzerinden yapılacak her işlem fonksiyonel, kolay ve hızlı bir şekilde yapması, veri bilimciler adına veri bilimi süreçlerinde iş yükünü azaltmaktadır. Bu sayede, sürecin başlangıç ve en zor kısmı olan veri ön işleme gibi adımları halledip işin son adımlarına odaklanabilir. Farklı türde hazırlanmış .csv, .xlsx, .json, .txt gibi verileri okuma işlemleri yaparak, girişi yapılmış ya da veri madenciliği sayesinde toplanmış verileri işlem yapmak için python bünyesine alır. Dataframe metoduna sahip olan pandas kütüphanesi, veriyi daha işlevsel ve ölçeklenebilir hale getirme konusunda diğer kütüphanelere göre daha mantıklı hatta sürdürülebilirdir. Bu alanda çalışacak kişiler, direkt olarak kod yazmak için değil bu gibi temel anlamda python programlama dilinin temel ve sağlam yapısına sahip pandas kütüphanesinin metodolojisi üzerine çalışmalıdır. Çünkü veri üzerinde yeni atamalar, kolon isimleri, değişkenleri gruplama, verideki boş gözlemleri veriden çıkarmak ya da boş gözlemleri belirli bir şekilde doldurma işlemleri (ortalama, 0 ya da medyan ataması) yapılabilir.

 

 

Pandas kütüphanesi bilinmeden verilerin üzerinde işlem ya da herhangi bir analiz yapılamaz. Açıkça belirtmek gerekirse, pandas kütüphanesi veri biliminin kalbi denilebilir. Özel olarak tasarlanmış apply(), drop(), iloc(), dtypes() ve sort_values() gibi fonksiyonlar, bu kütüphaneyi ayrıcalıklı kılan en mühim özelliktir. Asıl çıkış noktası temelinde buraya dayanmasa bile, bu işlemler için vazgeçilmez bir kütüphanedir. Yapılacak adımlarda, muazzam özelliklere sahip bir yapıya ve sözdizimi anlamında daha temel bir durumdadır. Döngülerden çıkan sonuçların da kümeler içinde barındırılıp onları dataframe ya da series haline dönüştürmeniz mümkündür. İşlemlerin hızlanması, ortaya çıkacak olan projenin zamana bağlı olarak ilerleyen bir süreci varsa ki genelde böyledir, fonksiyonel anlamda büyük avantaj sağlar. Diğer imkanlarına bakınca ise, python kütüphaneleri arasında verim seviyesi en yüksek kütüphanelerden birisidir. Birçok alanda kullanıma elverişli olması, müthiş bir ek özellik olarak değerlendirilebilir. Pandas, python programlama dilini kullanan yazılımcılar tarafından yapılan veri işleme kütüphaneleri arasındaki oylamada ilk 3 kütüphane arasındadır. Kaynaklar kısmında datarequest ile alıntıladığım bu duruma ulaşabilirsiniz.

 

 

2015 yılından bu yana gelişen ‘veri bilimi’ kavramı, pandas kütüphanesini de ön plana çıkarmaya ve yıllarca sessizlik içerisinde gelişimi sürdüren bu kütüphanenin gün yüzüne çıkmasına ön ayak oldu. Pandas sonrası, numpy anlatacağım ve onun hakkında yapılan numerik, matris işlemlerinden bahsedeceğim. Pandas genel anlamda bu şekilde temel anlamda veri analizi ve veri işleme konusunda üst düzey özelliklere sahip bir kütüphanedir. Ek olarak bahsedeceğiniz konular ve değinmemi istediğiniz şeyler varsa belirtirseniz verim anlamında daha sağlam bir yol çizmiş olurum. Seri halinde yayınlayacağım bu yazıların umarım bu alanda çalışacak kişilere yardımı dokunur. İlerleyen süreçlerde github üzerinden hazırlayacağım cheatsheet tarzı içerikleri de kaynakça kısmına ekleyeceğim. Eğer siz de bu gibi notlardan yararlanmak isterseniz, github hesabımı kaynak kısmına koyacağım oradan rahatlıkla ulaşabilirsiniz.

 

 

References:

https://www.geeksforgeeks.org/python-pandas-dataframe/

https://medium.com/deep-learning-turkiye/adan-z-ye-pandas-tutoriali-ba%C5%9Flang%C4%B1%C3%A7-ve-orta-seviye-4edf0094e0d5#:~:text=Pandas%2C%20Python%20programlama%20dili%20i%C3%A7in,sonuca%20kolayca%20ula%C5%9Fmak%20i%C3%A7in%20kullan%C4%B1lmaktad%C4%B1r.

https://www.dataquest.io/blog/15-python-libraries-for-data-science/

https://github.com/tanersekmen/

https://www.edureka.co/blog/python-pandas-tutorial/

http://globalaihub.com/importance-of-data-quality-and-data-processing/

http://globalaihub.com/hareketli-ortalama-algoritmasiyla-al-sat-tavsiyeleri/

https://www.dataquest.io/course/pandas-fundamentals/

Python ile Veri Analizi ve Görselleştirme – 2

Bir önceki yazımda kullandığım Iris veri seti üzerinde görselleştirme yapmaya devam ediyoruz. Veri görselleştirme için en sık kullanılan 2 adet kütüphane vardır. Bu kütüphanelerden matplotlib tıpkı benim bildiğim gibi birçok kişi tarafından bilinmektedir. Bunun yanı sıra 2. kütüphanemiz ise seaborn olmaktadır. Bu yazıda verilerin kütüphaneler yardımı ile görselleştirilmesine tanıklık edeceğiz.

🔐 Kullandığım Colab bağlantısı için linke girmeniz gerekmektedir.

Veri Görselleştirme Kütüphaneleri

1. Seaborn: Statistical Data Visualization Library ( İstatistiksel Veri Görselleştirme Kitaplığı )

Seaborn, Matplotlib tabanlı bir Python veri görselleştirme kitaplığıdır . Çekici ve bilgilendirici istatistiksel grafikler çizmek için üst düzey bir arayüz sağlar. Paketi nasıl indirebileceğinizi ve kullanmaya başlayabileceğinizi görmek için kurulum sayfasını ziyaret ediniz.

Seaborn

Matplotlib’ e göre farkı daha fazla özelleştirme seçeneğinin olması diyebiliriz.

Seaborn SamplesYukarıda yer verdiğim görselde Seaborn sayesinde verileri nasıl görselleştirebileceğimizi görmekteyiz. Birçok farklı grafik ve formlarda verilerimizi sergilememiz mümkün.

2. Matplotlib: Visualization with Python

Matplotlib; Python’da statik, animasyonlu ve etkileşimli görselleştirmeler oluşturmak için kapsamlı bir kütüphanedir.

Matplotlib Logo

Matplotlib orijinal olarak John D. Hunter tarafından yazılmıştır , o zamandan beri aktif bir geliştirme topluluğuna sahiptir. 

Seaborn Samples

Aynı şekilde burada verdiğim görselde ise Matplotlib ile yapılabilecek görselleştirme formları bulunmaktadır.

🧷 Matplotlib kitaplığındaki plot yani grafikleri incelemek için bağlantıya tıklayınız.

  • Line Plots ( Çizgi Grafikleri): İki değişken arasındaki ilişkiyi çizgiler halinde göstermektedir.

Line plots

  • Scatter Plots ( Dağılım Grafikleri ): İki değişken arasında var olan bu ilişkiyi isminden de anlaşılacağı üzere dağıtık noktalar halinde gösterilmektedir.

Scatter Plots

✨ Iris veri setinde yer alan değişkenlerin birbirleri ile olan ilişkisini ölçmek adına seaborn kütüphanesini kullanmak istedim.

Uploading Seaborn

Seaborn kütüphanesini projemize dahil ettikten sonra çeşitli parametreleri girerek grafiğin oluşmasını sağlamaktayız. Burada dataframe üzerinden sepal_length ve petal_width öznitelikleri arasındaki ilişkinin karşılaştırılmasını gerçekleştirdik. cmap değişkeni ise grafiğimizde kullandığımız renk paletinin belirlendiği değişkendir. İsteğe göre değiştirilebilmektedir. s değişkeni ise burada noktalar halinde verilen scatter grafiğindeki noktaların büyüklüğünü belirtmektedir.

Data Visulatizaton

Bir yazının daha sonuna gelmiş bulunmaktayız. Sağlıcakla kalın ✨

REFERANSLAR

  1. https://seaborn.pydata.org.
  2. https://matplotlib.org.
  3. Machine Learning Days | Merve Noyan | Data Visualization | Study Jams 2 |, https://www.youtube.com/watch?v=JL35pUrth4g&t=640s.
  4. Matplotlib, Wikipedia, The Free Encyclopedia, https://en.wikipedia.org/wiki/Matplotlib.
  5. https://jakevdp.github.io/PythonDataScienceHandbook/04.02-simple-scatter-plots.html.
  6. https://jakevdp.github.io/PythonDataScienceHandbook/04.01-simple-line-plots.html.
  7. https://matplotlib.org/3.1.1/tutorials/colors/colormaps.html.

Data Analysis and Visualization with Python

Hello, one more beautiful day! In this article, we will continue to code Python with you. So what are we doing today? We will talk about one of my favorite topics, data analysis. You can get your data set from data sites such as Kaggle or UCI. In addition to these, I did research on Iris Flower Data Set and chose it for you.

The Iris flower dataset is a multivariate dataset presented by the British statistician and biologist Ronald Fisher in his 1936 article on the use of multiple measures in taxonomic problems. It is sometimes referred to as the Anderson Iris dataset because Edgar Anderson collected data to measure the morphological variation of Iris flowers of three related species. The dataset consists of 50 samples from each of the three Iris species (Iris Setosa, Iris virginica and Iris versicolor).

Four properties were extracted from each sample:

    1. The length of the sepals in centimeters
    2. The width of the sepals in centimeters
    3. The length of the petals in centimeters
    4. The width of the petals in centimeters

This dataset becomes a typical test case for many statistical classification techniques in machine learning, such as support vector machines.

Iris dataset

The visual you see above is also included in the notebook I created in Colab. In this visual, we see examples from the data set. You can access it via the Colab link at the end of the article. It is already in the literature as one of the most frequently and fundamentally used data sets in the field of data science.

STEPS

✨ The necessary libraries must be introduced in Colab and then the path of the data set in the folder must be specified. Then you can print the df variable to see the data set content or use the df.head( ) command to access the first 5 lines.

Veri kümesini ve kitaplıkları içe aktarma

Veri Kümesini İncele

✨ If you wish, let’s run the df.head( ) command and see how we will get an output.

Baş Komuta

✨ We include the values of the features in the data set above. Variables like sepal_length and petal_width are numerical variables. In addition, the feature of the flower type referred to as species is referred to as a categorical variable. First of all, it is useful to know which type of variable this data falls into.

⚠️ If it is desired to estimate the categorical data, namely the type of flower from the numerical variables (features between sepal_length and petal_width), this is a classification problem.

Descriptive Statistics

✨ Descriptive statistics are printed with Pandas’ describe method. If you want to follow, you can access the original documents of Pandas. In this way, how much data each feature contains – it is possible to see the lost data – it is informed. Standard deviation, average, minimum and maximum values of the properties are seen.

Describe Method

For example, in these data, the sepal_length feature is specified as 150000 lines in total and the standard deviation of these values is approximately 0.83.

⏳ The 25% and 75% range are known as Quartiles. By controlling these values, data can be analyzed.

✨ To get information about the data set, df.info( ) command should be run.

According to this information, we see that there is no row with an empty value. In addition to these, we also know that the features that exist numerically have float type.

✨ The df.isna( ) command checks if there is missing data (Not a Number) in the data set. We expect the row with the missing data to be ‘True’. However, as we have seen above, we do not have any lost data.

NaN Any

✨ The df.isna( ).any( ) command returns True if the data set contains even 1 missing data while checking lost data.

Not a Number Value

🖇 NOTE: Click on the link for the Colab link I mentioned above.

In the second article of the series, I will refer to the small points in the data analysis and the visualization area. Stay healthy ✨

REFERENCES

  1. https://pandas.pydata.org/pandas-docs/stable/index.html.
  2. https://www.kaggle.com/arshid/iris-flower-dataset.
  3. Machine Learning Days | Merve Noyan | Data Visualization | Study Jams 2 |, https://www.youtube.com/watch?v=JL35pUrth4g.
  4. https://www.kaggle.com/peterchang77/exploratory-data-analysis.

 

Python ile Veri Analizi ve Görselleştirme

Güzel bir günden daha merhaba! Bu yazıda sizler ile birlikte Python kodlamaya devam edeceğiz. Peki bugün neler yapıyoruz? En sevdiğim konulardan biri olan veri analizine birlikte deyineceğiz. Veri setinizi Kaggle veya UCI gibi veri sitelerinden temin edebilirsiniz. Bunların yanı sıra Iris Çiçek Veri Seti hakkında araştırma yapıp sizler için seçtim.

Iris çiçeği veri seti, İngiliz istatistikçi ve biyolog Ronald Fisher tarafından 1936’daki taksonomik problemlerde çoklu ölçümlerin kullanımı adlı makalesinde sunulan çok değişkenli bir veri setidir. Bazen Anderson Iris veri seti olarak adlandırılır çünkü Edgar Anderson, üç ilgili türün Iris çiçeklerinin morfolojik varyasyonunu ölçmek için verileri toplamıştır. Veri seti, üç Iris türünün (Iris Setosa, Iris virginica ve Iris versicolor) her birinden olmak üzere 50 örnekten oluşur.

Her numuneden dört özellik çıkarılmıştır:

    1. çanak yaprakları santimetre cinsinden uzunluğu
    2. çanak yaprakları santimetre cinsinden genişliği
    3. taç yapraklarının santimetre cinsinden uzunluğu
    4. taç yapraklarının santimetre cinsinden genişliği

Bu veri kümesi, destek vektör makineleri gibi makine öğreniminde birçok istatistiksel sınıflandırma tekniği için tipik bir test senaryosu haline gelmektedir.

Iris veri kümesi

Yukarıda gördüğünüz görsel Colab’da oluşturduğum not defteri içerisinde de yer almaktadır. Bu görselde veri setinden örnekler görmekteyiz. Yazının sonunda yer alan Colab linki üzerinden erişim sağlayabilirsiniz. Zaten veri bilimi alanında en sık ve temel olarak kullanılan veri setlerinden bir tanesi olarak literatürde yer almaktadır.

ADIMLAR

✨ Colab’ da gerekli kütüphaneler tanıtılmalı ve ardından klasör içerisinde yer alan veri setinin yolunun belirtilmesi gerekmektedir. Ardından veri seti içeriğini görmek için df değişkenini yazdırabilir veya ilk 5 satırına erişmek için df.head( ) komutunu kullanabilirsiniz.

Veri kümesini ve kitaplıkları içe aktarma

Veri Kümesini İncele

✨ Dilerseniz df.head( ) komutunu da çalıştırıp nasıl bir çıktı alacağız birlikte görelim.

Baş Komuta

✨ Yukarıda veri setinde yer alan özelliklerin değerlerine yer vermekteyiz. sepal_length ve petal_width gibi değişkenler numerical (sayısal) değişkenlerdir. Bir de bunun yanı sıra species olarak geçen çiçek türü özelliği ise categorical (kategorik) değişken olarak geçmektedir. Öncelikli olarak bu verilerin hangi değişken türüne girdiğini bilmekte fayda var.

⚠️ Eğer burada yer alan sayısal değişkenlerden (sepal_length ve petal_width arası özellikler) kategorik verinin yani çiçek türünün tahmini yapılmak isteniyorsa bu bir sınıflandırma problemidir.

✨ Pandas’ ın describe metodu ile tanımlayıcı istatistikler yazdırılmaktadır. Takip etmek isterseniz Pandas’ ın orijinal dokümanlarından erişebilirsiniz. Bu şekilde her özellik ne kadar veri içeriyorsa -kayıp verileri de görmemiz mümkün- bunun bilgilendirmesi yapılmaktadır. Özelliklerin standart sapması, ortalaması, minimum ve maksimum değerleri görülmektedir.

Describe Method

Örneğin bu veriler içerisinde sepal_length özelliği toplam 150000 satır ve bu değerlerin standart sapması ise yaklaşık olarak 0.83 olarak belirtilmiştir.

⏳ 25% ve 75% aralığı ise Quartile (Çeyrekler Aralığı) olarak bilinmektedir. Bu değerler kontrol edilerek verinin analizi yapılabilmektedir.

✨ Veri seti hakkında bilgi almak için ise df.info( ) komutu çalıştırılmalıdır.

Bu bilgilere göre boş değer olan satır bulunmamakta olduğunu görüyoruz. Bunların yanı sıra sayısal olarak var olan özelliklerin float tipine sahip olduğunun da bilgisine sahip oluyoruz.

df.isna( ) komutu veri setinde kayıp veri (Not a Number) olup olmadığını kontrol etmektedir. Kayıp verinin olduğu satırın ‘True’ olmasını beklemekteyiz. Ancak yukarıda gördüğümüz gibi kayıp verimiz bulunmamaktadır.

NaN Any

df.isna( ).any( ) komutu ise veri setinde kayıp veriler kontrol edilirken 1 adet bile kayıp veri içeriyor ise True olarak dönmektedir.

Not a Number Value

🖇 NOT: Yukarıda sözünü ettiğim Colab bağlantısı için bağlantıya tıklayınız.

Serinin 2. yazısında ise veri analizinde kalan ufak noktalara ve görselleştirme alanına deyineceğim. Sağlıcakla kalın ✨

REFERANSLAR

  1. https://pandas.pydata.org/pandas-docs/stable/index.html.
  2. https://www.kaggle.com/arshid/iris-flower-dataset.
  3. Machine Learning Days | Merve Noyan | Data Visualization | Study Jams 2 |, https://www.youtube.com/watch?v=JL35pUrth4g.
  4. https://www.kaggle.com/peterchang77/exploratory-data-analysis.

 

 

Featured Image

Interactive IPython and Shell Commands

One of the annoyances you will encounter when interacting with the standard Python interpreter is the need to switch between multiple windows to access Python tools and system command line tools. IPython fills this gap and offers you a syntax for executing shell commands directly from the IPython terminal [1]. We will continue with the terminal commands with you. The command lines I will write now work strictly on a Unix-like system such as Linux or Mac OS X.

While doing research on IPython, I came across the following in an article:

Ipython is a programming tool with the Python kernel but with some advantages over Python. One of the features that make this tool superior is that it has a unique graphical interface and a nice development environment [2].

We will deal with this later. I’ll be offering a quick introduction here for beginners while working at Shell for now. Let’s continue the subject with our first example.

For example, here we can see the directories and files contained within a user’s system. First of all, our first command that allows us to print text in the terminal will be echo.

Shell Commands

✳️ Echo: With this line of code, just like the print function in Python, we print the data to the screen in the terminal. As we can see, it prints the data in quotation marks on the screen.

Echo command

✳️ Pwd (Print Working Directory):Writes the working directory that the name implies.

PWD Command

✳️ Ls: Lists the contents contained in the working directory.

LS Command

✳️ Cd: I assume that many of you know this command. It’s a command I use very often. With the cd command, you can navigate between directories. For example, in the following image, we move to the Documents folder.

Cd Command

✳️ Mkdir:Of course, it is possible to create an index when you are in the terminal in the directory we are in! Create a sample folder using the Mkdir command. In addition, I continued the operations by moving to the parent directory. Cd to switch to a parent directory cd .. just use the command.

Mkdir Command

Quick Introduction to IPython

IPython is a growing project with language-independent components. From IPython 4.0 onwards, the language-independent parts of the project are: laptop format, message protocol, qtconsole, laptop web application, etc. It moved to new projects under the name Jupyter. IPython is focused on interactive Python, Part of which provides a Python kernel for Jupyter. So we’ll try the codes we’ve been working on in shell on Jupyter. For this purpose, we first activate Jupyter Notebook.

Jupyter

After creating any Python 3 notebook in Jupyter, we can try the commands we want. For example, I tried to list my directory, the contents, and print a text on the screen.

Ipython Commands

Partial List Of Debug Commands

There are many more available commands for interactive debugging than we list here; the table below contains a description of some of the more common and useful ones:

Debugging List

It is possible to use the debug commands you want in IPython lines when you need help. I have given a few commands that we can use in the images below. In this way, we can use the necessary commands.

REFERENCES

  1. Jake VanderPlas, Python Data Science Handbook, Essential Tools For Working with Data.
  2. IPython, https://mustafaakca.com/ipython/.
  3. IPython Interactive Computing, Official Website, https://ipython.org.
  4. Introduction the Shell, https://datacarpentry.org/shell-genomics/01-introduction/index.html.
  5. Info World, https://www.infoworld.com/article/3193969/10-unix-commands-every-mac-and-linux-user-should-know.html.
Featured Image

Etkileşimli IPython ve Shell Komutları

Standart Python yorumlayıcıyla etkileşimli olarak çalışırken karşılaşacağınız sıkıntılardan biri, Python araçlarına ve sistem komut satırı araçlarına erişmek için birden çok pencere arasında geçiş yapma ihtiyacıdır. IPython bu boşluğu doldurur ve size doğrudan IPython terminalinden kabuk komutlarını yürütmek için bir sözdizimi sunar [1]. Sizlerle birlikte terminal komutları ile devam edeceğiz. Şimdi yazacağım komut satırları Linux veya Mac OS X gibi Unix benzeri bir sistemde kesin olarak çalışmaktadır.

IPython hakkında araştırma yaparken bir yazıda şunlara denk gelmiştim:

Ipython, Python çekirdeğine sahip fakat Pythondan bazı artıları bulunan bir programlama aracıdır. Bu aracı üstün kılan özelliklerden bir tanesi de kendisine has grafiksel bir arayüze ve hoş bir geliştirme ortamına sahip olmasıdır [2].

Bununla daha sonra ilgileneceğiz. Şimdilik Shell’ de çalışırken yeni başlayanlar için burada hızlı bir giriş sunuyor olacağım. Konuya birinci örneğimiz ile devam edelim.

Örnek olarak, burada bir kullanıcının sistemi içerisinde yer alan dizinleri ve dosyaları görebilmekteyiz. Öncelikle terminalde yazı yazdırmamızı sağlayan ilk komutumuz echo olacaktır.

Shell Komutları

✳️ Echo: Bu kod satırı ile tıpkı Python’ da yer alan print fonksiyonu gibi terminalde ekrana veriyi bastırmaktayız. Gördüğümüz üzere tırnak işaretleri içerisinde yer alan veriyi ekrana yazdırmaktadır.

Echo command

✳️ Pwd(Print Working Directory): Adından da anlaşılacağı üzere çalışma dizinini yazdırmaktadır.

PWD Command

✳️ Ls: Çalışma dizini içinde yer alan içerikleri listeler.

LS Command

✳️ Cd: Tahmin ediyorum ki birçoğunuz bu komutu biliyordur. Benim de çok sık kullandığım bir komut. Cd komutu ile dizinler arası gezinmeyi sağlayabilirsiniz. Örneğin, aşağıdaki görselde Documents klasörüne geçmekteyiz.

Cd Command

✳️ Mkdir: Bulunduğumuz dizin içerisinde terminaldeyken bir dizin oluşturmak elbette mümkün! Mkdir komutu ile örnek bir klasör oluşturalım. Bunun yanı sıra işlemleri bir üst dizine geçerek devam ettirdim. Bir üst dizine geçmek için cd .. komutu kullanmanız yeterlidir.

Mkdir Command

IPython’ a Hızlıca Giriş

IPython, dilden bağımsız bileşenlerle büyüyen bir projedir. IPython 4.0’dan itibaren, projenin dilden bağımsız bölümleri: dizüstü bilgisayar formatı, mesaj protokolü, qtconsole, dizüstü bilgisayar web uygulaması vb. Jupyter adı altında yeni projelere taşındı. IPython, bir kısmı Jupyter için bir Python çekirdeği sağlayan etkileşimli Python’a odaklanmıştır. Bu sebeple Jupyter üzerinde shellde çalıştığımız kodları deneyeceğiz. Bunun için öncelikle Jupyter Notebook’ u aktifleştiriyoruz.

Jupyter

Jupyterde herhangi bir Python 3 notebook oluşturduktan sonra istediğimiz komutları deneyebiliriz. Örneğin ben bulunduğum dizini, içerikleri listelemeyi ve ekrana bir yazı yazdırmayı denedim.

Ipython Commands

Hata Ayıklama Komutlarının Kısmi Listesi

Etkileşimli hata ayıklama için burada listelediğimizden çok daha fazla kullanılabilir komut vardır; Aşağıdaki tablo, daha yaygın ve kullanışlı olanlardan bazılarının açıklamasını içerir:

Debugging List

İstediğiniz debug komutlarını yardıma ihtiyacınız olduğunda Ipython satırlarında kullanabilmeniz mümkün. Aşağıdaki görsellerde kullanabileceğimiz birkaç komuta yer vermiş bulunmaktayım. Bu şekilde gerekli komutları kullanabiliyoruz.

REFERANSLAR

  1. Jake VanderPlas, Python Data Science Handbook, Essential Tools For Working with Data.
  2. IPython, https://mustafaakca.com/ipython/.
  3. IPython Interactive Computing, Official Website, https://ipython.org.
  4. Introduction the Shell, https://datacarpentry.org/shell-genomics/01-introduction/index.html.
  5. Info World, https://www.infoworld.com/article/3193969/10-unix-commands-every-mac-and-linux-user-should-know.html.

 

Featured Image for Keras

A Quick Start to Keras and TensorFlow

Keras is a deep learning library designed in the Python language. If you have worked on a deep learning project or are familiar with this area, you have definitely encountered Keras. There are many options in it that will allow you to create deep learning models and provide an environment for us to train our data.

Keras was originally developed to allow researchers to conduct faster trials.

Indeed, Keras is working as fast as possible for data training and pre-processing. If you want to get to know Keras better, you can access their documentation via this link.

Prominent Advantages of Keras

🔹Allows you to perform operations on both the CPU and GPU.

🔹It contains predefined modules for convoluted and iterative networks.

Keras is a deep learning API written in Python that runs on the machine learning platform Theano and TensorFlow.

🔹Keras supports all versions starting with Python 2.7.

Keras, Tensorflow, Theano and CNTK

Keras is the library that offers structures that can realize high-level deep learning models. In this article, we will define the backend engines that we use in our projects many times. Below are these engines running in the background, we include the use of TensorFlow.

Keras Upload

Activation Function

🔹 We can apply the libraries we want to use by selecting them as shown below. There are 3 backend applications that we use. These are TensorFlow, Theano, and Microsoft Cognitive Toolkit (CNTK) backend implementations.

Uploading Library

The platforms you see below are the platforms we encounter a lot in deep learning. As a footnote, I recommend GPU-based work when using TensorFlow. In terms of performance, you will find that with GPU usage, you will get faster and more performance results.

In summary, Keras works in harmony with these 3 libraries. In addition, it works by replacing the backend engine with these three libraries without making any changes to the code. Let’s take a closer look at TensorFlow, which we can use together with Keras.

TensorFlow

➡️ Let’s provide a version check if Python and Pip are installed for the project you are going to work with.

Version Control

➡️ I continue to work for my Mask RCNN project, where I am actively working. You can also create any project or create a segmentation project like me. If you want to continue in the same project, you can access the list of required libraries by clicking on the link.

Collecting Requirements

If you want, you can also upload these libraries one by one. But I require it in terms of being fast.I’m uploading it as a requirements.txt file.

➡️ Let’s go back to Keras and TensorFlow without surprising our goal. We can meet in another article for my Mask RCNN project. Now let’s make a quick introduction to TensorFlow. Let’s import both our project and print the version we use.

TensorFlow

➡️ As you can see as the output, I am using version 2.3.1 of TensorFlow. As I said, You can use it based on CPU or GPU.

Output Version

➡️ Tensorflow as follows when pre-processing the data. We can continue our operations by including the keras.preprocessing module. It seems passive because I am not actively running the method now, but when we write the method that we will use, its color will be activated automatically.

Tensorflow Preprocessing

➡️As an example, we can perform pre-processing with TensorfFlow as follows. We divide our data set into training and testing, and we know that with the validation_split variable, 20% is divided into test data.

In this way, we have made a fast start to Keras and TensorFlow with you. I hope to see you in my next post. Stay healthy ✨

REFERENCES

  1. https://keras.io/about/.
  2. Wikipedia, The free encyclopedia, https://en.wikipedia.org/wiki/Keras.
  3. https://keras.rstudio.com/articles/backend.html.
  4. Francois Chollet, Deep Learning with Python, Publishing Buzdagi.
  5. https://www.tensorflow.org.
  6. https://www.tensorflow.org/tutorials/keras/text_classification.

 

 

Featured Image for Keras

Keras ve TensorFlow’a Hızlı Bir Başlangıç

Keras, Python dilinde tasarlanmış bir derin öğrenme kütüphanesidir. Bir derin öğrenme projesinde çalıştıysanız veya bu alana aşinalığınız var ise mutlaka Keras ile karşılaşmışsınız demektir. İçerisinde derin öğrenme modellerinin oluşturulmasına imkan verecek ve verilerimizi eğitmemiz için ortam sağlayacak birçok seçenek mevcuttur.

Keras başlangıçta araştırmacıların daha hızlı denemeler yapabilmeleri için geliştirilmiştir.

Keras, gerçekten de veri eğitimi ve ön işlenmesi için olabildiğince hızlı çalışmaktadır. Keras’ı daha yakından tanımak isterseniz bu link üzerinden kendi dokümantasyonlarına erişim sağlayabilirsiniz.

Keras’ın Öne Çıkan Avantajları

🔹Hem CPU hem GPU üzerinde işlemlerinizi gerçekleştirebilmenizi sağlar.

🔹Evrişimli ve yinelemeli ağlar için  önceden tanımlı modüller barındırmaktadır.

 

Keras, makine öğrenimi platformu Theano ve TensorFlow üzerinde çalışan Python’da yazılmış bir derin öğrenme API’sidir.

🔹 Keras, Python 2.7′ den itibaren tüm versiyonları desteklemektedir.

Keras, Tensorflow, Theano ve CNTK

Keras, yüksek seviyeli derin öğrenme modellerini gerçekleştirebilecek yapıları sunan kütüphanedir. Birçok kez projelerimizde kullandığımız backend enginleri bu yazıda tanımlayacağız. Sanırım Türkçe olarak bu kavramı arka uç motor olarak tanımlıyorlar ancak ben kavramı türkçeleştirmeyeceğim. Arka planda çalışan bu motorlardan aşağıda Tensorflow’un kullanımına yer vermekteyiz.

Keras Upload

Activation Function

🔹 Kullanmak istediğimiz kütüphaneleri aşağıdaki görseldeki gibi seçerek uygulayabiliriz. Kullanmakta olduğumuz 3 adet backend uygulaması bulunmaktadır. Bunlar TensorFlow, Theano ve Microsoft Cognitive Toolkit (CNTK) backend uygulamalarıdır.

Uploading Library

Aşağıda gördüğünüz platformlar derin öğrenmede çokça karşılaştığımız platformlardır. Dipnot olarak TensorFlow kullanırken GPU tabanlı çalışmanızı öneririm. Performans açısından GPU kullanımı ile daha hızlı ve performanslı sonuçlar elde ettiğinizi göreceksiniz.

Özetle demek istediğim, Keras bu 3 kütüphane ile uyumlu olarak çalışmaktadır. Üstelik kodda herhangi bir değişiklik yapmadan bu üç kütüphane ile backend engine değiştirerek çalışmaktadır.

Gelin sizlerle birlikte Keras ile birlikte kullanabileceğimiz TensorFlow’ a daha yakından değinelim.

TensorFlow

➡️ Çalışacağınız proje için Python ve Pip kurulu olup olmadığını versiyon kontrolü ile sağlayalım.

Version Control

➡️ Aktif olarak çalıştığım Mask RCNN projem için çalışmalara devam ediyorum. Sizler de herhangi bir proje oluşturabilir veya benim gibi segmentasyon projesi oluşturabilirsiniz. Eğer aynı projede devam etmek istiyorsanız bağlantıya tıklayarak gerekli olan kütüphanelerin listesine erişebilirsiniz.

Collecting Requirements

Dilerseniz bu kütüphaneleri teker teker de yükleyebilirsiniz. Fakat ben hızlı olması açısından requirements.txt dosyası olarak yüklemekteyim.

➡️ Amacımızdan şaşmadan, Keras ve TensorFlow’a geri dönüş yapalım. Mask RCNN projem için başka bir yazıda daha buluşabiliriz. Şimdi TensorFlow’ a hızlıca bir giriş yapalım. Hem projemize import edelim hem de kullandığımız versiyonu yazdıralım.

TensorFlow

Çıktı olarak gördüğünüz üzere TensorFlow’ un 2.3.1 versiyonunu kullanmaktayım. Söylediğim gibi bunu CPU veya GPU tabanlı kullanabilirsiniz.

Output Version

➡️ Veride ön işleme yaparken ise aşağıdaki gibi tensorflow.keras tpreprocessing modülünü dahil ederek işlemlerimize devam edebiliyoruz. Şuan aktif olarak metot çalıştırmadığım için pasif görünüyor ancak kullanacağımız metotu yazdığımızda otomatik olarak rengi aktifleşecektir.Tensorflow Preprocessing

➡️ Örnek olarak TensorfFlow ile ön işlemeyi aşağıdaki gibi gerçekleştirebiliyoruz. Veri setimizi eğitim ve test olarak ayırıyoruz ve validation_split değişkeni ile %20’sinin test verisine ayrıldığını biliyoruz.

Bu şekilde sizlerle birlikte Keras’ a ve TensorFlow’a hızlı bir başlangıç yapmış bulunmaktayız. Bir sonraki yazımda görüşmek dileğiyle. Esen kalın ✨

REFERANSLAR

  1. https://keras.io/about/.
  2. Wikipedia, The free encyclopedia, https://en.wikipedia.org/wiki/Keras.
  3. https://keras.rstudio.com/articles/backend.html.
  4. François Chollet, Python ile Derin Öğrenme, Buzdağı Yayıncılık.
  5. https://www.tensorflow.org.
  6. https://www.tensorflow.org/tutorials/keras/text_classification.

Contour Extraction Using OpenCV

In image processing, the concept called stroke is a closed curve that connects all continuous points that a color or density has. Strokes represent the shapes of objects in an image. Stroke detection is a useful technique for Shape analysis and object detection and recognition. When we do edge detection, we find points where the color density changes significantly, and then we turn those pixels on. However, strokes are abstract collections of points and segments that correspond to the shapes of objects in the image. As a result, we can process strokes in our program, such as counting the number of contours, using them to categorize the shapes of objects, cropping objects from an image (image partitioning), and much more.

Computer Vision

🖇 Contour detection is not the only algorithm for image segmentation, but there are many other algorithms available, such as state-of-the-art semantic segmentation, hough transform, and K-Means segmentation. For better accuracy, all the pipelines we will monitor to successfully detect strokes in an image:

  • Convert image to binary image, it is common practice for the input image to be a binary image (it must be a result of threshold image or edge detection).
  • FindContours( ) by using the OpenCV function.
  • Draw these strokes and show the image on the screen.

Apply Contour on Photoshop

Adobe PS
Before moving on to the encoding of contour extraction, I will first give you an example of Photoshop to give you better acquisitions.
Katmandan kontur çıkarımı
As a first step, to access the window you see above, right-click on any layer in Photoshop’s Layers window and select blending options.
🔎 If the Layers window is not active, you must activate the layers by clicking the Window menu from the top menu. The hotkey for Windows is F7.
It is possible to select the Contour color and opacity you want to create in the image by selecting the Contour tab from the left section. Then, background extraction is made to distinguish the contour extraction that will occur in the image first.
People siluet
After removing the background in the image you see here, I made a selection in yellow tones so that the object is visible in the foreground. After the background is removed, the outer contour will be applied to the image and the detection will be more successful.
People contour

Contour Extraction with Python OpenCV

I use Google Colab and Python programming language as a platform. If there are those who regularly code Python, it is a platform that I can definitely recommend! Come on, let’s start coding step by step.
📌 Let’s import the libraries required for our project as follows.
Gerekli Kütüphanelerin Yüklenmesi
📌 As the second step, we get our image with the imread function.
Görüntünün Alınması
📌 As you know in the world of image processing, our images come in BGR format. The BGR image must first be converted to RGB format and then assigned to the grayscale color channel.
Converting Color Spaces
📌 As the fourth step, a binary threshold operation is performed by specifying a threshold value in the image. To access the mathematics that the binary threshold function runs in the background, you must examine the following formula 👇
Formula
Binary threshold
If you have noticed, the image on which threshold will be applied is selected as a gray level image, not RGB. Please pay attention at this stage. When you follow these steps in order, you will receive the following feedback.
Background
📌In this step, we will use the findContours function to find the contours in the image. The image where the contours will be determined will be the binary image that we have realized the threshold.
Find Contours
📌 We will use drawContours function to draw these contours visually.
Draw Contours
🖇 The parameter cv2.CHAIN_APPROX_SIMPLE in the method removes all unnecessary points and saves memory by compressing the contour.
📌 Now we can print our contour extracted image on the screen.
Imshow contours

In this way, we made our inference. Hope to head to the world of other projects in another article … Stay healthy ✨

REFERENCES

  1. Contour Tracing, http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing_Abeer_George_Ghuneim/intro.html.
  2. Edge Contour Extraction, https://www.cse.unr.edu/~bebis/CS791E/Notes/EdgeContourExtraction.pdf, Pitas, section 5.5, Sonka et al., sections 5.2.4-5.2.5.
  3. https://www.thepythoncode.com/article/contour-detection-opencv-python adresinden alınmıştır.
  4. https://www.subpng.com/png-m7emk6/ adresinden alınmıştır.
  5. OpenCV, https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html.
  6. OpenCV, https://docs.opencv.org/master/d4/d73/tutorial_py_contours_begin.html.

OpenCV Kullanımı ile Kontur Çıkarımı

Görüntü işlemede kontur denilen kavram, bir rengin veya yoğunluğunun sahip olduğu tüm sürekli noktaları birleştiren kapalı bir eğridir. Konturlar bir görüntüde bulunan nesnelerin şekillerini temsil eder. Kontur algılama, şekil analizi ve nesne algılama ve tanıma için yararlı bir tekniktir. Kenar tespiti yaptığımızda, renk yoğunluğunun önemli ölçüde değiştiği noktaları buluruz ve sonra bu pikselleri açarız. Bununla birlikte, konturlar, görüntüdeki nesnelerin şekillerine karşılık gelen soyut nokta ve segment koleksiyonlarıdır. Sonuç olarak, programımızda kontür sayısını saymak, bunları nesnelerin şekillerini kategorize etmek için kullanmak, bir görüntüden nesneleri kırpmak (görüntü bölümleme) ve çok daha fazlası gibi konturları işleyebiliriz.

Computer Vision
🖇 Kontur tespiti, görüntü segmentasyonu için tek algoritma değildir ancak mevcut son teknoloji semantik segmentasyon, hough dönüşümü ve K-Means segmentasyonu gibi başka birçok algoritma vardır. Daha iyi bir doğruluk için, bir görüntüdeki konturları başarılı bir şekilde tespit etmek için izleyeceğimiz tüm ardışık düzenler:

  • Görüntüyü ikili görüntüye dönüştürün, giriş görüntüsünün ikili görüntü olması yaygın bir uygulamadır (eşikli görüntü veya kenar algılamanın bir sonucu olmalıdır).
  • FindContours( ) OpenCV işlevini kullanarak konturları bulma.
  • Bu konturları çizin ve resmi ekrana gösterin.

Photoshop Üzerinde Kontur Uygulama

Adobe PS
Kontur çıkarımının kodlamasına geçmeden önce sizlere daha iyi edinimler kazandırmak için öncelikle Photoshop üzerinde örnek vereceğim.
Katmandan kontur çıkarımı
İlk adım olarak yukarıda gördüğünüz pencereye erişmek için Photoshop üzerinde bulunan Katmanlar penceresindeki herhangi bir katmana sağ tıklayarak karıştırma seçeneklerini seçiniz.
🔎 Katmanlar penceresi aktif değil ise üst menüden Pencere menüsüne tıklayarak katmanları aktif etmelisiniz. Windows için  kısayol tulu F7′ dir.
Sol bölümden Kontur sekmesini seçerek görüntüde oluşturmak istediğiniz kontur rengini ve opaklığını seçmeniz mümkündür. Ardından önce görüntüde oluşacak kontur çıkarımının iyi ayrıtlandırılabilmesi için arka plan çıkarımı yapılmaktadır.
People siluet
Burada gördüğünüz görselde arka plan çıkarıldıktan sonra nesnenin ön planda belirgin olabilmesi için sarı tonlarında bir seçim gerçekleştirdim. Arka plan çıkarıldıktan sonra görüntüde dış kontur uygulanarak tespitin daha başarılı olması sağlanacaktır.
People contour

Python OpenCV ile Kontur Çıkarımı

Platform olarak Google Colab ve Python programlama dilini kullanmaktayım. Düzenli olarak Python kodlayanlar var ise mutlaka tavsiyede bulunabileceğim bir platform! Haydi gelin, adım adım kodlamaya başlayalım.
📌 Projemiz için gerekli olan kütüphaneleri aşağıdaki gibi import ile yükleyelim.
Gerekli Kütüphanelerin Yüklenmesi
📌 İkinci adım olarak görüntümüzü imread fonksiyonu ile elde ediyoruz.
Görüntünün Alınması
📌 Görüntü işleme dünyasında bildiğiniz üzere görsellerimiz BGR formatında gelmektedir. BGR görüntünün ilk olarak RGB formatına dönüştürülmesi ve ardından gri skala renk kanalına atanması gerekmektedir.
Converting Color Spaces
📌 Dördüncü adım olarak görüntüde bir eşik değeri belirtilerek binary threshold (ikili eşikleme) işlemi yapılmaktadır. Binary threshold fonksiyonunun arka planda çalıştırdığı matematiğe erişmek için aşağıdaki formülü incelemelisiniz 👇
Formula
Binary threshold
Dikkat ettiyseniz threshold uygulanacak görüntü RGB değil gri seviye görüntü seçilmiştir. Lütfen bu aşamada dikkat edelim. Bu adımları sırası ile takip ettiğinizde aşağıdaki dönütü alacaksınız.
Background
📌 Bu adımda ise görüntüde yer alan konturların bulunması için findContours fonksiyonunu kullanacağız. Konturların belirleneceği görüntü ise threshold gerçekleştirdiğimiz binary görüntü olacaktır.
Find Contours
📌 Oluşturulan bu konturların görselde çizilmesi için drawContours fonksiyonunu kullanacağız.
Draw Contours
🖇 Metotta yer alan cv2.CHAIN_APPROX_SIMPLE parametresi, tüm gereksiz noktaları kaldırır ve konturu sıkıştırarak hafızadan tasarruf sağlar.
📌 Artık kontur çıkarımı yapılmış görüntümüzü ekrana bastırabiliriz.
Imshow contours

Bu şekilde çıkarımımızı yapmış olduk. Bir başka yazımda başka projelerin dünyasına yönelmek dileğiyle… Sağlıcakla kalın ✨

REFERANSLAR

  1. Contour Tracing, http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing_Abeer_George_Ghuneim/intro.html.
  2. Edge Contour Extraction, https://www.cse.unr.edu/~bebis/CS791E/Notes/EdgeContourExtraction.pdf, Pitas, section 5.5, Sonka et al., sections 5.2.4-5.2.5.
  3. https://www.thepythoncode.com/article/contour-detection-opencv-python adresinden alınmıştır.
  4. https://www.subpng.com/png-m7emk6/ adresinden alınmıştır.
  5. OpenCV, https://docs.opencv.org/master/d7/d4d/tutorial_py_thresholding.html.
  6. OpenCV, https://docs.opencv.org/master/d4/d73/tutorial_py_contours_begin.html.