# Praktikum 2

## Seleksi Fitur

Pada tahap ini kita akan memilih variabel mana saja yang akan kita gunakan sebagai fitur. Pada bagian dasar teori, kita sudah mempelajari bahwa tidak selalu semua variabel dapat digunakan sebagai fitur. Oleh karena itu, kita dapat memilih fitur yang sekiranya penting untuk tujuan yang ingin kita capai dalam membuat model pembelajaran mesin. Kita akan menggunakan kasus yang sama, yaitu kita kita mengetahui ciri-ciri penumpang kapal Titanic yang selamat. Sehingga, fitur yang kita gunakan adalah,

1. "**Survived**"
2. "**Pclass**"
3. "**Sex**"
4. "**Age**"
5. "**Cabin**"

Kita akan memisahkan variabel-variabel tersebut dari variabel yang lain.

Data yang akan kita gunakan adalah data Titanic yang sudah diperbaiki dengan proses imputasi.

:arrow\_down: **Download** :arrow\_down:

{% file src="<https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FkxFyYw02z3kTMz1ZPgyU%2FTitanic-Dataset-fixed.csv?alt=media&token=79534cd0-6428-4192-b147-6435401209ab>" %}

### Langkah 0 - Load Library

```python
import pandas as pd
from sklearn.preprocessing import LabelEncoder, StandardScaler
```

### Langkah 1 - Load Data

```python
dpath = 'data/Titanic-Dataset-fixed.csv'
df = pd.read_csv(dpath)
df.head()
```

### Langkah 2 - Slice Data

Pilih variabel yang kita anggap sebagai fitur

```python
df = df[['Survived', 'Pclass', 'Age', 'Sex', 'Cabin']]
df.head()
```

Hasilnya

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FMf5uADnAVlZsaO4llrbB%2Fslice_featarue.png?alt=media&#x26;token=4468b029-e2c0-461a-b117-8e98f7914411" alt=""><figcaption><p>Hasil Slice Fitur</p></figcaption></figure>

### Langkah 3 - Encoding

Kita akan melakukan encoding pada data-data kategorikal, yaitu "Sex" dan "Cabin". Langkah ini perlu dilakukan karena algoritma pembelajaran mesin melakukan proses kalkulasi secara matematis. Strategi yang kita gunakan adalah **Label Encoding**. Label Encoding serupa dengan Ordinal Encoding, bedanya hanya pada proses pengurutan. Label Encoding tidak mengurutkan data terlebih dahulu.

```python
le = LabelEncoder() # membuat objek dari LabelEncoder
df['Sex'] = le.fit_transform(df['Sex']) # proses encoding
df['Cabin'] = le.fit_transform(df['Cabin']) # proses encoding
```

### Langkah 4 - Verifikasi Hasil

Cek kembali dengan `df.head()`. Hasilnya akan seperti pada Gambar dibawah ini.

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FGIDuujpa9wYyGvXUnvpW%2Fencoded.png?alt=media&#x26;token=22021739-019a-4a27-a8e2-ba9f95b75912" alt=""><figcaption><p>Hasil Encoding</p></figcaption></figure>

### Langkah 5 - Standarisasi

Pada tahapan ini kita akan melakukan standarisasi pada "Age". **Hal ini sebetulnya tidak terlalu diperlukan karena nilai pada "Age" tidak terlalu jauh.** Tujuan dari langkah ini adalah untuk demonstrasi proses standarisasi.

```python
std = StandardScaler()
df['Age'] = std.fit_transform(df[['Age']])
```

### Langkah 6 - Verifikasi Hasil Standarisasi

Cek kembali dengan `df.head()`. Hasilnya akan seperti pada Gambar dibawah ini.

<figure><img src="https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FJPjRm4p0eL9sKSrnBmBZ%2Fscaler.png?alt=media&#x26;token=40f1faa0-6ef6-4702-8e41-13225ef6e000" alt=""><figcaption><p>Hasil Standarisasi</p></figcaption></figure>

## Kode Lengkap

{% file src="<https://1473714265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhh7WzzoZbeFX9VC0bZSU%2Fuploads%2FS3Mjp2PHQ0YnJgB6CrET%2Fmodul02_2.ipynb?alt=media&token=0f513539-60a3-4464-b0b0-60b66fbbf718>" %}
