Membuat dataset sintetis dengan scikit-learn

Privasi Data dan Anonimisasi di Python

Rebeca Gonzalez

Data engineer

Membuat dataset dengan Scikit-learn

  • Kita dapat membuat dataset yang diambil dari distribusi probabilitas

  • Misalnya distribusi normal

Representasi histogram berdistribusi normal

Privasi Data dan Anonimisasi di Python

Distribusi normal

Sering muncul di alam

  • Tinggi badan
  • Tekanan darah
  • Skor IQ

Histogram nilai tinggi badan dari dataset besar yang mengikuti distribusi normal

Privasi Data dan Anonimisasi di Python

Sampel dari distribusi normal

import numpy as np


# Buat DataFrame pandas baru new_measures = pd.DataFrame()
# Pilih nilai mean/pusat dan simpangan baku sampel mean = 65 standard_deviation = 2
# Hasilkan sampel new_measures['Height'] = np.random.normal(mean, standard_deviation, 10000)
Privasi Data dan Anonimisasi di Python

Sampel dari distribusi normal

# Gambar histogram untuk melihat distribusi tinggi yang dihasilkan
new_measures['Height'].hist(bins=50)

Histogram data yang dihasilkan

Privasi Data dan Anonimisasi di Python

Membuat dataset dengan scikit-learn

Scikit-learn memiliki fungsi sederhana untuk membuat dataset guna:

  • Klasifikasi
  • Klasterisasi
  • Regresi
Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasifikasi dan klasterisasi

make_classification()

  • Mengalokasikan klaster titik berdistribusi normal
  • Dapat membuat fitur berkorelasi dan tidak informatif

make_blobs()

  • Kontrol lebih pada titik pusat dan simpangan baku klaster
Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasifikasi

# Import make_classification dari modul datasets sklearn
from sklearn.datasets import make_classification


# Hasilkan sampel dan labelnya x, y = make_classification(n_samples=1000,
n_classes=2,
n_informative=2,
n_features=4,
n_clusters_per_class=2,
class_sep=1)
Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasifikasi

# Lihat data dan label yang dihasilkan
print(x.shape)
print(y.shape)
print(x)
(1000, 4)
(1000,)
[[ 1.22914870e+00 -2.62386795e+00  2.25878743e+00  2.55377055e+00]
 [-1.10279812e+00 -1.15816087e+00  1.55571279e+00  7.80565898e-02]
 [ 2.65581977e-03 -2.33278818e+00  2.37837858e+00  1.57533194e+00]
 ...
 [ 4.51006972e-01  7.53435745e-01 -9.21597108e-01 -2.20659747e-01]
 [ 5.31925876e-01  7.42210504e-01 -9.37625248e-01 -1.61488855e-01]
 [ 1.62862108e+00 -2.72435345e+00  2.22562940e+00  2.87628246e+00]]
Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasifikasi

Plot titik data pada dataset 2 kelas yang dihasilkan

Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasifikasi

Tiga plot yang menunjukkan dataset yang dihasilkan dan titik datanya dengan nilai class_sep berbeda. Kiri: titik sangat berdekatan; kanan: titik sangat terpisah

Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasterisasi

# Impor modul datasets untuk membuat dataset klasterisasi
from sklearn.datasets import make_blobs


# Tentukan nilai simpangan baku standard_deviation = 1.5
# Hasilkan data dan label dataset x, labels = make_blobs(n_features=3, centers=4, cluster_std=standard_deviation)
# Lihat bentuk data yang dihasilkan print(x.shape)
(100, 3)
Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasterisasi

Plot menunjukkan titik data klasterisasi, satu warna per klaster. 4 pusat untuk 4 klaster.

Privasi Data dan Anonimisasi di Python

Data sintetis untuk klasterisasi

Tiga plot yang menunjukkan dampak simpangan baku pada titik data yang dihasilkan. Kiri: klaster dekat pusat; kanan: titik sangat menyebar.

Privasi Data dan Anonimisasi di Python

Ayo berlatih!

Privasi Data dan Anonimisasi di Python

Preparing Video For Download...