-
Notifications
You must be signed in to change notification settings - Fork 0
/
Data Science - EML.txt
466 lines (287 loc) · 12 KB
/
Data Science - EML.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
SUPERVISED LEARNING
- disebut supervised karena ada jawaban benarnya, ada labelnya dan juga targetnya
- Regresi --> mencari tren dari data yang numerik --> trend finder
- Classification --> sifatnya categorical; pilih A atau B --> pattern finder
- keyword: prediction
UNSUPERVISED LEARNING
- mencari pola dari sesuatu yang tidak ada status nya
- hanya ada data, tidak ada label
- keyword: recommendation
REINFORCEMENT LEARNING
JUPYTER
opening jupyter via anaconda prompt
- open anaconda prompt
- open folder that is being to be opened
- type >>>jupyter notebook
DOCSTRING
- docstring --> shift + tab
- jika suatu fungsi tidak memunculkan sst ketika di run, maka function itu adalah in place function
SLICING ON THE LIST PRINCIPLE
- inclusive:exclusive
SEJARAH CONDA
sebelumnya python tidak banyak pakai karena kesulitan orang pakai
lalu dibuatlah PyPi untuk mengumpulkan library (marketplace)
lalu muncullah Conda yang merapikan library lebih baik dari PyPi (marketplace)
cara install
- PyPi --> pip install
- Conda --> conda install
kapan pakai pip atau conda? --> selama ada di conda, pakai conda, jika tidak ada baru pakai pypi
cara kerja Conda
1. install Conda (miniconda atau anaconda)
2. default conda adalah membuatkan "base" pada prompt
di dalamnya sudah ada python 3, conda dan bisa ditambahkan (jupyter, nb_conda_)
anaconda adalah all in one (sudah meng cover sekitar 700 libraries)
3. dalam conda bisa dibuat berbagai environment dengan berbagai library yang dapat disesuaikan
4. best practice --> buat environment sendiri setiap kali buat project
5. environment ini bisa dibagikan ke sesama team
6. environment ini bersifat global
7. instal dengan anaconda bisa lama karena solving dan checking conflict sangat lama (cek 700an packages)
8. jupyter diinstal di base dan bisa interact dengan environment lain
best pratice di Conda
- pakai miniconda
- base jangan diisi apa2 kecuali jupyter
- install packages dengan batch installation
- check dengan python check_installation.py
big data
definisi mudah: jika pc sudah tidak kuat maka harus pakai tool big data --> java environment
CONDA CODE
1. Check Environment --> conda env list
Remove Environment --> conda env remove --name nama_env
2. Install package di suatu environment --> conda install --name nama_environment numpy
3. Check list of all libraries --> conda list
4. Check list in the environment --> conda list --name coba_env
5. Connect environment to jupyter --> conda install --name coba_env nb_conda_kernels
6. Other cheatsheets
pip install <nama_package>
pip install <nama_package>==<versi>
pip install -r requirements.txt
conda install <nama_package>
conda install <nama_package>==<versi>
conda create --name <nama_env> <basis>
conda list
conda env list
conda env create -f environment.yml
conda env remove --name <nama_env>
cek env --> conda env list
hapus env --> conda env remove --name coba_env
PANDAS
PAnel DAtaS
DATAFRAME
column = series
TOPICS FOR WRITING
Article 1
Data Type
Article 2
How to set Python tool
MISSING VALUES
1. ask --> tanya yang beri data
2. drop --> dibuang
3. impute --> diisi
df_cereal.rating.transform(lambda x: x/x.sum())
HANDLING CATEGORICAL DATA
1. ordinal encoding & label encoding
- menomori setiap data category
- kelemahannya adalah tidak fair karena ada label dinomori 0 atau 1 atau 2
- efektif dipakai jika label nya menandakan urutan [binary (gender), ranking description (tidak bagus, bagus, sangat bagus)]
2. One Hot Encoding
Binning
data tertentu dikelompokkan dalam suatu kategori supaya polanya terkelompok dan pada
contohny: kategori balita - anak - remaja - dewasa - lansia (yang masing-masing punya range usia)
contohny: pendapatan masyarakat
Plot
numerik - histogram
kategorik - categorical plot
ALGORITHM
KNN
- lazy learning --> just look at the nearest point
Titanic Data
- prediksi apakah penumpang selamat atau tidak dari kecelakaan titanic
-- note
input/feature target/label
X y
-> survived = target; yang lain jadi input
Distance on KNN
- euclidean
- manhattan
- minkowski
MACHINE LEARNING --> Scikit-Learn
DEEP LEARNING --> Keras, Tensorflow, etc
****
Dataset Split
1) Regression --> dataset diacak dulu baru dipisah
Shuffle Split
2) Classification --> pisahkan dulu sesuai kelasnya, baru masing-masing kelas diajak lalu dipisah
Stratified Shuffle Split
****
Improve data --> tuning dan scaling
IMPORT DATA
REVIEW DATA
HANDLE MISSING DATA
SCIKIT LEARN (DATA IN X AND y) --> DECIDE FEATURE AND LABEL
HANDLE OVERFIT
1. data split
2. make multiple scenarios - kfold validation
3. if want to improve
- improve data (scaling)
- improve model (change or tune model)
Training & Testing Data Analogy
- murid belajar untuk mempersiapkan ujian
- murid diberikan PR (train) oleh guru untuk menghadapi ujian (test)
- murid bisa mempelajari PR untuk mencari berbagai strategi yang paling baik untuk mendapatkan nilai yang baik ketika mengerjakan ujian
functions
- value_counts() --> display sum of category in one column
renew and replace existing package
GUIDELINE
1. Installation
- Jupyter
- Conda environment
2. Feature Engineering
- binning
* age binning ===>>> df_titanic.Age = pd.cut(df_titanic.Age, [0, 5, 12, 18, 40, 120], labels=["toddler", "children", "teenager", "adult", "elderly"])
* fare binning ===>>> df_titanic.Fare = pd.cut(df_titanic.Fare, [0, 25, 100, 600], labels=["cheap", "expensive", "executive"])
* # ubah target menjadi biner
df_heart_disease.target = df_heart_disease.target.map(
{0: False,
1: True,
2: True,
3: True,
4: True})
3. EDA --> Part 4 - EDA dan Feature Engineering - KNN
- encoding
4. Tuning & Scaling
** tuning
cari kombinasi parameter mana yang paling baik, contohnya ketika weight class, cari proporsi bobot/proporsi yang paling okay.
** scaling
knn berhubungan dengan jarak
svm berhubungan margin
Linear Regression
- persamaan garis lurus: y = ax + b
- simulasi online dengan geogebra
koefisien regresi harus balance, jika tidak jangan dipakai ke feature importance
Menyelesaikan Klasifikasi dengan Regresi menggunakan sigmoid
Entropy (prinsip dalam fisika) bisa dipakai untuk klasifikasi
MCE adalah loss dalam klasifikasi. --> Mean Cross Entrophy --> MCE membuat tidak ada plateau, karena plateau akan merusak optimizer gradient descent
Algorithm/Algoritma untuk masing-masing Regresi dan Classification
Reg Clf
KNN KNN
SVM SVM
DT DT
XGB XGB
LinReg LogReg
ElasticNet NaiveBayes
Ridge
Rules of Thumb
- Positif selalu lebih sedikit
- Mendeteksi yang lebih sedikit, bukan yang banyak.
- PRINSIP
BALANCE IMBALANCE (Positif sedikit)
1. Akurasi 1. F1 - Score
2. F1 - Score 2. PR Curve
3. ROC Jangan pakai ROC dan Akurasi untuk
4. PR Curve Imbalance Dataset
RF R-squared Score
2. 0.8343293126316038 0.771613632634213 0.8110924735037599 - complete features trial 2
3. 0.8463976595452549 0.7669263260833341 0.8110986436363258 - SOP n LOR omitted
1. 0.8350934581064868 0.7716428721894208 0.8098228727140044 - complete features
RF R-Squared Score
best score
v2. {'algo__max_depth': 80, 'algo__max_features': 0.5577136220482326, 'algo__min_samples_leaf': 5, 'algo__n_estimators': 122}
0.8752626632301754 0.8014859291745058 0.8231099331088619
- cv=3, n_iter=50, random
Annisa
algo - elasticnet
categorical: research, numerical: all
scaling: robust
categorical: research,
cv=3, random
Exam on 29 March 2020
2nd best score
v5. {'algo__n_estimators': 187, 'algo__min_samples_leaf': 6, 'algo__max_features': 0.5, 'algo__max_depth': 65}
0.8659596242653081 0.8009612623374699 0.8265240728123382
- cv=3, n_iter=50, random,
rfparameter = {'algo__n_estimators': range(120,196),
'algo__max_depth': range(40, 80),
'algo__max_features': [0.3, 0.4, 0.5, 0.6, 0.7],
'algo__min_samples_leaf': range(3, 8)}
3rd best score
v1. {'algo__max_depth': 46, 'algo__max_features': 0.4756699028339012, 'algo__min_samples_leaf': 5, 'algo__n_estimators': 196}
0.8741429363364741 0.7980725181410776 0.816984784266618
- cv=4, n_iter=50, random
4th best score
v6. {'algo__max_depth': 46, 'algo__max_features': 0.4756699028339012, 'algo__min_samples_leaf': 5, 'algo__n_estimators': 196}
0.8742090314450554 0.8024970885773269 0.8211592739194714
v7. 0.866323471153701 0.802467079663444 0.8193716221986911
v8. {'algo__max_depth': 46, 'algo__max_features': 0.4756699028339012, 'algo__min_samples_leaf': 5, 'algo__n_estimators': 196}
0.8717781600790467 0.8018660935102457 0.8144866387440773
v3. {'algo__max_depth': 20, 'algo__max_features': 0.3, 'algo__min_samples_leaf': 1, 'algo__n_estimators': 200}
0.9720332515007792 0.8011476590541827 0.7785931250623562
- cv3, grid failed
v4. {'algo__max_depth': 26, 'algo__max_features': 0.3607763076223912, 'algo__min_samples_leaf': 2, 'algo__n_estimators': 141, 'prep__numeric__poly__degree': 1, 'prep__numeric__poly__interaction_only': False}
0.9270383910535411 0.8024904611169057 0.7896314305817781
- cv3, random, poly failed
checking score on https://37194d82.ngrok.io/
manual picking --> coba randomstate nya.
setelah splitting, plot dulu dengan histogram
cek keterwakilan distribusi data train dan test melalui plotting (residual plot)
pelajari semua parameter dari masing-masing algoritma
Workflow 4 Phases
Phase 1: Think Simple: Use AUTOML as benchmark
Phase 2: Feature Engineering --> before it plot the mean score decrease
UNSTRUCTURED DATA
jenis data
1. structured data bentuknya tabel, disebut juga tabular data set
2. unstructured data yang tidak tabular --> data image, text, sinyal, video
bagaimana bisa mempelajari pola unstructured data
step a --> convert dulu unstructured ke structured
step b --> ubah itu jadi tabel dan pakai algoritma yang udah ada
image
- baca image pakai matplotlib, pillow, opencv, scikit-image
1. matplotlib --> a) imread, b) imshow --> ukurannya bisa disesuaikan.
2. PIL --> Image.open() -> array --> ukurannya sesuai image asli.
pixel --> kisaran angka 0-255 --> 0=hitam, 255=putih
int8 --> integer dengan 8-bit sehingga bisa menyimpan informasi sebanyak 2 pangkat 8 --> angka yang disimpan antara -127 sampai 128
unint8 -> integer 8 bit dengan semua angka positif --> angka yang disimpan antara 0 - 255
float --> 0.0=hitam, 1.0=putih
pada konsep RGB, setiap pixel memiliki kombinasi 3 warna RGB
RGB terbagi jadi
R channel G channel B channel
0 - 255 0 - 255 0 - 255
|
v
Colored Image pada 1 pixel
Image Prediction
Image Recognition --> klasifikasi apakah suatu gambar itu kucing, anjing, atau ikan
Object Detection ==> Image Recognition ditambah border box khusus untuk memagari gambarnya
Segmentation --> Object Detection ditambah segmentasi pixel
Image Processing --> bukan prediction, biasanya dipakai setelah proses image prediction lalu dibuat untuk aplikasi filter social media atau mengubah image
strukturisasi data image dengan flattening memiliki kelemahan
- tidak menghandle jika object sama yang ada di lokasi berbeda
- tidak menghandle translation karena pergeseran object mengakibatkan failure
Voice
- dengan spectrogram --> image --> flatten
- audio
tingkat kesulitan --> 1) image, 2) text, 3) audio, 4) audio/video
Text
- penggunaan stopwords harus hati-hati dan bergantung tiap dataset.
- sangat unik untuk tiap dataset dan tidak bisa berlaku general
Basic processing to convert image and text to be Vector
Image --> flattening
Text --> BoW
Karakteristik
BoW: penting tidak penting ga ada karena hanya klasifikasi 0 dan 1
TF-IDF: bisa pembobotan penting tidak penting
Kelemahan--> jika ada kalimat yang salah grammar, maka counting tetap jalan.
contoh: ini adalah pensil & adalah ini pensil akan diencode dengan vector yang sama
solusinya: N-Gram
N-Gram lebih tepat melihat bobot urutan kombinasi tiap kata dengan ukuran simulasi gram.
strukturisasi --> vektorisasi --> encoding
NLP
- Text Classification: spam classifier, sentiment analysis, topic classification, genre classification, intent classification
- Sequence Tagging
- Text 2 Text: machine translation
Machine Learning
RL
semi-supervised
learning to rank
NLU --> extraction (allen nlp -- sequence tagging - NER), intent clf
NLU --> text summarization