Anda di halaman 1dari 17

PROGRAM 1

from sklearn.ensemble import ExtraTreesClassifier


import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv("train.csv")
X = data.iloc[:,0:20] #independent columns
y = data.iloc[:,-1] # pick last column for the target feature
model = ExtraTreesClassifier()
model.fit(X,y)
print(model.feature_importances_) #use inbuilt class
# feature_importances of tree based classifiers
#plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.
columns)
feat_importances.nlargest(5).plot(kind='barh')
plt.show()

Program di atas bertujuan untuk mengevaluasi pentingnya fitur dalam kumpulan data dengan
menggunakan model berbasis pohon bernama `ExtraTreesClassifier` dari pustaka `scikit-learn`.
Mari kita uraikan langkah demi langkah:
1. Impor Pustaka
- `ExtraTreesClassifier` dari `sklearn.ensemble`: Ini adalah model klasifikasi berbasis pohon yang
biasanya digunakan untuk mengevaluasi pentingnya fitur.
- `numpy`: Pustaka untuk komputasi numerik.
- `matplotlib.pyplot`: Pustaka untuk visualisasi data.
- `pandas`: Pustaka untuk manipulasi dan analisis data.
2. Pemuatan Data
- Data diimpor dari file bernama "train.csv" menggunakan `pd.read_csv()`. Kumpulan data ini
tampaknya memiliki 20 fitur independen dan satu fitur target.
3. Pembagian Data
- `X = data.iloc[:,0:20]`: Ini mengambil semua baris dan 20 kolom pertama dari kumpulan data
sebagai fitur independen.
- `y = data.iloc[:,-1]`: Ini mengambil semua baris dan kolom terakhir sebagai fitur target.
4. Pembuatan dan Pelatihan Model
- Model `ExtraTreesClassifier` dibuat dan dilatih menggunakan data `X` dan `y` dengan metode
`fit()`.
5. Evaluasi Pentingnya Fitur
- `model.feature_importances_`: Setelah model dilatih, kita dapat mengevaluasi pentingnya fitur
dengan menggunakan atribut `feature_importances_` dari model. Ini mengembalikan array yang
menunjukkan pentingnya masing-masing fitur dalam kumpulan data.
6. Visualisasi Pentingnya Fitur
- `pd.Series(model.feature_importances_, index=X.columns)`: Ini mengkonversi importansi fitur
menjadi objek Series pandas dengan nama fitur sebagai indeks.
- `feat_importances.nlargest(5).plot(kind='barh')`: Ini mengambil lima fitur terpenting dan
menampilkan mereka dalam bentuk grafik batang horizontal.
- `plt.show()`: Menampilkan grafik.
Jadi, inti dari program ini adalah untuk memuat kumpulan data, melatih model klasifikasi berbasis
pohon, dan kemudian mengevaluasi serta memvisualisasikan pentingnya fitur dalam kumpulan data
tersebut. Evaluasi ini bermanfaat untuk memahami fitur mana yang paling berkontribusi terhadap
keputusan model dan mungkin berguna untuk pemilihan fitur atau rekayasa fitur di masa depan.

Grafik batang horizontal ini menunjukkan pentingnya fitur dalam model klasifikasi yang telah dilatih.
Panjang setiap batang mencerminkan seberapa penting fitur tersebut dalam memprediksi variabel
target.

Berikut adalah penjelasan untuk setiap fitur:

1. int_memory: Ini adalah fitur dengan pentingnya tertinggi dalam model, dengan skor sekitar
0.21. Ini berarti bahwa int_memory memiliki pengaruh terbesar dalam memprediksi variabel
target dibandingkan dengan fitur lainnya.
2. battery_power: Fitur ini memiliki skor penting sekitar 0.19, menunjukkan bahwa
battery_power juga memiliki pengaruh signifikan dalam memprediksi variabel target.
3. clock_speed: Dengan skor penting sekitar 0.16, clock_speed juga berkontribusi signifikan
dalam model.
4. fc: Fitur ini memiliki skor penting sekitar 0.17, menunjukkan bahwa fc juga berkontribusi
dalam memprediksi variabel target.
5. four_g: Meskipun four_g memiliki skor penting yang lebih rendah dibandingkan fitur lainnya
(sekitar 0.15), fitur ini masih berkontribusi dalam model.

Secara keseluruhan, grafik ini memberikan gambaran tentang fitur mana yang paling penting dalam
model klasifikasi Anda dan seberapa besar pengaruh mereka terhadap prediksi variabel target.
PROGRAM 2
import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
data = pd.read_csv("train.csv")
X = data.iloc[:,0:20] #independent columns
y = data.iloc[:,-1] #pick last column for the target feature
#apply SelectKBest class to extract top 5 best features
bestfeatures = SelectKBest(score_func=chi2, k=5)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
scores = pd.concat([dfcolumns,dfscores],axis=1)
scores.columns = ['specs','score']
print(scores.nlargest(5,'score')) #print the 5 best features

Program ini bertujuan untuk menyeleksi fitur-fitur terbaik dari kumpulan data berdasarkan pengujian
chi-kuadrat. Pengujian chi-kuadrat digunakan untuk menentukan apakah ada perbedaan signifikan
antara frekuensi harapan dan frekuensi yang diamati dalam satu atau lebih kategori.

Mari kita uraikan program ini langkah demi langkah:

1. **Impor Pustaka**
- `pandas` dan `numpy`: Digunakan untuk manipulasi data.
- `SelectKBest` dari `sklearn.feature_selection`: Sebuah metode seleksi fitur yang bekerja dengan
memilih sejumlah k fitur terbaik berdasarkan pengujian statistik tertentu.
- `chi2` dari `sklearn.feature_selection`: Ini adalah fungsi pengujian chi-kuadrat yang akan
digunakan bersama dengan `SelectKBest`.

2. **Pemuatan Data**
- Data diimpor dari file "train.csv" dengan menggunakan `pd.read_csv()`. Dari deskripsi
sebelumnya, kita tahu bahwa kumpulan data ini memiliki 20 fitur independen dan satu fitur target.

3. **Pembagian Data**
- `X = data.iloc[:,0:20]`: Mengambil semua baris dan 20 kolom pertama dari kumpulan data sebagai
fitur independen.
- `y = data.iloc[:,-1]`: Mengambil semua baris dan kolom terakhir sebagai fitur target.

4. **Seleksi Fitur**
- `SelectKBest(score_func=chi2, k=5)`: Ini menginisialisasi objek seleksi fitur yang akan
menggunakan pengujian chi-kuadrat untuk mengevaluasi fitur dan memilih 5 fitur terbaik.
- `fit = bestfeatures.fit(X,y)`: Ini melatih selektor fitur pada data `X` dan `y`.

5. **Pembuatan Data Frame dari Hasil**


- `dfscores = pd.DataFrame(fit.scores_)`: Konversi skor dari pengujian chi-kuadrat ke DataFrame.
- `dfcolumns = pd.DataFrame(X.columns)`: Konversi nama kolom ke DataFrame.
- `scores = pd.concat([dfcolumns,dfscores],axis=1)`: Menggabungkan kedua DataFrame tersebut
untuk mendapatkan nama fitur dan skor mereka dalam satu DataFrame.

6. **Menampilkan Fitur Terbaik**


- `print(scores.nlargest(5,'score'))`: Ini menampilkan lima fitur dengan skor chi-kuadrat tertinggi,
yang menunjukkan bahwa mereka mungkin adalah fitur yang paling relevan untuk fitur target.

**Output:**

Output menunjukkan lima fitur terbaik berdasarkan skor chi-kuadrat:


1. `int_memory` dengan skor 20539.050302
2. `battery_power` dengan skor 11058.155685
3. `fc` dengan skor 290.812265
4. `blue` dengan skor 36.976457
5. `dual_sim` dengan skor 36.485969

Dari hasil ini, kita dapat melihat bahwa fitur `int_memory` dan `battery_power` memiliki skor yang
jauh lebih tinggi dibandingkan dengan fitur lainnya, menunjukkan bahwa mereka mungkin memiliki
relevansi yang lebih besar terhadap fitur target.
PROGRAM 3
import pandas as pd

import numpy as np

import seaborn as sns

import matplotlib.pyplot as plt

data = pd.read_csv("train.csv")

X = data.iloc[:,0:20] #independent columns

y = data.iloc[:,-1] # pick last column for the target feature

#get the correlations of each feature in the dataset

correlation_matrix = data.corr()

top_corr_features = correlation_matrix.index

plt.figure(figsize=(20,20))

#plot heat map

g=sns.heatmap(data[top_corr_features].corr(),annot=True,cmap="RdYlGn
")

Kode Python yang Anda berikan adalah untuk menghasilkan sebuah heatmap korelasi dari fitur-fitur
dalam dataset Anda. Heatmap ini memberikan visualisasi grafis dari korelasi antara setiap pasangan
fitur.

Berikut adalah penjelasan langkah demi langkah:

1. Membaca file CSV ‘train.csv’ menggunakan pandas dan membagi data menjadi dua bagian:
X (kolom independen) dan y (kolom target).
2. Menghitung matriks korelasi dari data menggunakan metode .corr() dari pandas
DataFrame.
3. Mengambil indeks dari matriks korelasi, yang merupakan nama fitur.
4. Membuat figur matplotlib dengan ukuran tertentu.
5. Menggunakan seaborn untuk menggambar heatmap dari matriks korelasi. Nilai-nilai korelasi
ditampilkan dalam plot dan skema warna ‘RdYlGn’ digunakan, di mana ‘Rd’ berarti merah
(red), ‘Yl’ berarti kuning (yellow), dan ‘Gn’ berarti hijau (green).

Heatmap yang dihasilkan oleh kode ini berkorelasi dengan gambar yang Anda berikan. Heatmap
tersebut menunjukkan korelasi antara setiap pasangan fitur dalam data Anda, dengan warna yang
mencerminkan nilai korelasi: hijau untuk korelasi positif, merah untuk korelasi negatif, dan kuning
untuk sedikit atau tidak ada korelasi.

Dalam hal ini, fitur-fiturnya adalah “Battery_power”, “Clock_speed”, “Dual_sim”, “Front_camera”,


“4G”, “Touch_screen”, dan “Wifi”. Nilai dalam kotak menunjukkan nilai korelasi antara pasangan
fitur tersebut. Misalnya, kotak di baris “Battery_power” dan kolom “Wifi” memiliki nilai 1,
menunjukkan bahwa ada korelasi positif sempurna antara kedua fitur tersebut.

Harap dicatat bahwa heatmap ini hanya menunjukkan korelasi linier antara fitur. Fitur dengan korelasi
rendah mungkin masih memiliki hubungan non-linier yang signifikan.

PROGRAM 4
threshold = 0.6
#Drop columns with a missing value rate higher than threshold
data = data[data.columns[data.isnull().mean() < threshold]]
#Drop rows with missing value rate higher than threshold
data = data.loc[data.isnull().mean(axis=1) < threshold]
threshold = 0.6
#Drop columns with a missing value rate higher than threshold
data = data[data.columns[data.isnull().mean() < threshold]]
#Drop rows with missing value rate higher than threshold
data = data.loc[data.isnull().mean(axis=1) < threshold]
print(data)
Program ini bertujuan untuk membersihkan kumpulan data dengan menghapus kolom dan baris yang
memiliki tingkat nilai yang hilang (missing values) di atas ambang batas tertentu.
Mari kita uraikan langkah demi langkah:

1. **Pengaturan Ambang Batas (`threshold`)**


- Ambang batas ditetapkan pada 0.6, yang berarti kita ingin menghapus kolom atau baris yang
memiliki 60% atau lebih data yang hilang.
2. **Menghapus Kolom dengan Tingkat Missing Values Tinggi**
- `data[data.columns[data.isnull().mean() < threshold]]`: Ini menghapus kolom yang memiliki rata-
rata nilai yang hilang lebih dari ambang batas. `data.isnull().mean()` menghitung persentase nilai yang
hilang untuk setiap kolom, dan dengan membandingkannya dengan `threshold`, kita dapat memilih
kolom mana yang harus dipertahankan.
3. **Menghapus Baris dengan Tingkat Missing Values Tinggi**
- `data.loc[data.isnull().mean(axis=1) < threshold]`: Ini menghapus baris yang memiliki rata-rata
nilai yang hilang lebih dari ambang batas di sepanjang sumbu horizontal. Dengan kata lain, kita
menghitung persentase nilai yang hilang untuk setiap baris dan membandingkannya dengan
`threshold` untuk memilih baris mana yang harus dipertahankan.
4. **Pengulangan Proses**
- Proses di atas diulangi sekali lagi. Mungkin ini dilakukan untuk memastikan bahwa setelah
menghapus baris, tidak ada kolom tambahan yang sekarang memenuhi kriteria penghapusan, dan
sebaliknya.
**Output:**
Output menampilkan kumpulan data yang telah dibersihkan dari kolom dan baris dengan tingkat
missing values yang tinggi. Berdasarkan output:
- Ada 7 kolom yang tersisa: `battery_power`, `blue`, `clock_speed`, `dual_sim`, `fc`, `four_g`, dan
`int_memory`.
- Ada 2000 baris yang tersisa.
Ini berarti tidak ada baris yang dihapus (karena jumlah baris masih 2000), tetapi beberapa kolom
dengan tingkat missing values yang tinggi mungkin telah dihapus dari kumpulan data asli.

PROGRAM 5
#Filling all missing values with 0
data = data.fillna(0)
#Filling missing values with medians of the columns
data = data.fillna(data.median())
print(data)

Program ini menunjukkan bagaimana mengisi nilai yang hilang (missing values) dalam kumpulan data
dengan menggunakan dua pendekatan berbeda.

Mari kita uraikan langkah demi langkah:

1. **Mengisi Semua Missing Values dengan 0**

- `data = data.fillna(0)`: Fungsi `fillna()` digunakan untuk mengisi nilai yang hilang. Dalam baris ini,
semua missing values dalam kumpulan data diisi dengan nilai 0.

2. **Mengisi Missing Values dengan Median dari Kolom**

- `data = data.fillna(data.median())`: Sekali lagi, fungsi `fillna()` digunakan, tetapi kali ini nilai yang
hilang diisi dengan median dari kolom masing-masing. Median merupakan nilai tengah dalam
distribusi data yang telah diurutkan, dan sering digunakan sebagai pengganti missing values karena ia
kurang sensitif terhadap outlier dibandingkan dengan rata-rata.

**Output:**

Output menampilkan kumpulan data yang sudah diisi missing values-nya. Namun, berdasarkan
output yang diberikan, tampaknya kumpulan data awalnya tidak memiliki missing values atau telah
berhasil diisi dengan 0 pada langkah pertama, sehingga tidak ada perubahan lebih lanjut saat
mencoba mengisi dengan median.

- Ada 7 kolom: `battery_power`, `blue`, `clock_speed`, `dual_sim`, `fc`, `four_g`, dan `int_memory`.

- Ada 2000 baris.

Dalam prakteknya, Anda hanya perlu memilih salah satu pendekatan (isi dengan 0 atau isi dengan
median) sesuai dengan konteks data dan kebutuhan analisis Anda. Memilih keduanya secara
berurutan seperti dalam program ini mungkin tidak umum dilakukan, kecuali jika ada alasan khusus
untuk itu.

PROGRAM 6
#Max fill function for categorical columns
import pandas as pd
data = pd.read_csv("dataset.csv")
data['color'].fillna(data['color'].value_counts().idxmax(),
inplace=True)
print(data)
Program ini menunjukkan cara mengisi nilai yang hilang pada kolom kategorikal dalam kumpulan
data dengan menggunakan moda (nilai yang paling sering muncul) dari kolom tersebut.

Mari kita uraikan langkah demi langkah:

1. **Impor Pustaka dan Pemuatan Data**


- `pandas` diimpor sebagai `pd`.
- Kumpulan data diimpor dari file bernama "dataset.csv" menggunakan `pd.read_csv()`.

2. **Mengisi Missing Values pada Kolom 'color'**


- `data['color'].value_counts()` menghitung berapa kali setiap nilai muncul dalam kolom 'color'.
- `idxmax()` mengembalikan indeks dari nilai maksimum. Dalam konteks ini, itu berarti
mengembalikan nilai kategorikal yang paling sering muncul (moda) dalam kolom 'color'.
- `data['color'].fillna(..., inplace=True)`: Ini mengisi semua missing values dalam kolom 'color'
dengan moda dari kolom tersebut.

**Output:**
Output menampilkan kumpulan data dengan kolom 'index' dan 'color'. Berdasarkan output yang
diberikan:
- Kolom 'color' tidak memiliki missing values.
- Nilai yang paling sering muncul pada kolom 'color' adalah 'red'. Jadi, jika awalnya ada nilai yang
hilang pada kolom 'color', mereka akan diisi dengan 'red'.

Dengan meninjau output, kita dapat melihat bahwa 'red' adalah warna yang paling dominan dalam
kolom 'color', dan semua missing values (jika ada sebelumnya) telah diisi dengan 'red'.

PROGRAM 7
#Dropping the outlier rows with standard deviation
import pandas as pd
data = pd.read_csv("train.csv")
#Dropping the outlier rows with standard deviation
factor = 2
upper_lim = data['battery_power'].mean () +
data['battery_power'].std() * factor
lower_lim = data['battery_power'].mean () -
data['battery_power'].std() * factor
data = data[(data['battery_power'] < upper_lim) &
(data['battery_power'] > lower_lim)]
print(data)

Program ini bertujuan untuk mengidentifikasi dan menghapus baris yang dianggap sebagai outlier
berdasarkan kolom 'battery_power' dengan menggunakan metode deviasi standar.

Mari kita uraikan langkah demi langkah:

1. **Impor Pustaka dan Pemuatan Data**

- `pandas` diimpor sebagai `pd`.

- Kumpulan data diimpor dari file bernama "train.csv" menggunakan `pd.read_csv()`.

2. **Mengidentifikasi Batas Atas dan Bawah untuk Outlier**

- Dalam pendekatan ini, outlier didefinisikan sebagai poin data yang berada di luar batas tertentu
dari mean.
- `upper_lim` dan `lower_lim` didefinisikan sebagai mean ditambah dan dikurangi dengan beberapa
kali deviasi standar (dalam kasus ini, faktornya adalah 2). Sehingga, batas atas dan bawah ini
mencakup sekitar 95.4% dari data jika distribusinya normal.

3. **Menghapus Outlier**

- `data = data[(data['battery_power'] < upper_lim) & (data['battery_power'] > lower_lim)]`: Ini


memfilter kumpulan data untuk hanya menyertakan baris di mana 'battery_power' berada di antara
`lower_lim` dan `upper_lim`.

**Output:**

Output menampilkan kumpulan data yang telah dibersihkan dari outlier pada kolom 'battery_power'.
Namun, berdasarkan output yang diberikan:

- Ada 7 kolom: `battery_power`, `blue`, `clock_speed`, `dual_sim`, `fc`, `four_g`, dan `int_memory`.

- Ada 2000 baris yang tersisa.

Dari output ini, kita dapat menyimpulkan bahwa entah tidak ada outlier yang terdeteksi berdasarkan
definisi yang diberikan, atau kumpulan data yang ditampilkan mungkin tidak menunjukkan semua
baris dan beberapa baris mungkin telah dihapus. Jika kita benar-benar ingin memeriksa jumlah baris
setelah pemrosesan, kita seharusnya mencetak `data.shape[0]` untuk mendapatkan jumlah baris
yang tersisa.

PROGRAM 8
#Dropping the outlier rows with Percentiles
upper_lim = data['battery_power'].quantile(.99)
lower_lim = data['battery_power'].quantile(.01)
data = data[(data['battery_power'] < upper_lim) &
(data['battery_power'] > lower_lim)]
print(data)

Program ini bertujuan untuk mengidentifikasi dan menghapus baris yang dianggap sebagai outlier
berdasarkan kolom 'battery_power' dengan menggunakan metode persentil.

Mari kita uraikan langkah demi langkah:

1. **Mengidentifikasi Batas Atas dan Bawah untuk Outlier Menggunakan Persentil**


- Outlier didefinisikan sebagai poin data yang berada di luar persentil tertentu dari distribusi data.

- `upper_lim` dihitung sebagai persentil ke-99 dari kolom 'battery_power'. Ini berarti bahwa 99%
dari data berada di bawah batas ini.

- `lower_lim` dihitung sebagai persentil ke-1 dari kolom 'battery_power'. Ini berarti bahwa 1% dari
data berada di atas batas ini.

2. **Menghapus Outlier**

- `data = data[(data['battery_power'] < upper_lim) & (data['battery_power'] > lower_lim)]`: Ini


memfilter kumpulan data untuk hanya menyertakan baris di mana 'battery_power' berada di antara
`lower_lim` dan `upper_lim`.

**Output:**

Output menampilkan kumpulan data yang telah dibersihkan dari outlier pada kolom 'battery_power'
berdasarkan metode persentil:

- Ada 7 kolom: `battery_power`, `blue`, `clock_speed`, `dual_sim`, `fc`, `four_g`, dan `int_memory`.

- Ada 1957 baris yang tersisa.

Dari output ini, kita dapat melihat bahwa 43 baris telah dihapus dari kumpulan data asli (karena
sebelumnya ada 2000 baris). Ini berarti 43 baris dianggap sebagai outlier berdasarkan batas persentil
yang didefinisikan.

PROGRAM 9
#Capping the outlier rows with percentiles
upper_lim = data['battery_power'].quantile(.99)
lower_lim = data['battery_power'].quantile(.01)
data.loc[(data['battery_power'] > upper_lim), 'battery_power'] =
upper_lim
data.loc[(data['battery_power'] < lower_lim), 'battery_power'] =
lower_lim
print(data)

Program ini bertujuan untuk membatasi (capping) nilai-nilai pada kolom 'battery_power' yang
dianggap sebagai outlier dengan menggunakan metode persentil.
Mari kita uraikan langkah demi langkah:

1. **Mengidentifikasi Batas Atas dan Bawah untuk Outlier Menggunakan Persentil**

- Seperti sebelumnya, `upper_lim` dihitung sebagai persentil ke-99 dari kolom 'battery_power', dan
`lower_lim` dihitung sebagai persentil ke-1.

2. **Capping Outlier**

- Alih-alih menghapus outlier seperti sebelumnya, kita sekarang membatasi mereka:

- `data.loc[(data['battery_power'] > upper_lim), 'battery_power'] = upper_lim`: Semua nilai di


kolom 'battery_power' yang lebih besar dari `upper_lim` diganti dengan nilai `upper_lim`.

- `data.loc[(data['battery_power'] < lower_lim), 'battery_power'] = lower_lim`: Semua nilai di


kolom 'battery_power' yang lebih kecil dari `lower_lim` diganti dengan nilai `lower_lim`.

**Output:**

Output menampilkan kumpulan data dengan nilai 'battery_power' yang telah dibatasi:

- Ada 7 kolom: `battery_power`, `blue`, `clock_speed`, `dual_sim`, `fc`, `four_g`, dan `int_memory`.

- Ada 1957 baris, yang berarti tidak ada baris yang dihapus dari kumpulan data asli.

Dalam output, semua nilai di kolom 'battery_power' yang sebelumnya dianggap sebagai outlier
sekarang telah diganti dengan batas atas atau batas bawah yang didefinisikan. Ini memastikan bahwa
semua nilai dalam kolom 'battery_power' berada dalam rentang yang didefinisikan oleh persentil ke-
1 dan ke-99.

Pendekatan capping ini berguna jika Anda tidak ingin kehilangan data tetapi juga ingin mengurangi
efek dari outlier.

PROGRAM 10
import pandas as pd
data = pd.read_csv("dataset.csv")
encoded_columns = pd.get_dummies(data['color'])
data = data.join(encoded_columns).drop('color', axis=1)
print(data)
Program ini menunjukkan proses "one-hot encoding" untuk kolom kategorikal 'color' dalam
kumpulan data.

Mari kita uraikan langkah demi langkah:

1. **Impor Pustaka dan Pemuatan Data**

- `pandas` diimpor sebagai `pd`.

- Kumpulan data diimpor dari file bernama "dataset.csv" menggunakan `pd.read_csv()`.

2. **One-Hot Encoding Kolom 'color'**

- `pd.get_dummies(data['color'])`: Fungsi `get_dummies()` dari pandas digunakan untuk melakukan


one-hot encoding. Ini mengembalikan DataFrame baru di mana setiap nilai unik dalam kolom 'color'
menjadi kolom baru, dan setiap baris memiliki nilai True atau False tergantung pada nilai asli kolom
'color'.

3. **Menggabungkan Kolom yang Di-encode ke DataFrame Asli dan Menghapus Kolom 'color'**

- `data.join(encoded_columns)`: Ini menggabungkan kolom-kolom yang di-encode ke DataFrame


asli.

- `.drop('color', axis=1)`: Ini menghapus kolom 'color' dari DataFrame yang telah diperbarui.

**Output:**

Output menampilkan kumpulan data dengan kolom 'color' yang telah diubah menjadi kolom-kolom
biner berdasarkan one-hot encoding:

- Kolom 'index' menunjukkan indeks dari setiap baris.

- Ada 6 kolom baru yang mewakili setiap warna yang ada dalam kolom 'color' awal: `black`, `green`,
`purple`, `red`, `white`, dan `yellow`.

- Setiap baris memiliki nilai `True` atau `False` untuk setiap kolom warna, menunjukkan warna asli
dari kolom 'color'. Misalnya, baris pertama memiliki nilai `True` hanya untuk kolom `green`, yang
berarti warna aslinya adalah hijau.

Dengan one-hot encoding, data kategorikal diubah menjadi format yang lebih mudah dianalisis dan
dapat diterima oleh banyak algoritma machine learning.

PROGRAM 11
#Log Transform Example
data = pd.DataFrame({'value':[3,67, -17, 44, 37, 3, 31, -38]})
data['log+1'] = (data['value']+1).transform(np.log)
#Negative Values Handling
#Note that the values are different
data['log'] = (data['value']-data['value'].min()
+1) .transform(np.log)

print(data)Program ini menunjukkan cara melakukan transformasi logaritmik pada suatu kolom
dalam DataFrame, serta bagaimana menangani nilai negatif saat melakukan transformasi logaritmik.

Mari kita uraikan langkah demi langkah:

1. **Pembuatan DataFrame**

- DataFrame `data` dibuat dengan satu kolom bernama 'value' yang berisi sejumlah nilai, termasuk
beberapa nilai negatif.

2. **Transformasi Logaritmik Menggunakan `log+1`**

- Kolom baru, 'log+1', dibuat dengan menambahkan 1 ke setiap nilai dalam kolom 'value' dan
kemudian mengambil logaritma natural dari hasilnya menggunakan `transform(np.log)`.

- Penambahan 1 sebelum mengambil logaritma adalah pendekatan umum untuk menangani nilai 0
dalam data karena logaritma dari 0 tidak terdefinisi.

3. **Menangani Nilai Negatif Saat Melakukan Transformasi Logaritmik**

- Kolom baru, 'log', dibuat dengan mengurangkan nilai minimum dari kolom 'value' dari setiap nilai
di kolom tersebut, menambahkan 1, dan kemudian mengambil logaritma natural.

- Tujuan dari pendekatan ini adalah untuk menggeser semua nilai dalam kolom 'value' sehingga
menjadi positif, sehingga kita dapat mengambil logaritma dari mereka tanpa menghasilkan nilai yang
tidak terdefinisi.

**Output:**

Output menampilkan DataFrame `data` dengan kolom 'value', 'log+1', dan 'log':

- Kolom 'value' menunjukkan nilai asli.


- Kolom 'log+1' menunjukkan hasil transformasi logaritmik dengan menambahkan 1 ke setiap nilai.
Untuk nilai negatif, hasilnya adalah NaN (Not a Number) karena logaritma dari nilai negatif tidak
terdefinisi.

- Kolom 'log' menunjukkan hasil transformasi logaritmik setelah menggeser semua nilai menjadi
positif. Tidak ada nilai NaN dalam kolom ini karena semua nilai telah digeser menjadi positif sebelum
transformasi.

Transformasi logaritmik adalah teknik yang sering digunakan dalam analisis data untuk mengubah
distribusi data yang skew (miring) menjadi lebih mendekati distribusi normal. Namun, perlu diingat
bahwa logaritma dari angka negatif atau nol tidak terdefinisi, sehingga kita harus menggunakan
pendekatan tertentu untuk menangani kasus-kasus tersebut, seperti yang ditunjukkan dalam
program ini.

PROGRAM 12
data = pd.DataFrame({'value':[7,25, -47, 73, 8, 22, 53, -25]})
data['normalized'] = (data['value'] - data['value'].min()) /
(data['value'].max() - data['value'].min())

print(data)Program ini menunjukkan cara melakukan normalisasi pada suatu kolom dalam
DataFrame menggunakan metode Min-Max Normalization.

Mari kita uraikan langkah demi langkah:

1. **Pembuatan DataFrame**

- DataFrame `data` dibuat dengan satu kolom bernama 'value' yang berisi sejumlah nilai, termasuk
beberapa nilai negatif.

2. **Min-Max Normalization**

- Kolom baru, 'normalized', dibuat dengan menggunakan formula Min-Max Normalization:

\[

\text{normalized} = \frac{\text{value} - \text{min(value)}}{\text{max(value)} - \text{min(value)}}

\]

- Dengan kata lain, setiap nilai dalam kolom 'value' dikurangi dengan nilai minimum dari kolom
tersebut dan dibagi dengan rentang (maksimum dikurangi minimum) dari kolom tersebut.

**Output:**
Output menampilkan DataFrame `data` dengan kolom 'value' dan 'normalized':

- Kolom 'value' menunjukkan nilai asli.

- Kolom 'normalized' menunjukkan nilai yang telah dinormalisasi ke rentang [0,1] dengan
menggunakan metode Min-Max Normalization.

Dengan melihat output:

- Nilai minimum dari kolom 'value', yaitu -47, menjadi 0 setelah normalisasi.

- Nilai maksimum dari kolom 'value', yaitu 73, menjadi 1 setelah normalisasi.

- Semua nilai lainnya dinormalisasi ke rentang [0,1] berdasarkan posisi relatif mereka antara nilai
minimum dan maksimum.

Min-Max Normalization adalah teknik yang sering digunakan dalam analisis data dan pemrosesan
awal sebelum menerapkan algoritma machine learning untuk mengubah fitur ke skala yang sama. Ini
membantu dalam konvergensi yang lebih cepat dan dapat meningkatkan kinerja beberapa algoritma.

PROGRAM 13
data = pd.DataFrame({'value':[7,25, -47, 73, 8, 22, 53, -25]})
data['standardized'] = (data['value'] - data['value'].mean()) /
data['value'].std()
print(data)

Program ini menunjukkan cara melakukan standarisasi pada suatu kolom dalam DataFrame
menggunakan metode Z-Score Standardization (atau dikenal juga sebagai Zero-Mean Normalization).

Mari kita uraikan langkah demi langkah:

1. **Pembuatan DataFrame**

- DataFrame `data` dibuat dengan satu kolom bernama 'value' yang berisi sejumlah nilai, termasuk
beberapa nilai negatif.

2. **Z-Score Standardization**

- Kolom baru, 'standardized', dibuat dengan menggunakan formula Z-Score:

\[

\text{standardized} = \frac{\text{value} - \text{mean(value)}}{\text{std(value)}}

\]
- Di sini, setiap nilai dalam kolom 'value' dikurangi dengan rata-rata (mean) dari kolom tersebut dan
kemudian dibagi dengan deviasi standar (std) dari kolom tersebut.

**Output:**

Output menampilkan DataFrame `data` dengan kolom 'value' dan 'standardized':

- Kolom 'value' menunjukkan nilai asli.

- Kolom 'standardized' menunjukkan nilai yang telah distandarisasi menggunakan metode Z-Score.

Dengan melihat output:

- Nilai dengan standarisasi mendekati 0 berarti nilai tersebut mendekati rata-rata kolom 'value'.

- Nilai dengan standarisasi positif berarti nilai tersebut di atas rata-rata kolom 'value', dan sebaliknya
untuk nilai dengan standarisasi negatif.

- Nilai dengan standarisasi lebih dari 1 atau kurang dari -1 menunjukkan bahwa nilai tersebut lebih
dari satu deviasi standar dari rata-rata.

Z-Score Standardization adalah teknik yang sering digunakan dalam analisis data dan pemrosesan
awal sebelum menerapkan algoritma machine learning. Teknik ini mengubah fitur sehingga memiliki
rata-rata 0 dan deviasi standar 1, yang dapat membantu dalam konvergensi yang lebih cepat dan
meningkatkan kinerja beberapa algoritma.

Anda mungkin juga menyukai