Cara menggunakan distance correlation python pandas

Exploratory Data Analysis [EDA] dengan Python

Explorasi dan analysis untuk menyeleksi features sebelum dilakukan modeling

Photo by Franki Chamaki on Unsplash

Exploratory Data Analysis [EDA] adalah suatu porses dalam melakukan inspeksi/investigasi awal pada data untuk menemukan pola dan anomali, serta untuk menguji hipotesis dan untuk memeriksa asumsi dengan bantuan ringkasan statistik dan representasi visualisasi grafis.

Dengan melakukan EDA, kita dapat lebih memahami kondisi dataset yang kita miliki. Sehingga, kita dapat memulai menyeleksi features yang tidak berpengaruh dalam pembentukan model Machine Learning.

Pada kasus ini, kita akan melakukan eksplorasi untuk melihat karakteristik pada suatu features tertentu yang dapat digunakan untuk memprediksi harga mobil yang direpresentasikan pada kolom ‘price’.

Dataset yang digunakan adalah “Automobile” yang sudah dibersihkan melalui proses Data Wrangling sebelumnya. Jika belum mengetahui apa itu Data Wrangling, bisa membaca artikel berikut: Data Wrangling/Pre-processing dengan Python

Inspeksi dan Review Data “Automobile”

Melakukan preview dan mengimport dataset yang sudah dibersihkan melalui Data Wrangling sebelumnya.

import pandas as pd
import numpy as np
df = pd.read_csv['//s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv']print[df.head[]]

Menganalisa Pola Features pada Dataset dengan Visualisasi

Kita akan melakukan visualisasi dengan menggunakan library seaborn dan matplotlib. Jika sebelumnya belum pernah menginstall library seaborn bisa menginstall menggunakan pip yang merupakan package manager pada python.

pip install seaborn

Saat ingin memvisualisasikan suatu variabel/features penting untuk mengetahui tipe data dan jenis pola pada variabel tersebut. Sehingga akan membantu Kita untuk menemukan metode visualisasi yang paling tepat untuk variabel tersebut.

Salah satu cara untuk melihat pola adalah dengan menghitung korelasi antar variabel. Korelasi hanya dapat dihitung untuk variabel yang bertipe numerik, seperti variabel bertipe data int64 dan float64.

Pertama mari Kita cek tipe data dan korelasi antar variabel. Menggunakan method dataframe.corr[] kita bisa mengetahui nilai korelasinya, secara default method ini aplikasi dari perhitungan Pearson Correlation.

print[df.dtypes]

print[df.corr[]]

1. Continuous numerical variables

Continuous numerical variables adalah variabel linear numerik yang memiliki rentang nilai tertentu. Variabel ini biasanya memiliki tipe data int64 atau float64. Visualisasi yang sangat cocok untuk variabel ini adalah scatter-plot dengan penambahan trend-line.

  • Untuk features “engine-size” dengan target “price” memiliki hubungan positive correlation yang kuat.
import matplotlib.pyplot as plt
import seaborn as sns
# Engine-size berpotensi sebagai variabel predictor terhadap price
sns.regplot[x="engine-size", y="price", data=df]
plt.ylim[0,]
plt.show[]
print[df[["engine-size", "price"]].corr[]]

  • Untuk features “highway-mpg” dengan target “price” memiliki hubungan negative correlation yang kuat.
# Highway-mpg berpotensi sebagai variabel predictor terhadap price
sns.regplot[x="highway-mpg", y="price", data=df]
plt.ylim[0,]
plt.show[]
print[df[["highway-mpg", "price"]].corr[]]

  • Untuk features “peak-rpm” dengan target “price” memiliki hubungan negative correlation yang lemah.
# Peak-rpm tidak cocok sebagai variabel predictor terhadap price
sns.regplot[x="peak-rpm", y="price", data=df]
plt.ylim[0,]
plt.show[]
print[df[["peak-rpm", "price"]].corr[]]

  • Untuk features “stroke” dengan target “price” memiliki hubungan positive correlation yang lemah.
# Stroke tidak cocok sebagai variabel predictor terhadap price
sns.regplot[x="stroke", y="price", data=df]
plt.ylim[0,]
plt.show[]
print[df[["stroke", "price"]].corr[]]

2. Categorical variables

Suatu variabel yang memiliki beberapa kelompok kategori dimana setiap kategorinya menggambarkan karakteristik dari target data, dalam kasus ini yaitu “price”. Variabel ini biasanya memiliki tipe data int64 atau object. Visualisasi yang sangat cocok untuk variabel ini adalah box-plot yang menggambarkan persebaran data terhadap variabel target.

  • Mari kita lihat persebaran data “body-style” terhadap “price”.
sns.boxplot[x="body-style", y="price", data=df]
plt.show[]

Kita lihat distribusi “price” terhadap kategori dari variabel “body-style” tidak terlalu menujukan persebaran yang signifikan dan cenderung tumpang tindih. Sehingga “body-style” tidak akan menjadi variabel prediktor yang baik terhadap target “price”.

  • Mari kita lihat persebaran data “engine-location” terhadap “price”.
sns.boxplot[x="engine-location", y="price", data=df]
plt.show[]

Dapat terlihat bahwa distribusi “price” terhadap 2 kategori “engine-location”, yaitu front dan rear cukup berbeda. Sehingga variabel “engine-location” dapat dijadikan sebagai prediktor dari target “price”.

  • Mari kita lihat persebaran data “drive-wheels” terhadap “price”.
pip install seaborn
0

Pada visualisasi diatas dapat terlihat bahwa distribusi “price” terhadap 2 kategori “drive-wheels”, yaitu rwd dan fwd cukup berbeda tetapi kategori fwd dan 4wd tidak terlalu berbeda. Variabel “drive-wheels” tetap cukup cocok untuk dijadikan prediktor target “price” karena menunjukan perbedaan pada kategori rwd dan fwd.

3. Descriptive Analysis Statistik

Fungsi pendekatan ini adalah untuk mendeskripsikan perhitungan statistik dasar untuk semua variabel continuous, seperti:
1. count
2. mean
3. standard deviation [std]
4. nilai minimum
5. IQR [Interquartile Range: 25%, 50% and 75%]
6. nilai maximum

Kita dapat menggunakan method dataframe.describe[] untuk melihat pendekatan ini.

pip install seaborn
1

Secara default yang akan ditampilkan hanya variabel numerik yang bertipe int64 dan float64. Apabila ingin melihat analisis statistik dasar untuk data yang bertipe object, kita bisa menambahkan parameter “include” yang diisi dengan ‘object’.

pip install seaborn
2

4. Value Counts

Value-counts adalah salah satu cara pendekatan lainnya untuk mengetahui berapa banyak unit data dari setiap karakteristik variabel yang dimiliki.

Pada pandas, method value_counts[] hanya bisa digunakan untuk “Pandas Series” [atau suatu dataframe yang hanya diambil 1 kolom variabel saja] dan tidak dapat digunakan untuk “Pandas Dataframe”.

  • Drive-wheels sebagai variabel
pip install seaborn
3

  • Engine-locations sebagai variabel
pip install seaborn
4

Dari hasil value counts, “engine-locations” tidak cocok sebagai variabel prediktor untuk target “price”. Karena jumlah data antara kategori front dan rear terlalu tidak seimbang yaitu 198 berbanding 3.

5. Groupby dan Aggregation

Fungsi dari method groupby adalah untuk mengelompokan data menurut kategori yang berbeda. Data dikelompokan berdasarkan satu atau beberapa features/variabel, kemudian dilakukan perhitungan aggregasi [seperti: sum[], count[], mean[], median[] dll] pada kelompok tersebut.

Misalnya variabel “drive-wheels” memiliki 3 kategori yang berbeda. Kemudian kita akan mencari nilai rata-rata “price” terhadap “drive-wheels” pada setiap kategori yang dimiliki. Maka hasil perhitungannya adalah sebagai berikut:

pip install seaborn
5

Dari hasil diatas “drive-wheels” dengan kategori rwd memiliki rata-rata “price” paling mahal. Sedangkan untuk kategori fwd dan 4wd memiliki hasil rata-rata “price” yang kurang lebih sama.

Kita juga dapat melakukan groupby dengan banyak variabel. Misalnya kita akan melakukan groupby berdasarkan variabel “drive-wheels” dan “body-style”. Kemudian melakukan agregasi mean pada variabel target “price”.

pip install seaborn
6

Data yang sudah dikelompokan ini lebih mudah divisualisasikan saat dibuat menjadi Pivot Table. Kita dapat mengubah dataframe menjadi Pivot Table menggunakan method “pivot” untuk membuat Pivot Table dari grup diatas.

Dalam hal ini, “drive-wheels” akan diatur sebagai indeks tabel dan “body-style” menjadi kolom tabel.

pip install seaborn
7

Seringkali data pada pada cell Pivot Table kita memiliki missing value. Hal ini karena pada dataset kita tidak memiliki data dengan kriteria kelompok tersebut. Kita dapat mengisi nilai missing value ini dengan nilai 0.

pip install seaborn
8

Mari kita visualisasikan hasil hubungan “drive-wheels” dan “body-style” terhadap “price” pada dataframe grouped_pivot diatas menggunakan heatmap.

pip install seaborn
9

Secara default, heatmap memplot variable target “price” menjadi warna proporsional sesuai dengan variabel “drive-wheels” dan “body-style” pada sumbu vertikal dan horizontal. Visualisasi ini dapat memberi informasi bagaimana rata-rata “price” terhadap “drive-wheels” dan “body-style”.

Karena default visualisasi kurang memberi informasi, maka mari kita setel sendiri agar visualisasi lebih informatif.

print[df.dtypes]
0

6. Correlation and Causation

Correlation adalah ukuran sejauh mana dua variabel saling ketergantungan.
Causation adalah hubungan antara sebab dan akibat antara dua variabel.

Sangat penting untuk mengetahui perbedaan dua hal tersebut dan korelasi tidak berarti sebab-akibat. Menentukan correlation jauh lebih sederhana daripada menentukan causation karena causation mungkin memerlukan eksperimen yang independen.

Pearson Correlation
Pearson correlation mengukur ketergantungan linear antara dua variabel x dan y. Koefisien yang dihasilkan adalah antara -1 dan +1, dimana:

  • 1: Positif korelasi linear kuat.
  • 0: Tidak ada korelasi linear, kedua variabel kemungkinan besar tidak saling mempengaruhi.
  • -1: Negatif korelasi linear kuat.

Korelasi Pearson dapat dihitung menggunakan method default dari dataframe.corr[]. Seperti sebelumnya, kita dapat menghitung Korelasi Pearson dari variabel bertipe 'int64' atau 'float64'.

print[df.dtypes]
1

Terkadang kita juga ingin mengetahui signifikansi estimasi dari korelasi. Kita dapat mengetahui signifikansi korelasi melalui hasil perhitungan dari P-value.

P-value
P-value adalah nilai probabilitas yang menunjukan bahwa korelasi antara dua variabel tersebut signifikan secara statistik. Biasanya jika nilai p-value 0.1: tidak ada bukti bahwa korelasi tersebut signifikan.

Kita akan melihat seberapa kuat korelasi variabel pada features terhadap target “price” tersebut signifikan.

  • Variabel “wheel-base” terhadap “price”
print[df.dtypes]
2

Karena p-value

Bài mới nhất

Chủ Đề