Skip to content
Kanser Datası

Data Visualization || Kanser Analizi

‘Kanser Projesi’ne hoş geldiniz. Çalışmaya ilişkin kaynak dosyayı aşağıdan indirebilirsiniz.

CODING TASK 5. PLOT SCATTERPLOT & COUNTPLOT USING SEABORN

  • Seaborn is a visualization library that sits on top of matplotlib
  • Seaborn offers enhanced features compared to matplotlib
  • https://seaborn.pydata.org/examples/index.html/
  • Check out the head of the dataframe
  • Check out the tail of the dataframe
  • Plot scatter plot between mean area and mean smoothness
  • Let’s print out countplot to know how many samples belong to class #0 and #1
# import libraries 
import pandas as pd # Import Pandas for data manipulation using dataframes
import numpy as np # Import Numpy for data statistical analysis 
import matplotlib.pyplot as plt # Import matplotlib for data visualisation
import seaborn as sns # Statistical data visualization
cancer_df = pd.read_csv('cancer.csv')
cancer_df.sample(2)
cancer_df.info()

Burada data setinde Null değerlerin olup olmadığı, column başlıkları verilerin datatype bilgilerine kapladıkları alan bilgisine veri sayısına ilişkin bilgilere ulaşabilmekteyiz. Genel anlamda data durumunu görmemizi sağlar.

cancer_df["target"].unique()

“target” sütunu: Hedef değişken (etiket). 0, kanser olmadığını; 1, kanser olduğunu göstermektedir.

cancer_df.isnull().sum()[cancer_df.isnull().sum()>0]

Burada null değerleri toplatıp sıfırdan büyük olma durumuna bakıyoruz. Bize özet bilgi sunar.

cancer_df.head(5)
cancer_df.tail(3)
cancer_df.shape

bu kodla data setinin ilk 5 ve son 3 verilerine bakıyoruz.

plt.figure(figsize=(8,6))
sns.scatterplot(x=cancer_df["mean area"], y=cancer_df["mean smoothness"])
plt.xlabel("Mean Area")
plt.ylabel("Mean Smoothness")
plt.title("CANCER");

Görseldeki saçılım grafiği, ‘Mean Area’ (Ortalama Alan) ile ‘Mean Smoothness’ (Ortalama Düzgünlük) arasındaki ilişkiyi göstermektedir. ortalama alandaki bir artışın, ortalama düzgünlüğü değiştirdiği ancak bu ilişkinin belirgin bir doğrusal korelasyon göstermediği göze çarpmaktadır.

sns.countplot(x=cancer_df["target"], data=cancer_df )
plt.title("TARGET")

‘0’ sınıfı daha az sayıda örneğe sahipken, ‘1’ sınıfı daha fazla örneğe sahip. Bu durum, veri setindeki sınıf dağılımının dengesiz olduğunu gösteriyor;

PRACTICE OPPORTUNITY 5:

Plot the scatterplot between the mean radius and mean area. Comment on the plot

plt.figure(figsize=(12,9))

sns.scatterplot(x=cancer_df["mean radius"], y=cancer_df["mean area"],color="red")
plt.title("MEAN AREA // MEAN RADIUS")

Mean Radius’ (Ortalama Yarıçap) ile ‘Mean Area’ (Ortalama Alan) arasındaki ilişkiyi gösteren bir saçılım grafiği olarak görünüyor.

Grafik, kuvvetli bir pozitif korelasyonu yansıtıyor; yarıçap arttıkça, alanın da arttığını gösteren doğrusal bir ilişki görülmekte.

CODING TASK 6. PLOT PAIRPLOT, DISPLOT, AND HEATMAPS/CORRELATIONS USING SEABORN

  • Plot the pairplot
  • Strong correlation between the mean radius and mean perimeter, mean area and mean primeter
  • plot the distplot
  • Displot combines matplotlib histogram function with kdeplot() (Kernel density estimate)
  • KDE is used to plot the Probability Density of a continuous variable.
cancer_df_yeni = cancer_df.copy()  

Strong correlation between the mean radius and mean perimeter, mean area and mean primeter tüm dataya bakmalıyız

cancer_df_yeni.columns
cancer_df_yeni.drop(columns=['mean texture',
       'mean smoothness', 'mean compactness', 'mean concavity',
       'mean concave points', 'mean symmetry', 'mean fractal dimension',
       'radius error', 'texture error', 'perimeter error', 'area error',
       'smoothness error', 'compactness error', 'concavity error',
       'concave points error', 'symmetry error', 'fractal dimension error',
       'worst radius', 'worst texture', 'worst perimeter', 'worst area',
       'worst smoothness', 'worst compactness', 'worst concavity',
       'worst concave points', 'worst symmetry', 'worst fractal dimension',
       'target'],inplace=True)
cancer_df_yeni.columns
cancer_df_yeni
carrelationmatris=cancer_df_yeni.corr()
carrelationmatris
carrelationmatris_all=cancer_df.corr()
carrelationmatris_all

plt.figure(figsize=(18,24))
sns.heatmap(carrelationmatris_all,annot=True,fmt=".2f",linewidths=.5)

Diyagonal karelerdeki 1.00 korelasyon, her değişkenin kendisiyle mükemmel bir ilişkisi olduğunu gösterir. Diyagonal karelerdeki 0.00 korelasyon, her değişkenin kendisiyle kötü bir ilişkisi olduğunu gösterir. Diyagonal karelerdeki -1.00 korelasyon, her değişkenin kendisiyle ter yönde (zıt yönde, birisi artarken diğerinin azaldığı) bir ilişkisi olduğunu gösterir.

Diyagonal olmayan karelerdeki renk kodlaması, farklı değişkenler arasındaki korelasyonun gücünü ifade eder. Daha koyu renkler güçlü pozitif korelasyonu, daha açık renkler ise daha zayıf pozitif korelasyonu simgeler.

cancer_df_yeni["mean concavity"] =cancer_df['mean concavity'] 
sns.pairplot(cancer_df_yeni,hue="mean concavity")

Saçılım grafikleri, üç değişken arasındaki ilişkiyi gösterir.

Noktaların boyutu oyukluluk derecesini, rengi ise oyukluluk değerini belirtir.

Grafiklerde gözlenen net pozitif trend, değişkenler arasında güçlü bir pozitif korelasyon olduğunu gösterir.

Oyukluluk değerleri arttıkça, noktaların rengi koyulaşır ve büyüklüğü artar, bu da daha yüksek oyukluk değerlerinin daha büyük ve daha koyu renkli noktalarla temsil edildiğini gösterir.

Grafiklerde gözlenen net pozitif trend, değişkenler arasında güçlü bir pozitif korelasyon olduğunu gösterir; yani, bir değişkenin değeri arttıkça, diğer değişkenin değeri de artma eğilimindedir.

plt.figure(figsize=(8,6))
sns.distplot(cancer_df_yeni["mean area"],kde=True);

Görselleştirilen grafik, kanser veri setindeki “mean area” (ortalama alan) özelliğinin dağılımını göstermektedir.

  1. Dağılımın Şekli: Grafikte gösterilen dağılım, sağa doğru çarpık (skewed) bir şekilde görünmektedir. Bu, daha küçük “mean area” değerlerinin daha yaygın olduğunu, ancak bazı büyük “mean area” değerlerinin de olduğunu gösterir.
  2. Yoğunluk ve Pik Noktaları: KDE (Kernel Density Estimation) eğrisi, veri noktalarının yoğunluğunu gösterir. Eğrinin en yüksek olduğu noktalar, en sık rastlanan “mean area” değerlerini ifade eder. Grafikte bir ya da birden fazla pik noktası gözlenebilir; bu, veri setinde en yaygın “mean area” değerlerini gösterir.
  3. Değerlerin Yayılımı: Grafik, “mean area” değerlerinin geniş bir aralıkta dağıldığını gösterir. Bu, ölçümlerin çeşitliliğini ve kanser vakaları arasındaki morfolojik farklılıkları yansıtabilir.
  4. Anomali veya Dışa Çıkma Durumları: Grafikteki uzun kuyruk, bazı örneklerin çok daha büyük “mean area” değerlerine sahip olduğunu gösterir. Bu durum, potansiyel anomali veya nadir vakaları işaret edebilir.

Bu tür bir analiz, kanser araştırmalarında önemli bir rol oynayabilir. Örneğin, “mean area”nın kanser vakalarının şiddeti, tipi veya evresi ile ilişkili olup olmadığını araştırmak için kullanılabilir.

plt.figure(figsize=(8,6))
sns.distplot(cancer_df_yeni["mean radius"],kde=True);
  1. Dağılımın Şekli: Grafik, sağa doğru bir miktar çarpık (skewed) bir dağılım gösteriyor gibi görünmektedir. Bu, küçük “mean radius” değerlerinin daha yaygın olduğunu, ancak bazı büyük “mean radius” değerlerinin de mevcut olduğunu işaret eder.
  2. Yoğunluk ve Pik Noktaları: KDE (Kernel Density Estimation) eğrisi, veri noktalarının yoğunluğunu temsil eder. Eğrinin en yüksek olduğu yerler, en sık rastlanan “mean radius” değerlerini ifade eder. Burada, belirgin bir ana pik ve belki de daha küçük ikincil pikler görebiliriz.
  3. Değerlerin Yayılımı: Grafik, “mean radius” değerlerinin belirli bir aralıkta dağıldığını gösterir. Bu, farklı kanser vakalarının çeşitli boyutlardaki tümörleri yansıttığını gösterir.
  4. Anomali veya Dışa Çıkma Durumları: Grafikteki uzun kuyruk, bazı örneklerin çok daha büyük “mean radius” değerlerine sahip olduğuna işaret edebilir. Bu, potansiyel anomali veya nadir vakaları gösterebilir.

Bu analiz, tümörlerin boyutlarının kanser vakalarının doğası ve şiddeti hakkında bilgi verebilir. “Mean radius”un, kanserin tipi, evresi veya agresifliği ile ilişkili olabileceği düşünülebilir.

fig, ax = plt.subplots(1, 2, figsize = (10, 5))

sns.histplot(cancer_df_yeni["mean radius"],color = "red",kde=True, ax = ax[0])

sns.histplot(cancer_df_yeni["mean perimeter"],color = "blue",kde=True, ax = ax[1])

Ortalama yarıçapın histogramı kırmızı renkle gösterilmiştir. Histogram, ortalama yarıçap değerlerinin çoğunlukla 10 ile 20 birim arasında toplandığını ve zirvenin yaklaşık 14 birim civarında olduğunu gösterir. oğunluk tahmini çizgisi (KDE), histogramın üzerine çizilmiş ve verilerin nispeten simetrik bir dağılıma sahip olduğunu, ancak hafifçe sağa çarpık olduğunu gösterir.

Ortalama çevrenin histogramı mavi renkle gösterilmiştir. Histogram, ortalama çevre değerlerinin çoğunlukla 60 ile 100 birim arasında toplandığını ve en yoğun olduğu alanın yaklaşık 80 birim civarında olduğunu gösterir. Yoğunluk tahmini çizgisi, histogramın şeklini takip eder ve verilerin simetrik bir dağılıma sahip olduğunu, normal dağılıma benzer bir profil çizdiğini gösterir.

fig, ax = plt.subplots(1, 2, figsize = (10, 5))

sns.distplot(cancer_df_yeni["mean perimeter"],color = "red",kde=True, ax = ax[0])

sns.distplot(cancer_df_yeni["mean radius"],color = "blue",kde=True, ax = ax[1])
  1. “Mean Perimeter” Dağılımı (Kırmızı Renkteki Grafik):
    • Dağılımın Şekli: Bu grafik, sağa doğru bir miktar çarpık bir dağılım gösterir. Bu, küçük “mean perimeter” değerlerinin daha yaygın olduğunu, ancak bazı büyük “mean perimeter” değerlerinin de mevcut olduğunu gösterir.
    • Yoğunluk ve Pik Noktaları: KDE eğrisi, en sık rastlanan “mean perimeter” değerlerini gösteren belirgin bir pik noktasına sahip.
    • Değerlerin Yayılımı ve Anomali Durumları: Değerler geniş bir aralıkta dağılmıştır ve grafikteki uzun kuyruk, bazı nadir büyük “mean perimeter” değerlerini gösterir.
  2. “Mean Radius” Dağılımı (Mavi Renkteki Grafik):
    • Dağılımın Şekli: “Mean radius” dağılımı sağa doğru çarpık bir görünüm sergiler. Küçük “mean radius” değerlerinin daha yaygın olduğunu, ancak bazı büyük “mean radius” değerlerinin de bulunduğunu işaret eder.
    • Yoğunluk ve Pik Noktaları: KDE eğrisi, en sık rastlanan “mean radius” değerlerini gösterir ve burada da bir ana pik göze çarpar.
    • Değerlerin Yayılımı ve Anomali Durumları: Grafik, “mean radius” değerlerinin geniş bir aralıkta dağıldığını gösterir ve uzun kuyruk, bazı nadir büyük “mean radius” değerlerine işaret eder.

Her iki özellik – “mean perimeter” ve “mean radius” – tümörlerin boyutu ve şekli hakkında bilgi verir. Bu iki özellik genellikle birbiriyle ilişkilidir, çünkü her ikisi de tümörün fiziksel boyutlarına dair önemli göstergelerdir. Bu grafikler, kanser vakalarının doğası ve şiddeti hakkında bilgi sağlayarak, tıbbi araştırmalarda ve teşhislerde kullanılabilir. Ancak, bu yorumlar daha derinlemesine analizler ve tıbbi bilgiyle desteklenmelidir

fig, ax = plt.subplots(1, 2, figsize = (10, 5))

sns.distplot(cancer_df_yeni["mean radius"],color = "red",kde=True, ax = ax[0])

sns.distplot(cancer_df_yeni["mean area"],color = "blue",kde=True, ax = ax[1])

Bu iki grafik, kanser veri setindeki “mean radius” (ortalama yarıçap) ve “mean area” (ortalama alan) özelliklerinin dağılımlarını göstermektedir. Her iki grafik de farklı renklerde (kırmızı ve mavi) çizilmiştir ve bu dağılımların analizi şu şekilde yapılabilir:

  1. “Mean Radius” Dağılımı (Kırmızı Renkteki Grafik):
    • Dağılımın Şekli: Bu grafik, sağa doğru bir miktar çarpık bir dağılım gösterir, bu da küçük “mean radius” değerlerinin daha yaygın olduğunu, ancak bazı büyük “mean radius” değerlerinin de mevcut olduğunu gösterir.
    • Yoğunluk ve Pik Noktaları: KDE eğrisi, en sık rastlanan “mean radius” değerlerini gösteren belirgin bir pik noktasına sahip.
    • Değerlerin Yayılımı ve Anomali Durumları: Değerler geniş bir aralıkta dağılmıştır ve grafikteki uzun kuyruk, bazı nadir büyük “mean radius” değerlerini gösterir.
  2. “Mean Area” Dağılımı (Mavi Renkteki Grafik):
    • Dağılımın Şekli: “Mean area” dağılımı da sağa doğru çarpık bir görünüm sergiler. Bu, küçük “mean area” değerlerinin daha yaygın olduğunu, ancak bazı büyük “mean area” değerlerinin de bulunduğunu işaret eder.
    • Yoğunluk ve Pik Noktaları: KDE eğrisi, en sık rastlanan “mean area” değerlerini gösterir ve burada da bir ana pik göze çarpar.
    • Değerlerin Yayılımı ve Anomali Durumları: Grafik, “mean area” değerlerinin geniş bir aralıkta dağıldığını gösterir ve uzun kuyruk, bazı nadir büyük “mean area” değerlerine işaret eder.

Her iki grafik de kanser vakalarındaki tümörlerin boyutları hakkında önemli bilgiler verir. “Mean radius” ve “mean area” özellikleri, kanserin tipi, evresi veya agresifliği ile ilişkili olabilir. Bu grafikler, kanserin doğası ve şiddeti hakkında bilgi sağlayarak, tıbbi araştırmalarda ve teşhislerde kullanılabilir. Ancak, bu yorumlar daha derinlemesine analizler ve tıbbi bilgiyle desteklenmelidir.

Bisiklet Talebi

Data Visualization || Bisiklet Analizi

Data Visualization || Bisiklet Analizi

‘Bisiklet Talebi Görselleştirme Projesi’ne hoş geldiniz. Bildiğiniz üzere, kısa mesafeli şehir içi yolculuklar için motorlu toplu taşıma veya özel araçlara alternatif olarak bisikletlerin ücretsiz veya uygun fiyatlı erişimi sağlandı. Böylece trafik sıkışıklığını, gürültü ve hava kirliliğini azaltmayı hedefliyoruz.

Bu projenin amacı, Londra bisiklet paylaşımının tarihi verilerini görselleştirme araçları ile göstererek mevcut veri desenlerini ortaya çıkarmaktır.

Bu, bir makine öğrenimi modeli kurmadan önce EDA (Keşifsel Veri Analizi) sürecinin bir parçası olarak verilere ‘X-ışını’ çekmemize olanak tanıyacak.”

Data Setinin Özellikleri:

– timestamp – verileri gruplandırmak için zaman damgası alanı

– cnt – yeni bisiklet paylaşımlarının sayısı

– t1 – gerçek sıcaklık, santigrat cinsinden

– t2 – “hissedilen” sıcaklık, santigrat cinsinden

– hum – nem yüzdesi

– wind_speed – rüzgar hızı, km/sa cinsinden

– weather_code – hava durumu kategorisi

– is_holiday – boolean alanı – 1 tatil / 0 tatil değil

– is_weekend – boolean alanı – gün hafta sonuysa 1

– season – meteorolojik mevsimlerin kategori alanı: 0-ilkbahar; 1-yaz; 2-sonbahar; 3-kış.

“weather_code” kategori açıklaması:

– 1 = Açık; çoğunlukla açık ama bazı değerlerde sis/pus/yer yer sis/sis civarında

– 2 = dağınık bulutlar / az bulutlu

– 3 = Parçalı bulutlu

– 4 = Bulutlu

– 7 = Yağmur/ hafif yağmur duşu/ Hafif yağmur

– 10 = gök gürültülü yağmur

– 26 = kar yağışı

– 94 = Donan Sis”

import pandas as pd

import numpy as np

#import matplotlib as mpl
import matplotlib.pyplot as plt

import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")
df = pd.read_csv("store_sharing.csv")
df
df.info() #no null 

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 17414 entries, 0 to 17413
Data columns (total 10 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   timestamp     17414 non-null  object 
 1   cnt           17414 non-null  int64  
 2   t1            17414 non-null  float64
 3   t2            17414 non-null  float64
 4   hum           17414 non-null  float64
 5   wind_speed    17414 non-null  float64
 6   weather_code  17414 non-null  float64
 7   is_holiday    17414 non-null  float64
 8   is_weekend    17414 non-null  float64
 9   season        17414 non-null  float64
dtypes: float64(8), int64(1), object(1)
memory usage: 1.3+ MB

df.drop_duplicates() 
df.isna().sum()

timestamp       0
cnt             0
t1              0
t2              0
hum             0
wind_speed      0
weather_code    0
is_holiday      0
is_weekend      0
season          0
dtype: int64
df.notnull().sum()

timestamp       17414
cnt             17414
t1              17414
t2              17414
hum             17414
wind_speed      17414
weather_code    17414
is_holiday      17414
is_weekend      17414
season          17414
dtype: int64
SeaBorn

This is just a placeholder to help you visualize how the content is displayed in the tabs. Feel free to edit this with your actual content.

Skill
MatPlotlib
Skill
Bokeh

BOKEH

Data Visualization || Bokeh

Mustafa Erdoğan hocamızın anlatımıyla Bokeh ayrıntılarına burada ulaşabilirsiniz.

!pip install bokeh
from bokeh.plotting import figure, show
from bokeh.io import output_notebook

# Jupyter Notebook için çıktıyı ayarlar
output_notebook()

# Veri oluşturma
x = [2, 4, 6, 8, 10]
y = [12, 14, 4, 16, 18]

# Bokeh için bir figure (şekil) oluşturur
p = figure(title='Basit Bir Cizgi Grafigi', x_axis_label='X', y_axis_label='Y')

# Çizgi grafiğini oluşturur
p.line(x, y, legend_label='Cizgi', line_width=2)

# Grafiği gösterir
show(p)

2 – Scatter Grafiği Çizimi

Şimdi, Bokeh kütüphanesini kullanarak basit bir scatter plot grafiği oluşturalım. Oluşan bu scatter grafiğinde grafiği özellşetimek için bazı parametrelerde kullanılmıştır.

# figure ölçülerini kullanarak yeni bir çizim oluşturur
p = figure(width=400, height=400)

# Grafik dışındaki yapılan özelleştirmeler
p.outline_line_width = 7
p.outline_line_alpha = 0.3
p.outline_line_color = "red"

# Veri oluşturma
x = [2, 4, 6, 8, 10]
y = [12, 8, 4, 16, 18]

# Scatter grafiğini oluşturur
r = p.circle(x, y, size=15, line_color="navy", fill_color="orange", fill_alpha=0.5)

# Grafiği gösterir
show(p)

Scatter grafiğini dilerseniz daireler ile değil kareler kullanaraktan yapabilirsiniz.

# figure ölçülerini kullanarak yeni bir çizim oluştur
p = figure(width=500, height=500)

# Grafik dışındaki yapılan özelleştirmeler
p.outline_line_width = 7
p.outline_line_alpha = 0.3
p.outline_line_color = "purple"

# Veri oluşturma
x = [2, 4, 6, 8, 10]
y = [12, 8, 4, 16, 18]
# Scatter Plot grafiğini oluştur opsiyonel olarak size, color, alpha gir
p.square(x, y, size=[10, 15, 20, 25, 30], line_color="black", color="green", alpha=0.9)

# Grafiği gösterir
show(p)

3 – Grafik Üzerinde Stil ve Düzenleme Yapma

Bokeh, grafiğinizi özelleştirmek için birçok seçenek sunmaktadır. Örneğin, akses etiketlerini, başlığı, çizgi kalınlığını ve renklerini ayarlayabilirsiniz.

# Veri oluşturma
x = [2, 4, 6, 8, 10]
y = [12, 14, 4, 16, 18]

# Çizgi grafiğini oluşturur
p.line(x, y, legend_label='Cizgi', line_width=6, line_color = 'red')

p.title.text = 'Yeni Baslık'
p.xaxis.axis_label = 'Yeni X Ekseni Etiketi'
p.yaxis.axis_label = 'Yeni Y Ekseni Etiketi'

# Grafiği gösterir
show(p)
Ploty
Skill