Tuesday, April 28, 2020

Regression Logistic (Regresi Logistik)

1:17 PM
Secara umum, regresi logistik biner menggambarkan hubungan antara variabel dependen biner dan satu atau lebih variabel independen.
Variabel dependen biner memiliki dua hasil yang mungkin:
·         ‘1’ untuk benar / sukses; atau
·         ‘0’ untuk false / kegagalan
Sekarang mari kita lihat bagaimana menerapkan regresi logistik di Python menggunakan contoh praktis.

Langkah-langkah untuk Menerapkan Regresi Logistik dengan Python

Langkah 1: Kumpulkan data Anda
Untuk memulai dengan contoh sederhana, katakanlah tujuan Anda adalah untuk membangun model regresi logistik dengan Python untuk menentukan apakah kandidat akan diterima di universitas bergengsi.
Di sini, ada dua hasil yang mungkin: Diterima (diwakili oleh nilai '1') vs Ditolak (diwakili oleh nilai '0').
Anda kemudian membangun regresi logistik dengan Python, di mana:
·         Variabel dependen menunjukkan apakah seseorang diterima
·         3 variabel independen adalah skor GMAT, IPK dan Tahun pengalaman kerja

Berikut tampilan dataset-nya:
Perhatikan bahwa dataset di atas berisi 40 pengamatan. Dalam praktiknya, Anda akan membutuhkan ukuran sampel yang lebih besar untuk mendapatkan hasil yang lebih akurat.


Langkah 2: Impor paket Python yang dibutuhkan
Sebelum Anda mulai, pastikan bahwa paket-paket berikut ini diinstal dengan Python:
·         pandas - digunakan untuk membuat DataFrame untuk menangkap dataset dengan Python
·         sklearn - digunakan untuk membangun model regresi logistik dengan Python
·         seaborn - digunakan untuk membuat Confusion Matrix
·         matplotlib - digunakan untuk menampilkan grafik
Kemudian impor semua paket yang dibutuhkan, sebagai berikut:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import seaborn as sn
import matplotlib.pyplot as plt

Langkah 3: Bangun Dataframe
Untuk langkah ini, Anda harus menangkap dataset (dari langkah 1) dengan Python. Anda dapat menyelesaikan tugas ini menggunakan panda Dataframe:
import pandas as pd
candidates = {
'gmat': [780, 750, 690, 710, 680, 730, 690, 720, 740, 690, 610, 690, 710, 680, 770, 610, 580, 650, 540, 590, 620, 600, 550, 550, 570, 670, 660, 580, 650, 660, 640, 620, 660, 660, 680, 650, 670, 580, 590, 690],
'gpa': [4, 3.9, 3.3, 3.7, 3.9, 3.7, 2.3, 3.3, 3.3, 1.7, 2.7, 3.7, 3.7, 3.3, 3.3, 3, 2.7, 3.7, 2.7, 2.3, 3.3, 2, 2.3, 2.7, 3, 3.3, 3.7, 2.3, 3.7, 3.3, 3, 2.7, 4, 3.3, 3.3, 2.3, 2.7, 3.3, 1.7, 3.7],
'work_experience': [3, 4, 3, 5, 4, 6, 1, 4, 5, 1, 3, 5, 6, 4, 3, 1, 4, 6, 2, 3, 2, 1, 4, 1, 2, 6, 4, 2, 6, 5, 1, 2, 4, 6, 5, 1, 2, 1, 4, 5],
'admitted': [1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1]
}
df = pd.DataFrame(candidates, columns = ['gmat', 'gpa', 'work_experience', 'admitted'])
print (df)

    gmat  gpa  work_experience  admitted
0    780  4.0                3         1
1    750  3.9                4         1
2    690  3.3                3         0
3    710  3.7                5         1
4    680  3.9                4         0
5    730  3.7                6         1
6    690  2.3                1         0
7    720  3.3                4         1
8    740  3.3                5         1
9    690  1.7                1         0
10   610  2.7                3         0
11   690  3.7                5         1
12   710  3.7                6         1
13   680  3.3                4         0
14   770  3.3                3         1
15   610  3.0                1         0
16   580  2.7                4         0
17   650  3.7                6         1
18   540  2.7                2         0
19   590  2.3                3         0
20   620  3.3                2         1
21   600  2.0                1         0
22   550  2.3                4         0
23   550  2.7                1         0
24   570  3.0                2         0
25   670  3.3                6         1
26   660  3.7                4         1
27   580  2.3                2         0
28   650  3.7                6         1
29   660  3.3                5         1
30   640  3.0                1         0
31   620  2.7                2         0
32   660  4.0                4         1
33   660  3.3                6         1
34   680  3.3                5         1
35   650  2.3                1         0
36   670  2.7                2         0
37   580  3.3                1         0
38   590  1.7                4         0
39   690  3.7                5         1

Atau, Anda bisa mengimpor data ke Python dari file eksternal.
Langkah 4: Buat regresi logistik dengan Python
Sekarang, atur variabel independen (direpresentasikan sebagai X) dan variabel dependen (direpresentasikan sebagai y):
X = df[['gmat', 'gpa','work_experience']]
y = df['admitted']

Lalu, terapkan train_test_split. Misalnya, Anda dapat mengatur ukuran tes ke 0,25, dan karena itu pengujian model akan didasarkan pada 25% dari dataset, sedangkan pelatihan model akan didasarkan pada 75% dari dataset:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

Terapkan regresi logistik sebagai berikut:
logistic_regression = LogisticRegression(solver='liblinear')
logistic_regression.fit(X_train, y_train)
y_pred = logistic_regression.predict(X_test)

Kemudian, gunakan kode di bawah ini untuk mendapatkan Confusion Matrix:
confusion_matrix = pd.crosstab(y_test, y_pred, rownames=['Actual'], colnames=['Predicted'])
sn.heatmap(confusion_matrix, annot=True)

Untuk bagian terakhir, cetak Akurasi dan plot Confusion Matrix:
print('Accuracy: ', metrics.accuracy_score(y_test, y_pred))
plt.show()

Menyatukan semua komponen kode:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import seaborn as sn
import matplotlib.pyplot as plt

candidates = {

'gmat':[780,750,690,710,680,730,690,720,740,690,610,690,710,680,770,610,580,650,540,590,620,600,550,550,570,670,660,580,650,660,640,620,660,660,680,650,670,580,590,690],

'gpa':[4,3.9,3.3,3.7,3.9,3.7,2.3,3.3,3.3,1.7,2.7,3.7,3.7,3.3,3.3,3,2.7,3.7,2.7,2.3,3.3,2,2.3,2.7,3,3.3,3.7,2.3,3.7,3.3,3,2.7,4,3.3,3.3,2.3,2.7,3.3,1.7,3.7],

'work_experience':[3,4,3,5,4,6,1,4,5,1,3,5,6,4,3,1,4,6,2,3,2,1,4,1,2,6,4,2,6,5,1,2,4,6,5,1,2,1,4,5],

'admitted':[1,1,0,1,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1]
}

df = pd.DataFrame(candidates,columns= ['gmat', 'gpa','work_experience','admitted'])

#print (df)

X = df[['gmat', 'gpa','work_experience']]
y = df['admitted']

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=0)

logistic_regression= LogisticRegression(solver='liblinear')
logistic_regression.fit(X_train,y_train)
y_pred=logistic_regression.predict(X_test)

confusion_matrix = pd.crosstab(y_test, y_pred, rownames=['Actual'], colnames=['Predicted'])
sn.heatmap(confusion_matrix, annot=True)

print('Accuracy: ',metrics.accuracy_score(y_test, y_pred))
plt.show()

Jalankan kode dengan Python, dan Anda akan mendapatkan Confusion Matrix berikut dengan Akurasi 0,7 (perhatikan bahwa tergantung pada versi sklearn Anda, Anda mungkin mendapatkan hasil akurasi yang berbeda):

Seperti yang dapat diamati dari matriks:

·         TP = True Positive = 4
·         TN = Benar Negatif = 3
·         FP = Positif Salah = 2
·         FN = Negatif Salah =1
Anda bisa mendapatkan Akurasi menggunakan:
Akurasi = (TP + TN) / Total = 4 +3) / 10 = 0,7
Oleh karena itu akurasi adalah 70% untuk set tes.

Menyelam Lebih Dalam ke Hasil
Sekarang mari kita cetak dua komponen dalam kode python:
print(X_test)
print(y_pred)

Berikut adalah kode yang digunakan:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

candidates = {
'gmat': [780,750,690,710,680,730,690,720,740,690,610,690,710,680,770,610,580,650,540,590,620,600,550,550,570,670,660,580,650,660,640,620,660,660,680,650,670,580,590,690],

'gpa': [4,3.9,3.3,3.7,3.9,3.7,2.3,3.3,3.3,1.7,2.7,3.7,3.7,3.3,3.3,3,2.7,3.7,2.7,2.3,3.3,2,2.3,2.7,3,3.3,3.7,2.3,3.7,3.3,3,2.7,4,3.3,3.3,2.3,2.7,3.3,1.7,3.7],

'work_experience': [3,4,3,5,4,6,1,4,5,1,3,5,6,4,3,1,4,6,2,3,2,1,4,1,2,6,4,2,6,5,1,2,4,6,5,1,2,1,4,5],

'admitted': [1,1,0,1,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1]
}

df = pd.DataFrame(candidates,columns= ['gmat', 'gpa','work_experience','admitted'])

X = df[['gmat', 'gpa','work_experience']]
y = df['admitted'] 

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=0)  #train is based on 75% of the dataset, test is based on 25% of dataset

logistic_regression= LogisticRegression(solver='liblinear')
logistic_regression.fit(X_train,y_train)
y_pred=logistic_regression.predict(X_test)

print (X_test) #test dataset
print (y_pred) #predicted values

Ingat bahwa dataset asli (dari langkah 1) memiliki 40 pengamatan. Karena kita menetapkan ukuran pengujian ke 0,25, maka confusion matrix menampilkan hasil untuk 10 baris (= 40 * 0,25). Berikut ini adalah 10 baris uji:
    gmat  gpa  work_experience
22   550  2.3                4
20   620  3.3                2
25   670  3.3                6
4    680  3.9                4
10   610  2.7                3
15   610  3.0                1
28   650  3.7                6
11   690  3.7                5
18   540  2.7                2
29   660  3.3                5

Prediksi ini juga dibuat untuk 10 record tersebut (dimana 1 = diterima, sedangkan 0 = ditolak):
[1 0 1 1 0 0 1 1 0 1] 



Index dan Dataset  adalah sebagai berikut:
index
gmat
gpa
work_experience
admitted
0



1
1



1
2



0
3



1
4



0
5



1
6



0
7



1
8



1
9



0
10



0
11



1
12



1
13



0
14



1
15



0
16



0
17



1
18



0
19



0
20



1
21



0
22



0
23



0
24



0
25



1
26



1
27



0
28



1
29



1
30



0
31



0
32



1
33



1
34



1
35



0
36



0
37



0
38



0
39



1

Dalam dataset aktual (dari langkah-1), Anda akan melihat bahwa untuk data pengujian, kita mendapatkan hasil yang benar 8 dari 10 kali:
index
gmat
gpa
work_experience
admitted – actual result
admidtted – predicted result
matching
22
550
2.3
4
0
1
FALSE
20
620
3.3
2
1
0
FALSE
25
670
3.3
6
1
1
TRUE
4
680
3.9
4
0
1
FALSE
10
610
2.7
3
0
0
TRUE
15
610
3.0
1
0
0
TRUE
28
650
3.7
6
1
1
TRUE
11
690
3.7
5
1
1
TRUE
18
540
2.7
2
0
0
TRUE
29
660
3.3
5
1
1
TRUE

Ini cocok dengan tingkat akurasi 70% (=7/10*100)

Memeriksa Prediksi untuk Set Data Baru
Katakanlah Anda memiliki kumpulan data baru, dengan 5 kandidat baru:

gmat
gpa
work_experience
590
2
3
740
3.7
4
680
3.3
6
610
2.3
1
710
3
5







Tujuan Anda adalah menggunakan model regresi logistik yang ada untuk memprediksi apakah kandidat baru akan diterima.
Set data baru kemudian dapat ditangkap dalam DataFrame kedua bernama df2:
new_candidates = {'gmat': [590,740,680,610,710],
                  'gpa': [2,3.7,3.3,2.3,3],
                  'work_experience': [3,4,6,1,5]
                  }

df2 = pd.DataFrame(new_candidates,columns= ['gmat', 'gpa','work_experience'])

Dan di sini adalah kode lengkap untuk mendapatkan prediksi 5 kandidat baru:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

candidates = {'gmat': [780,750,690,710,680,730,690,720,740,690,610,690,710,680,770,610,580,650,540,590,620,600,550,550,570,670,660,580,650,660,640,620,660,660,680,650,670,580,590,690],
              'gpa': [4,3.9,3.3,3.7,3.9,3.7,2.3,3.3,3.3,1.7,2.7,3.7,3.7,3.3,3.3,3,2.7,3.7,2.7,2.3,3.3,2,2.3,2.7,3,3.3,3.7,2.3,3.7,3.3,3,2.7,4,3.3,3.3,2.3,2.7,3.3,1.7,3.7],
              'work_experience': [3,4,3,5,4,6,1,4,5,1,3,5,6,4,3,1,4,6,2,3,2,1,4,1,2,6,4,2,6,5,1,2,4,6,5,1,2,1,4,5],
              'admitted': [1,1,0,1,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,1]
              }

df = pd.DataFrame(candidates,columns= ['gmat', 'gpa','work_experience','admitted'])

X = df[['gmat', 'gpa','work_experience']]
y = df['admitted']

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=0)  #in this case, you may choose to set the test_size=0. You should get the same prediction here

logistic_regression= LogisticRegression(solver='liblinear')
logistic_regression.fit(X_train,y_train)

new_candidates = {'gmat': [590,740,680,610,710],
                  'gpa': [2,3.7,3.3,2.3,3],
                  'work_experience': [3,4,6,1,5]
                  }

df2 = pd.DataFrame(new_candidates,columns= ['gmat', 'gpa','work_experience'])
y_pred=logistic_regression.predict(df2)

print (df2)
print (y_pred)

Jalankan kode programnya, dan akan didapatkan prediksi berikut:
   gmat  gpa  work_experience
0   590  2.0                3
1   740  3.7                4
2   680  3.3                6
3   610  2.3                1
4   710  3.0                5
[0 1 1 0 1]


Kandidat pertama dan keempat tidak diharapkan untuk diterima, sementara kandidat lainnya diharapkan untuk diterima.
--------------------------
Source dapat di download di sini => https://drive.google.com/file/d/1da9XmA1VTqiUc46paiFMR70fRKhbo35g/view?usp=sharing
Materi: https://drive.google.com/open?id=17Z_1xXXGuWiC0VXrnNtuxLzz4jJGqciz

Monday, July 22, 2019

Microcontroller Arduino Untuk Pemula (Disertai Contoh-contoh Projek Menarik)

4:10 AM



Bagi Anda yang sedang belajar Arduino mulai dari nol, maka buku ini wajib Anda baca. Mengapa demikian? Karena buku ini cocok untuk semua kalangan yang awam terhadap elektronika dan bahasa pemrograman. Dengan gaya penulisan berkonsep “Learning By Doing”, menjadikan buku ini singkat, jelas, padat dan mudah dipahami tanpa harus pusing dengan teori yang memberatkan pikiran.
Di dalam buku disertai contoh-contoh projek yang lengkap, melibatkan berbagai jenis sensor dan motor, sehingga bisa menjadi bahan referensi atau pengembangan projek yang lebih kompleks sesuai kebutuhan Anda.

Pembahasan buku meliputi pengenalan komponen elektronik dan microcontroller Arduino, instalasi dan konfigurasi software pendukung Arduino, projek LED, projek relay, projek LCD (LCD paralel & LCD I2C) & OLED, projek keypad & capacititive touchpad, projek sensor vibration, projek rotary encoder, projek sensor warna, projek proximity (infrared obstacle avoidance, ultasonic, PIR), projek door lock dengna password, projek deteksi hujan dan kelembaban air, projek deteksi kelembaban tanah/soil moisture, projek deteksi asap dan polusi, projek remote infrared, projek Socket TCP/IP LAN, projek WiFi, projek menerima SMS dengan modem GSM, projek pencarian koordinat permukaan bumi dengan sensor GPS, projek audio player, projek robot keseimbangan, line follower, dan lain-lain yang tidak bisa disampaikan semuanya.

DAFTAR ISI
BAB 1 PENGENALAN PERANGKAT ARDUINO
1.1 Board Arduino
1.2 Pengendali Mikro (Micro Controller) Arduino
1.3 Pengenalan Elektronik Dasar
1.3.1 Kapasitor
1.3.2 Resistor
1.3.3 Tegangan Catu Daya / Adaptor
1.3.4 Pembagi Tegangan (Voltage Divider)

BAB 2 INSTALASI & KONFIGURASI
2.1 Software Pendukung
2.2 Instalasi Arduino IDE
2.3 Instalasi Fritzing
2.4 Konfigurasi IDE Arduino

BAB 3 PROJEK LED
3.1 LED Berkedip Bergantian
3.2 Kontrol LED Dengan Push Button
3.3 Fading LED Dengan Potensiometer
3.4 RGB LED

BAB 4 PROJEK RELAY
4.1 Menyalakan Lampu 220 Volt Dengan Sensor Cahaya (LDR)
4.2 Menyalakan Kipas Dengan Sensor Temperatur LM35

BAB 5 PROJEK LAYAR LCD DAN OLED
5.1 Projek LCD 16X2 Secara Paralel
5.2 Projek LCD 16X2 Secara Serial I2C Dengan Modul LCM1602
5.3 Menampilkan Tanggal & Jam di Layar OLED

BAB 6 PROJEK KEYPAD
6.1 Keamanan Pintu Menggunakan Password (Door Lock Solenoid, Keypad Membrane & LCD)
6.2 Capacitive Touch TTP229 16 Channel
6.3 Capacitive Touch Sensor Catalex TTP223
BAB 7 PROJEK LAIN-LAIN
7.1 Pendeteksi Getaran Dengan Sensor Vibration SW-420
7.2 Digital Potensiometer (Rotary Encoder)
7.3 Pendeteksi Warna Dengan Color Sensor TCS230/TCS3200

BAB 8 PROJEK SENSOR JARAK (PROXIMITY)
8.1 Sensor Penghalang Dengan Infrared Obstacle Avoidance
8.2 Menghitung Jarak Dengan Sensor Ultrasonic HC-SR04
8.3 Mendeteksi Panas Obyek Dengan Sensor PIR HC-SR501

BAB 9 PROYEK LINGKUNGAN
9.1 Deteksi Air Hujan (Raindrop Sensor)
9.2 Deteksi Kelembaban Udara Dengan Sensor DHT11 /DHT22
9.3 Pendeteksi Kelembaban Tanah Dengan Sensor Soil Moisture Untuk Memicu Kran Elektrik (Solenoid Valve)
9.4 Pendeteksi Asap Dengan Sensor Gas MQ-2

BAB 10 PROJEK KENDALI JARAK JAUH
10.1 Membaca Kode Alamat Tombol Remote IR (Infrared)
10.2 Kendali LED Dengan Remote IR & Menampilkan Jenis Tombol Ke LCD I2C
10.3 Sistem Keamanan Dengan Kartu RFID Menggunakan Sensor MFRC522
10.4 Kendali Melalui Socket TCP/IP Dengan Modul ESP8266
10.5 Kendali LED Melalui Komunikasi Bluetooth HC-05/HC-06 Dan Android
10.6 Pengendali Alat Melalui Pesan SMS Dengan Modul SIM800L
10.7 Membaca Koordinat Bumi Dengan Sensor GPS (Global Positioning System) NEO6M
10.8 Komunikasi TCP/IP Melalui Ethernet LAN Dengan Modul ENC28J60

BAB 11 PROJEK AUDIO
11.1 Pemutar Lagu MP3 Dengan Module DFPlayer
11.2 Aktifasi Pemutar Audio Dengan Pemicu Sensor Gas & Ultrasonic

BAB 12 PROJEK KONTROL MOTOR DC
12.1. Perbedaan Stepper & Servo
12.2. Pengertian Motor Stepper
12.3. Pengertian Motor Servo
12.4. Gerakan Servo SG-90 Otomatis Mulai 0⁰ – 180⁰
12.5. Kendali Arah Servo SG-90 Dengan Potensiometer
12.6. Robot Keseimbangan Dengan Sensor Gyroscope MPU6050 & Motor Drive L298N
12.7. Obstacle Avoiding Robot (Robot Penghindar Halangan) & Remote Bluetooth

Download file source yang terdapat dalam buku:

Sunday, January 13, 2019

Masalah Kode Aktifasi Pada Windows 7

10:35 PM
Kemarin saya mengalami permasalahan pada aktifasi product key windows 7 pada laptop lama saya.
Padahal sebelumya sudah diaktifasi dengan benar karena pada control panel / system  muncul logo geniune.

Segala macam cara sudah saya lakukan untuk menginput product key tetapi tetap saja gagal. Kemudian saya menemukan cara ini:

1. Masuk ke CMD sebagai Administrator
2. Copy kode program berikut ke notepad
net stop sppuinotify
sc config sppuinotify start= disabled
net stop sppsvc
del %windir%\system32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0 /ah
del %windir%\system32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0 /ah
del %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\tokens.dat
del %windir%\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\cache\cache.dat
net start sppsvc
cscript c:\windows\system32\slmgr.vbs /ipk Product_Key
cscript c:\windows\system32\slmgr.vbs /ato
sc config sppuinotify start= demand

3. Dari notepad ubah Product_Key sesuai keycode yang kalian punya, misalnya

4. Paste pada Command Prompt
5. Restart

Nah sekarang telah sukses kode aktifasinya