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

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.

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

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

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.

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

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

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.

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

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

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

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

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

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

🖇 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

Before moving on to the encoding of contour extraction, I will first give you an example of Photoshop to give you better acquisitions.

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.

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.

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

📌 As the second step, we get our image with the imread function.

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

📌 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 👇

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.

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

📌 We will use drawContours function to draw these contours visually.

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

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

### REFERENCES

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