SKRIPSI
Diajukan oleh
MUHAMMAD GHAZIAN RASIS RAHMANULLAH
16/394996/TK/44288
kepada
DEPARTEMEN TEKNIK NUKLIR DAN TEKNIK FISIKA
FAKULTAS TEKNIK
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2020
PERNYATAAN BEBAS PLAGIASI
menyatakan bahwa dokumen ilmiah skripsi ini tidak terdapat bagian dari karya il-
miah lain yang telah diajukan untuk memperoleh gelar akademik di suatu lembaga
Pendidikan Tınggi, dan juga tidak terdapat karya atau pendapat yang pernah ditulis
atau diterbitkan oleh orangflembaga lain, kecuali yang secara tertulis disitasi dalam
dokumen ini dan disebutkan sumbernya secara lengkap dalam daftar pustaka.
Dengan demikian saya menyatakan bahwa dokumen ilmiah ini bebas dari
unsur- unsur plagiasi dan apabila dokumen ilmiah Skripsi ini di kemudian hari ter-
bukti merupakan plagiasi dari hasil karya penulis lain dan/atau dengan sengaja meng-
ajukan karya atau pendapat yang merupakan hasil karya penulis lain, maka penulis
bersedia menerima sanksi akademik dan/atau sanksi hükum yang berlaku.
017
RIBURUPIAH
ii
UNIVERSITAS GADJAH MADA
FAKULTAS TEKNIK
DEPARTEMEN TEKNIK NUKLIR DAN TEKNIK FISIKA
PROGRAM STUDI TEKNIK NUKLIR DAN TEKNIK FISIKA
Jalan Grafika No. 2, Yogyakarta 55281, Telp. (0274) 6492120, 580882 Faks. (0274) 580882
http://tf.ugm.ac.id, E-mail: t-fisika@ugm.ac.id
SURAT KETERANGAN
Nomor : 11809/UN1/FTK.2/DTNTF/PK.03.08/2020
27 Oktober 2020
Ketua Departemen Teknik Nuklir dan Teknik Fisika Fakultas Teknik Universitas
Gadjah Mada menerangkan bahwa mahasiswa di bawah ini :
Surat keterangan ini dibuat dan berlaku pada masa tanggap darurat covid-19 dan dapat
dipergunakan sebagai pengganti lembar pengesahan dan persetujuan karya tulis akhir
sebagai syarat yudisium atau wisuda pada program sarjana.
a.n. Dekan
Ketua Departemen,
Prof. Ir. Sunarno, M.Eng., Ph.D., IPU Ir. Memory Motivanisman W., M. Eng., IPM
NIP. 195511241983031001 NIP.
Mengetahui,
iv
. . . Karya ini kupersembahkan untuk diriku sendiri . . .
v
. . . Aku adalah seniman yang juga merupakan hasil karya . . .
vi
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Allah SWT, karena berkat rahmat
dan hidayah-Nya penulis dapat menyelesaikan penelitian dan penulisan skripsi yang
berjudul "Rancang Bangun Sistem Klasifikasi Emosi berbasis Electroencephalogra-
phy dengan Support Vector Machine (SVM) untuk Instrumentasi Pengukuran Psi-
koterapi" sebagai syarat untuk memperoleh gelar Sarjana Strata Satu Program Studi
Teknik Fisika.
Penelitian berkaitan dengan pemanfaatan data Electroencephalography dari
otak manusia untuk membuat sistem klasifikasi jenis emosi dengan menggunakan al-
goritma support vector machine. Skripsi ini tersusun dari enam bab. Bab pertama
berisi pendahuluan. Pada bab ini dikemukakan hal-hal yang melatarbelakangi pene-
litian, rumusan masalah yang disusun, tujuan dari penelitian yang dilakukan, batas-
an masalah penelitian, serta manfaat yang dapat dipeoroleh dari penelitian ini. Bab
kedua adalah tinjauan pustaka. Pada bab ini dikemukakan penelitian yang telah di-
lakukan oleh peneliti-peneliti lain sebelumnya yang berkaitan dengan penelitian ini.
Bab ketiga adalah dasar teori. Pada bab ini dijelaskan mengenai berbagai landasan
teori yang digunakan dalam penelitian ini. Bab keempat adalah pelaksanaan peneliti-
an. Pada bab ini dijelaskan tentang alur dari pelaksanaan penelitian yang dilakukan.
Bab kelima adalah hasil dan pembahasan. Pada bab ini dikemukakan data yang di-
dapatkan dan analisisnya yang didapatkan dari penelitian ini. Bab keenam adalah
kesimpulan dan saran. Bab ini berisi kesimpulan-kesimpulan yang diperoleh setelah
melakukan analisis pada data yang didapatkan dalam penelitian ini. Selain itu juga
diberikan saran mengenai pengembangan untuk penelitian ke depan dari penelitian
ini.
Tentunya dalam mengerjakan penelitian ini penulis mendapatkan banyak ban-
vii
viii
tuan dari berbagai pihak. Pada kesempatan ini penulis ingin mengucapkan terima
kasih kepada semua pihak yang turut andil dalam mewujudkan penelitian ini, antara
lain kepada:
1. Kedua orang tua penulis, Bapak Sutarno dan Ibu Fatchu Rohmah, yang telah
memberikan segalanya sehingga penulis dapat menempuh pendidikan hingga
sampai ke jenjang ini.
2. Prof. Ir. Sunarno, M.Eng., Ph.D., IPU selaku pembimbing utama penulis yang
telah memberikan bimbingan sehingga penulis dapat belajar dari kesalahan-
kesalahan yang sering luput dari diri penulis.
4. Ir. Rony Wijaya, S.T., M.Eng., IPM yang telah membantu memenuhi segala
kebutuhan lapangan untuk pelaksanaan penelitian ini.
5. Ir. Nazrul Effendy, S.T., M.T., Ph.D. IPM dan Dwi Joko Suroso, S.T., M.Eng
selaku penguji yang telah memberikan masukan-masukan sehingga karya ini
menjadi lebih baik.
6. Mas Fafa dan Mbak Sari yang memberikan dukungan dan masukan kepada
peneliti.
7. Teman-teman satu tim penelitian; Ilham, Febry, Yasin, Yodha, Andaru, Tobias,
Duwi, dan Totok yang telah menjadi rekan seperjuangan untuk lulus di tengah
pandemi ini.
8. Orang-orang yang tidak saya sebutkan satu per satu yang juga telah berkontri-
busi dalam terwujudnya skripsi ini.
ix
Penulis sadar bahwa penelitian ini masih jauh dari kata sempurna. Untuk itu,
diharapkan bahwa ke depannya dapat dilakukan penelitain lanjutan untuk mengem-
bangkan ide-ide yang ada dalam penelitian ini. Diharapkan juga bahwa penelitian ini
dapat menjadi referensi dan acuan untuk pengembangan penelitian yang lebih hebat
ke depannya.
Penulis
DAFTAR ISI
HALAMAN JUDUL i
HALAMAN PENGESAHAN iv
HALAMAN TUGAS v
HALAMAN PERSEMBAHAN v
HALAMAN MOTTO vi
INTISARI xxi
ABSTRACT xxii
I. PENDAHULUAN 1
I.1. Latar Belakang . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
I.2. Perumusan Masalah . . . . . . . . . . . . . . . . . . . . . . . . . 3
I.3. Batasan Masalah . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
I.4. Tujuan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
I.5. Manfaat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
x
xi
III.1. Psikoterapi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
III.2. Emosi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
III.2.1. Emosi dalam psikoterapi . . . . . . . . . . . . . . . . . . . . 15
III.3. Electroencephalography . . . . . . . . . . . . . . . . . . . . . . . 16
III.3.1. Gelombang Otak . . . . . . . . . . . . . . . . . . . . . . . . 18
III.3.2. Artefak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
III.4. Filter Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
III.5. Metode Welch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
III.6. Support Vector Machine . . . . . . . . . . . . . . . . . . . . . . . 28
III.6.1. Linear Classifier . . . . . . . . . . . . . . . . . . . . . . . . 28
III.6.2. Margin Klasifikasi . . . . . . . . . . . . . . . . . . . . . . . 30
III.6.3. Maximum Margin Classifier . . . . . . . . . . . . . . . . . . 32
III.6.4. Kernel dan Hiperparameter . . . . . . . . . . . . . . . . . . . 34
III.6.5. Klasifikasi Multi-Kelas . . . . . . . . . . . . . . . . . . . . . 36
III.6.6. K-Fold Cross-Validation . . . . . . . . . . . . . . . . . . . . 38
III.6.7. Hyperparameter Tuning . . . . . . . . . . . . . . . . . . . . 40
III.7. Confusion Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
III.8. Hipotesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
LAMPIRAN
B. Listing Program 93
xiii
A.1. Fitur daya gelombang delta hingga gamma elektroda Fp1 dari sampel
1 hingga 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.2. Fitur energi gelombang delta hingga gamma elektroda Fp1 dari sam-
pel 1 hingga 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
A.3. Fitur asimetri gelombang delta hingga gamma elektroda Fp1-Fp2 dari
sampel 1 hingga 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
A.4. Fitur daya gelombang delta hingga gamma elektroda Fp1 dari sampel
1 hingga 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
xiv
xv
A.5. Fitur energi gelombang delta hingga gamma elektroda Fp1 dari sam-
pel 1 hingga 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
A.6. Fitur asimetri gelombang delta hingga gamma elektroda Fp1-Fp2 dari
sampel 1 hingga 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
A.7. Hasil validasi silang multi-sesi beserta hyperparameter yang digunakan 91
A.8. Hasil validasi silang sesi tunggal beserta hyperparameter yang digu-
nakan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
DAFTAR GAMBAR
xvi
xvii
Lambang Romawi
Lambang Kuantitas Satuan
b Bias –
C Konstanta Soft Margin –
k Jumlah Fold –
N Orde Filter –
Sx (ν) PSD µV 2 /Hz
w Weight Vector –
W Fungsi Window –
Lambang Yunani
Lambang Kuantitas Satuan
α Gelombang alpha Hz
β Gelombang beta Hz
δ Gelombang delta Hz
γ Inverse Width Parameter Kernel Gaussian –
γ Gelombang gamma Hz
θ Gelombang theta Hz
ξi Slack Variable –
Subskrip
Lambang Deskripsi
left kiri
right kanan
xviii
xix
Superskrip
Lambang Deskripsi
| Transpose
Singkatan
ANN Artificial Neural Network
BNT Bayesian Network
DEAP Database for Emotion Analysis using Physiological Signal
DSP Digital Signal Processor
EEG Electroencephalography / Elektroensefalografi
FN False Negative
FP False Positive
HPI Head Position Indicator
IAPS International Affective Picture System
KNN K-Nearest Neighbor
LDA Linear Discriminant Analysis
MLP Multilayer Perceptron
OvO One-vs-One
ICA Independent Component Analysis
PCA Principal Component Analysis
PSD Power Spectral Density
PSO Particle Swarm Optimization
OvR One-vs-Rest
RBF Radial Basis Function
RBFN Radial Basis Function Network
RT Regression Tree
xx
oleh
Diajukan kepada Departemen Teknik Nuklir dan Teknik Fisika Fakultas Teknik
Universitas Gadjah Mada pada tanggal 16 Oktober 2020
untuk memenuhi sebagian persyaratan untuk memperoleh derajat
Sarjana Program Studi Teknik Fisika
INTISARI
Efektivitas psikoterapi selama ini dievaluasi dari perubahan emosi klien yang
diukur secara subjektif. Sehingga perlu dikembangakan suatu sistem indikator objek-
tif yang mampu mengenali emosi klien secara objektif. Banyak indikator fisiologis
yang secara natural berubah seiring dengan perubahan emosi, salah satunya adalah
aktivitas otak. Aktivitas otak manusia dipantau dengan menggunakan teknik ele-
ctroencephalography (EEG) dengan mengukur potensial listrik yang timbul akibat
aktivitas otak manusia. Saat ini belum ada sistem klasifikasi jenis emosi dengan me-
manfaatkan data EEG yang cocok untuk diterapkan dalam pengukuran psikoterapi.
Data EEG memiliki pola-pola yang tidak dapat dibedakan dengan pengamat-
an secara langsung. Oleh karena itu digunakan salah satu algoritma machine lear-
ning yaitu support vector machine (SVM). Untuk melakukan klasifikasi, digunakan
fitur daya, energi, dan asimetri serebral pada data EEG. Dilakukan metode sampling
sesi tunggal dan multi-sesi. Pada penelitian ini diperoleh sistem klasifiasi emosi se-
nang, takut, sedih, dan tenang dengan akurasi 63,29% untuk sampel sesi tunggal dan
45,00% untuk sampel multi-sesi.
xxi
DESIGN AND BUILD OF
ELECTROENCEPHALOGRAPHY-BASED EMOTION
CLASSIFICATION SYSTEM WITH SUPPORT VECTOR
MACHINE (SVM) FOR PSYCHOTHERAPY MEASUREMENT
INSTRUMENTATION
by
ABSTRACT
As far as we concerned, the effectiveness of psychotherapy is evaluated from
the client’s emotional changes as measured subjectively. So it is necessary to develop
an objective measurement system that is able to objectively identify client emotions.
Many physiological indicators change naturally with emotional changes, one of whi-
ch is brain activity. Human brain activity is monitored using the electroencephalogra-
phy (EEG) technique by measuring the electrical potential arising from human brain
activity. Currently, there is no emotion classification system using EEG data that is
suitable for application in psychotherapy measurements.
EEG data have patterns that cannot be distinguished from direct observation.
Therefore, one of the machine learning algorithms is used, namely support vector
machine (SVM). To perform the classification, power, energy, and cerebral asymme-
try features are extracted from EEG data. Single-session and multi-session sampling
methods are performed. In this study, we obtained a classification system of hap-
py, fearful, sad, and calm emotions with an accuracy of 63.29% for single-session
samples and 45.00% for multi-session samples.
xxii
BAB I
PENDAHULUAN
Psikoterapi adalah komunikasi antara klien dan terapis yang didesain untuk
menghasilkan perubahan perasaan, pengetahuan, sifat, dan tingkah laku yang
terbukti menyusahkan klien oleh terapis [1]. Klien adalah pihak yang memiliki
masalah psikologis sedangkan terapis adalah pihak yang membantu menyelesaikan
masalah psikologis pada klien [2]. Masalah psikologis didefinisikan secara luas
sebagai gangguan kondisi psikologis pada individu yang terkait dengan perasaan
susah dan reaksi yang tidak sesuai dengan budaya [3]. Psikoterapi digunakan
sebagai salah satu langkah intervensi oleh terapis terhadap masalah psikologis pada
klien selain intervensi secara medis.
Fokus pada emosi sudah menjadi bagian penting dari proses psikoterapi
bahkan sejak Freud (1910), hal ini tidak mengejutkan karena banyak kelainan
psikologis meliputi gangguan pada emosi (Berenbaum, Raghaven, Le, Vernon, &
Gomez, 2003; Kring, 2001) [4]. Emosi adalah fenomena perilaku kompleks yang
menggabungkan banyak tingkat integrasi saraf dan kimia dalam tubuh manusia [5].
Semua keadaan emosional dapat dinyatakan dalam circumplex model of affect [6].
Circumplex model of affect adalah model yang menjelaskan bahwa emosi muncul
dari dua sistem neuropsikologis, satu berhubungan dengan valence (senang-tidak
senang), dan yang lain dengan arousal atau kewaspadaan [6]. Valence digambarkan
sebagai perubahan perasaan yang sangat positif hingga sangat negatif, dan arousal,
yang juga disebut aktivasi adalah perubahan dari tidur menjadi bersemangat [7].
Mengingat pentingnya emosi dalam psikoterapi, karena banyak kelainan psikologis
1
2
meliputi gangguan pada emosi, diperlukan cara untuk mengukur emosi sebagai
indikator efektivitas terapi [4]. Selama ini, perubahan emosi klien dalam psikoterapi
diukur secara subjektif dengan menggunakan kuesioner. Hal ini menyebabkan
adanya kesalahan dalam identifikasi emosi klien apabila pengisian kuesioner tidak
dilakukan dengan benar. Oleh karena itu, identifikasi emosi secara objektif dengan
menggunakan parameter fisis yang dapat diukur perlu dikembangkan. Identifikasi
emosi secara objektif ini dapat mengeliminasi kemungkinan ketidakpastian, bias,
dan kesalahan dalam identifikasi emosi secara subjektif dengan menggunakan
kuesioner.
Karakteristik respons terhadap keadaan emosional seseorang telah terbukti
dapat direpresentasikan dengan sinyal Electroencephalography (EEG) [8]. EEG
adalah pengukuran potensi (tegangan) yang mencerminkan aktivitas listrik otak
manusia [9]. Penelitian yang sudah ada menemukan bahwa emosi dapat
diklasifikasikan berdasarkan data EEG sebagai berikut. Marah, takut, dan terkejut
diklasifikasikan dengan 3 karakteristik data hasil pengukuran EEG (frekuensi,
asimetri serebral, koherensi) menggunakan Linear Discriminant Analysis (LDA)
dengan akurasi sebesar 66,3% [10]. Senang, tenang, sedih, dan takut berhasil
diklasifikasikan menggunakan KNN dan k=3 dengan akurasi 61% [7]. Tenang,
marah, dan senang diklasifikasikan menggunakan SVM dengan kernel RBF, akurasi
yang didapatkan sebesar 60% [11]. Gembira, marah, sedih, dan kenikmatan
diklasifikasikan menggunakan SVM dengan akurasi rata-rata 82,29% [8]. Himpunan
data DEAP diklasifikasikan menggunakan Radial Basis Function Network dengan
akurasi 84,6% [12]. Dari penelitian sebelumnya, dapat dilihat bahwa jenis emosi
yang diklasifikasikan dan classifier yang digunakan berpengaruh pada akurasi
klasifikasi emosi [7] [8] [10] [11] [12] [13].
Emosi klien yang dipilih dalam klasifikasi oleh peneliti adalah senang, takut,
3
sedih, dan tenang dengan pertimbangan bahwa emosi tersebut kemungkinan muncul
dalam proses psikoterapi. Perubahan emosi menimbulkan perubahan frekuensi dan
amplitudo pada sinyal EEG. Akan tetapi perubahan ini tidak dapat diidentifikasi
secara manual dengan observasi sinyal secara langsung karena kompleksitas dari
bentuk sinyal. Oleh karena itu diperlukan metode klasifikasi untuk membedakan
sinyal EEG dari emosi yang berbeda. Metode klasifikasi Support Vector Machine
(SVM) diusulkan untuk digunakan dalam penelitian ini untuk mengklasifikasikan
emosi senang, takut, sedih, dan tenang karena SVM telah terbukti memberikan
akurasi yang lebih tinggi dibandingkan dengan metode lain seperti LDA, KNN, RT,
BNT, dan ANN [8] [13] [14]. SVM adalah teknik machine learning yang digunakan
secara luas, salah satunya adalah untuk klasifikasi [14]. Machine learning adalah
teknik yang digunakan untuk menggantikan atau menirukan perilaku manusia untuk
menyelesaikan masalah atau melakukan otomatisasi [15]. Metode SVM diharapkan
dapat digunakan untuk mendapatkan hasil klasifikasi emosi berdasarkan data
pengukuran EEG pada instrumentasi pengukuran psikoterapi dengan akurasi lebih
dari 61%.
1. Emosi yang diklasifikasikan adalah emosi senang, takut, sedih, dan tenang.
4
4. Data EEG masukan yang digunakan berformat .BDF yang direkam dengan
menggunakan alat EEG standar 16 kanal.
I.4. Tujuan
I.5. Manfaat
2. Bagi klien, hasil penelitian bermanfaat secara tidak langsung agar didapatkan
hasil psikoterapi secara optimal bagi klien sesuai dengan keadaan emosi
sebelum, sesaat, dan sesudah sesi terapi dijalankan.
5
3. Bagi peneliti, hasil penelitian dapat dijadikan sebagai alat bantu untuk
penelitian lebih lanjut mengenai klasifikasi emosi klien dalam psikoterapi
secara real-time.
BAB II
TINJAUAN PUSTAKA
6
7
EEG. Akurasi tertinggi sebesar 66,3 % didapatkan dengan menggunakan semua fitur
[10]. Selain itu, pada tahun yang sama, A. T. Sohaib, S. Qureshi, J. Hagelbäck, O.
Hilborn, dan P. Jerčić membandingkan akurasi dari KNN, RT, BNT, SVM dan ANN
dalam mengklasifikasikan emosi berdasarkan nilai positif atau negatif dari gairah
dan valensi. Klasifikasi dilakukan dari data 15 orang partisipan dengan data EEG
yang diambil dari elektroda F3, F4, C3, C4, T3, T4, P3, dan P4. Artefak dihilangkan
dengan menggunakan ICA dan fitur nilai minimum, maksimum, rerata, dan standar
deviasi diekstrak. Dari data keseluruhan didapatkan akurasi tertinggi sebesar 56,1%
dengan menggunakan SVM. Apabila data dikelompokkan tiap 5 partisipan
didapatkan akurasi rerata tertinggi 66,47% dengan menggunakan SVM juga.
Apabila data dikelompokkan per individu didapatkan akurasi terbesar dengan KNN
[13].
Pada tahun 2015, R. M. Mehmood dan H. J. Lee mengklasifikasikan emosi
senang, tenang, sedih, dan takut dengan menggunakan KNN dan SVM. Digunakan
EEG dengan 14 kanal untuk pengambilan data. Data diperoleh dari 5 partisipan pria
yang diberi paparan untuk membangkitkan emosi dari database IAPS. Untuk
membersihkan data dari artefak digunakan ICA dan penolakan manual. Fitur yang
diekstrak dari data adalah 3 parameter Hjorth (activity, mobility, complexity)
Didapatkan akurasi maksimum sebesar 61% dengan menggunakan classifier KNN
dengan K = 3 [7]. Di tahun yang sama, himpunan data DEAP diklasifikasikan
berbagai jenis classifier dan proses ekstraksi fitur oleh Sreeshakthy M. dan Preethi J.
Data mentah ditapis dengan menyisakan frekuensi 4-40 Hz untuk ekstraksi fitur.
Digunakan fitur berupa gelombang hasil dekomposisi seperti gelombang alpha,
beta, gamma, dan theta. Fitur yang digunakan dipilih dari fitur hasil ekstraksi
dengan menggunakan algoritma PSO (Particle Swarm Optimization). Metode
ekstraksi connectivity features dan PCA dengan metode klasifikasi RBFN
8
DASAR TEORI
III.1. Psikoterapi
Psikoterapi adalah komunikasi antara klien dan terapis yang didesain untuk
menghasilkan perubahan perasaan, pengetahuan, sifat, dan tingkah laku yang
terbukti menyusahkan klien oleh terapis [1]. Klien adalah pihak yang memiliki
masalah psikologis sedangkan terapis adalah pihak yang membantu menyelesaikan
masalah psikologis pada klien [2]. Psikoterapi merupakan salah satu cara untuk
membantu orang-orang dengan penyakit mental dan kesulitan emosional.
Psikoterapi dapat membantu menghilangkan atau mengendalikan gejala yang
mengganggu sehingga seorang dapat berfungsi dengan lebih baik dan dapat
meningkatkan kesehatan dan penyembuhan.
Fokus dalam proses psikoterapi adalah penyelesaian masalah psikologis.
Masalah psikologis dalam psikoterapi didefinisikan secara luas sebagai gangguan
kondisi psikologis pada individu yang terkait dengan perasaan susah dan reaksi yang
tidak sesuai dengan budaya [3]. Masalah yang ditolong oleh psikoterapi termasuk
kesulitan dalam mengatasi kehidupan sehari-hari; dampak trauma, penyakit medis
atau kehilangan, seperti kematian orang yang dicintai; dan gangguan mental tertentu,
seperti depresi atau kecemasan. Ada beberapa jenis psikoterapi dan jenis tertentu
dapat bekerja lebih baik dengan isu atau masalah tertentu. Psikoterapi dapat
digunakan dalam kombinasi dengan obat-obatan atau terapi lain.
Terdapat beberapa jenis psikoterapi yang digunakan oleh terapis. Pilihan
jenis terapi tergantung dari jenis penyakit, keadaan khusus klien, dan pilihan klien.
Berbagai elemen dalam pendekatan terapi yang berbeda dapat digunakan untuk
12
13
memenuhi kebutuhan klien. Beberapa jenis pendekatan dalam psikoterapi yaitu [3]:
4. Psyhcodynamic Therapy
Psychodynamic Therapy meningkatkan kesadaran diri dan mengubah pola lama
sehingga klien dapat lebih mengendalikan hidupnya.
5. Psychoanalisis
Psychoanalisis adalah bentuk dari psychodynamic therapy yang lebih intensif
dengan frekuensi sesi terapi tiga kali atau lebih dalam seminggu.
6. Supportive Therapy
Supportive therapy menggunakan panduan dan dorongan untuk membantu
klien mengembangkan sumber daya mereka sendiri. Ini membantu
membangun rasa percaya diri, mengurangi kecemasan, memperkuat
14
III.2. Emosi
Fokus pada emosi sudah menjadi bagian penting dari proses psikoterapi
bahkan sejak Freud (1910), hal ini tidak mengejutkan karena banyak kelainan
psikologis meliputi gangguan pada emosi (Berenbaum, Raghaven, Le, Vernon, &
Gomez, 2003; Kring, 2001). Fokus dalam emosi pada psikoterapi menjadi pusat
dalam pendekatan kontemporer pada berbagai jenis orientasi psikoterapi. Sebagai
contoh, penekanan pada kesadaran dan penerimaan emosi menjadi landasan
gelombang baru terapi cognitive-behavioral. Berbagai pendekatan psikoterapi
dimaksudkan untuk mengembangkan dan/atau meningkatan keterampilan yang
16
berkaitan dengan fungsi emosional, oleh karena itu penting bagi terapis untuk
menilai memiliki kemampuan dalam menilai peningkatan klien dalam keterampilan
emosi yang ditargetkan selama masa terapi [4].
III.3. Electroencephalography
tempurung kepala. Jarak total depan-belakang ditentukan dari dua titik yaitu nasion,
yang merupakan titik di antara dahi dan hidung, sejajar dengan mata, dan inion,
yang berupa tulang menonjol pada pangkal tengkorak di bagian belakang kepala.
Setiap lokasi menggunakan sebuah huruf untuk mengindentifikasi lobus otak dan
angka untuk mengindentifikasi lokasi belahan otak [9].
1. Bipolar montage
Sepasang elektroda membentuk satu kanal EEG. Tiap kanal merepresentasikan
perbedaan potensial antara dua elektroda yang berdampingan. Sebagai contoh
18
apabila terdapat kanal bernama "Fp1-F3" maka berarti bahwa kanal tersebut
menunjukkan perbedaan tegangan antara elektroda Fp1 dan F3.
2. Referential montage
Setiap kanal merepresentasikan perbedaan potensial antara sebuah elektroda
dengan elektroda referensi yang sudah ditentukan. Tidak ada posisi standar
untuk elektroda referensi. Akan tetapi, elektroda referensi memiliki posisi yang
berbeda dengan elektroda yang membaca sinyal. Posisi tengah kepala biasanya
digunakan karena referensi pada posisi tersebut tidak memperkuat sinyal pada
satu belahan kepala dibandingkan dengan belahan lainnya. Referensi lain yang
sering digunakan adalah rerata dari elektroda yang dipasang pada kedua cuping
telinga atau mastoid.
4. Laplacian montage
Tiap kanal merepresentasikan perbedaan antara sebuah elektroda dan rerata
yang telah diberi bobot dari elektroda di sekitarnya.
Frekuensi adalah salah satu kriteria paling penting dalam menilai keadaan
abnormal dalam EEG klinik dan memahami perilaku fungsional dalam penelitian
kognitif. Frekuensi mengacu pada aktivitas ritmik berulang (dalam Hz). Jumlah
siklus dalam satu detik dihitung sebagai frekuensi. Dengan milyaran osilasi neuron
sebagai sumbernya, potensial listrik EEG manusia diwujudkan sebagai osilasi
aperiodik yang tidak dapat diprediksi dengan osilasi rentetan berselang. Pada orang
19
dewasa sehat, amplitudo dan frekuensi sinyal berubah dari satu keadaan ke keadaan
lain, seperti bangun dan tidur. Terdapat lima gelombang otak utama yang dibedakan
berdasarkan rentang frekuensinya. Frekuensi-frekuensi ini dari pita frekuensi rendah
ke tinggi, secara berurutan, biasanya dikategorikan pada pita spesifik seperti 0,5-4
Hz (delta, δ), 4-8 Hz (theta, θ), 8-13 Hz (alpha, α), 13-30 Hz (beta, β), dan >30 Hz
(gamma, γ). Frekuensi tinggi sering kali lebih umum pada otak dalam keadaan
abnormal seperti epilepsi[19]. Ritme gelombang otak dalam 1 detik diilustrasikan
pada Gambar 3.3. [9].
III.3.2. Artefak
Dalam praktik pembacaan sinyal EEG, tidak semua sinyal berasal dari
aktivitas neuron otak yang diinginkan. Sering kali, aktivitas neuron pada bagian lain
atau potensial listrik dari aktivitas lain selain neuron dapat terbaca. Bagian-bagian
dari sinyal terekam yang muncul dari sumber lain selain yang diinginkan disebut
dengan artefak. Dengan demikian, artefak adalah bentuk interferensi atau derau
relatif terhadap sinyal yang diinginkan. Terdapat beberapa jenis artefak berdasarkan
sumber interferensi atau derau, dengan contoh sebagai berikut [18].
1. Environmental artifacts
Merupakan artefak yang berasal dari lingkungan sekitar. Artefak dapat berupa
gangguan elektromagnetik ataupun mekanik. Beberapa contoh dari artefak
22
jenis ini yaitu gelombang elektromagnetik yang ditimbulkan oleh aliran listrik
AC, getaran yang menimbulkan lonjakan sinyal, dan medan elektromagnetik
dari perangkat elektronik.
2. Instrumentation artifacts
Merupakan artefak yang mungkin muncul akibat digunakannya penggunaan
instrumen pada saat pengukuran EEG. Beberapa diantaranya adalah
interferensi elektromagnetik dari penyajian stimulus, osilasi kontinyu pada
frekuensi spesifik yang digunakan oleh kumparan head position indicator
HPI, dan fluktuasi amplitudo tinggi acak atau sinyal nol konstan pada sebuah
kanal karena malfungsi sensor.
3. Biological artifacts
Merupakan artefak yang berasal dari aktivitas bagian tubuh lain pada orang
yang sedang menjalani perekaman EEG. Sinyal dengan pola mirip QRS dapat
muncul akibat aktivitas elektrik di jantung. Defleksi pendek seprti fungsi
undak dan defleksi besar sementara khususnya khususnya pada kanal EEG
frontal muncul akibat gerakan mata dan kedipan. Selain itu juga terdapat
fluktuasi frekuensi tinggi pada beberapa kanal yang mungkin muncul akibat
aktivitas otot.
Seperti yang sudah dibahas pada subbab mengenai artefak, pada data EEG
terekam banyak artefak yang bukan merupakan sinyal dari gelombang otak yang
ingin direkam. Oleh karena itu setelah direkam dan sebelum diolah lebih lanjut
dilakukan langkan preprocessing yang bertujuan untuk menghilangkan/mengurangi
artefak. Untuk melakukan hal ini digunakan filter. Filter adalah sistem yang
23
Untuk melakukan filtering pada data EEG digunakan filter digital karena data EEG
sudah merupakan sinyal EEG yang tersampel.
Filter digital linear dibagi menjadi dua kategori berdasarkan panjang respons
impulsnya. Filter Infinite Impulse Response dan filter Finiter Impulse Response.
Filter digital linear FIR memiliki respons terbatas pada fungsi impuls unit masukan
dengan keuntungan besar menjamin stabilitas dan fase yang linier absolut (selama
respons impulsnya simetris atau anti-simetris terhadap origin)-sifat yang dengan
mudah menjelaskan penerapan yang luas dalam sistem telekomunikasi [19]. Rumus
dari filter FIR dituliskan pada Persamaan 3.1. di mana x(n) adalah series masukan,
a(k) adalah series yang merepresentasikan filter, N adalah orde filter, dan y(n)
adalah series keluaran filter [20]. k memiliki panjang sebesar N + 1 dari 0 hingga N
sedangkan n sesuai panjang masukan.
n
X
y(n) = a(k)x(n − k) (3.1)
k=0
24
Filter digital linier IIR memiliki respons waktu tak terbatas terhadap fungsi
impuls unit masukan. Untuk penghitungan keluaran, biasanya digunakan nilai
masukan dan keluaran dari kejadian sebelumnya, oleh karena itu filter ini disebut
dengan filter rekursif. Filter ini memiliki kompleksitas komputasi yang lebih sedikit
daripada filter FIR yang sebanding, tetapi tidak dapat memastikan stabilitas atau fase
linier, yang mengakibatkan distorsi[26]. Rumus dari filter IIR dituliskan pada
Persamaan 3.2. di mana x(n) adalah series masukan, a(k) dan b(j) adalah series
yang merepresentasikan filter, N dan P adalah orde filter, dan y(n) adalah series
keluaran filter [20].
N
X P
X
y(n) = a(k)x(n − k) + b(j)y(n − j) (3.2)
k=0 j=0
Filter dapat dibuat untuk tugas yang berbeda-beda. Sebagai contoh filter dapat
digolongkan menjadi empat tipe dasar yaitu high pass, low pass, band stop, atau band
pass [19]. Ilustrasi tipe filter dapat dilihat pada Gambar 3.5..
Gambar 3.5. Ilustrasi filter (a) high pass, (b) low pass, (c) band stop, atau (d) band
pass [19]
25
N
X −1
Xk (ν) = x[m]w[m] exp(−j2πνm) (3.3)
m
di mana
m = (k − 1)S, . . . , M + (k − 1)S − 1
w[m] = fungsi window misalkan Hann, w[m] = sin2 ( πm
N
)
3. Untuk tiap segmen (k = 1 hingga K), susun nilai periodogram yang sudah
dimodifikasi, Pk (f ), dari DFT:
1
Pk (ν) = |Xk (ν)|2 (3.4)
W
di mana
M
X
W = w2 [m] (3.5)
m=0
4. Hitung rerata dari nilai periodogram untuk mendapatkan estimasi PSD Wlech:
K
1 X
Sx (ν) = Pk (ν) (3.6)
K k=1
27
SVM adalah sebuah contoh dari classifier dua-kelas linier. Data untuk
masalah pembelajaran dua kelas terdiri dari objek yang diberi label dengan salah
satu dari dua label sesuai dengan kedua kelas tersebut; untuk kemudahan digunakan
label +1 (contoh positif), atau -1 (contoh negatif). x menunjukkan vektor dengan
komponen xi . Notasi xi menunjukkan vektor ke i dalam dataset (xi , yi )ni=n , di mana
yi adalah label yang diasosiasikan dengan xi . Objek xi disebut sebagai pola atau
contoh. Diasumsikan bahwa contoh masuk ke dalam sebuah set X. Mula-mula
diasumsikan bahwa contoh adalah vektor, akan tetapi begitu kernel diperkenalkan
29
asumsi ini menjadi lebih longgar, pada titik di mana mereka dapat menjadi objek
kontinu ataupun diskrit [23].
Konsep kunci yang diperlukan untuk mendefinisikan sebuah classifier linier
aadalah operasi dot antara dua vektor, yang juga disebut sebagai inner product atau
produk skalar, didefinisikan sebagai w| x =
P
i wi xi . Classifier linier didasarkan
f (x) = w| x + b (3.7)
x : f (x) = w| x + b = 0 (3.8)
Gambar 3.7. Sebuah classifier linier. Batas keputusan (titik x sehingga w| x+b = 0)
membagi bidang menjadi dua set tergantung dari tanda w| x + b [23]
Gambar 3.8. SVM linier. Titik yang dilingkari adalah support vector-contoh yang
paling dekat dengan batas keputusan. Mereka menentukan margin di
mana dua kelas dipisahkan [23]
1
mD (f ) = ŵ| (x+ − x− ) (3.9)
2
f (x+ ) = w| x+ + b = a (3.10)
f (x− ) = w| x− + b = −a (3.11)
32
untuk konstanta a > 0. Untuk membuat margin lebih berarti, nilai batas
keputusan di titik yang paling dekat dengan hyperplane ditetapkan, dan mengatur
a = 1 pada Persamaan 3.10 dan 3.11. Dengan menambahkan kedua persamaan
tersebut dan membaginya dengan kwk didapatkan [23]:
1 1
mD (f ) = ŵ| (x+ − x− ) = (3.12)
2 kwk
1
perkecil w, b kwk2 (3.13)
2
n
1 X
perkecil w, b kwk2 + C ξi (3.15)
2 i=1
n n n
X 1 XX
perbesar α αi − yi yj αi αj x|i xj (3.16)
i=1
2 i=1 j=1
n
X
dibatasi oleh : yi αi = 0, 0 ≤ αi ≤ C.
i=1
Formulasi ganda mengarah pada perluasan weight vector dalam hal masukan:
n
X
w= y i αi x i (3.17)
i=1
Contoh xi di mana αi > 0 adalah titik yang berada pada margin, atau di dalam
margin saat SVM soft margin digunakan. Titik-titik itu disebut dengan support vector
34
[23].
Formulasi ganda dari masalah optimasi SVM bergantung kepada data hanya
tergantung pada hasil operasi dot. Oleh karena itu, hasil operasi dot dapat diganti
dengan fungsi kernel non-linier, dengan demikian melakukan pemisahan margin yang
besar dalam ruang-fitur kernel [23].
Proses pelatihan sebuah SVM mencari hyperplane dengan margin besar, yaitu
mengatur parameter αi dan b. SVM memiliki parameter lain yang disebut dengan
hiperparameter: Konstanta soft margin C, dan parameter apapun yang merupakan
ketergantungan dari fungsi kernel (lebar dari kernel Gaussian atau derajat dari kernel
polinomial) [23].
Peran dari konstanta soft margin dapat dilihat pada Gambar 3.9. [23].
Gambar 3.9. Efek dari konstanta soft margin, C, pada batas keputusan [23]
Untuk nilai C yang lebih besar, hukuman yang besar diberikan kepada
galat/galat margin. Hal ini dapat dilihat pada Gambar 3.9. sebelah kiri dengan
C = 100 di mana dua titik yang terdekat dengan hyperplane mempengaruhi
35
orientasinya, menghasilkan hyperplane yang lebih dekat dengan beberapa titik data
yang lain. Saat C dikurangi (Gambar 3.9. sebelah kanan), titik-titik tersebut
menjadi galat margin; orientasi hyperplane berubah, memberikan margin yang lebih
besar kepada data lainnya [23].
Kernel Gaussian diatur dengan persamaan k (x, x0 ) = exp −γ kx − x0 k2 .
Saat γ kecil (Gambar 3.10. sebelah kiri atas) sebuah titik data x memiliki nilai
kernel tidak nol relatif kepada contoh manapun pada kumpulan support vector.
Dengan demikian, seluruh kumpulan support vector mempengaruhi nilai dari fungsi
diskriminan x, menghasilkan batas keputusan yang halus. Dengan ditingkatkannya
γ, lokalitas dari perluasan support vector meningkat, memberikan kurva yang lebih
besar pada batas keputusan. Saat γ besar, nilai dari fungsi diskriminan pada
dasarnya konstan untuk jarak yang jah dari daerah di mana data terkonsentrasi
(Gambar 3.10. sebelah kanan bawah). Dengan nilai parameter γ seperti ini
classifier jelas overfitting terhadap data [23].
36
Gambar 3.10. Efek dari parameter inverse-width dari kernel Gaussian (γ) untuk nilai
tetap pada konstanta soft margin [23]
SVM pada bentuk dasarnya hanya mendukung klasifikasi dua kelas atau yang
disebut sebagai klasifikasi biner. Pendekatan dalam menggunakan algoritma
klasifikasi biner untuk klasifikasi multi-kelas adalah dengan membagi himpunan
data klasifikasi multi-kelas menjadi beberapa himpunan data klasifikasi biner dan
mencocokkan model klasifikasi biner pada tiap himpunan data. Dua contoh
pendekatan berbeda adalah strategi One-vs-Rest dan One-vs-One [24].
37
Salah satu kelemahan yang mungkin terjadi pada pendekatan ini adalah bahwa
pendekatan ini memerlukan satu model untuk dibuat untuk tiap kelas. Sebagai contoh,
tiga kelas memerlukan tiga model. Hal ini dapat menjadi masalah untuk himpunan
data yang besar (misal jutaan baris), model yang lambat (misal jaringan syaraf), atau
jumlah kelas yang sangat banyak (misal ratusan kelas) [24].
kelas, pendekatan OvO membagi himpunan data menjadi satu himpunan data untuk
tiap kelas versus tiap kelas lainnya [24].
Sebagai contoh, pertimbangkan masalah klasifikasi multi-kelas dengan empat
kelas: red, blue, green, dan yellow. Permasalahan klasifikasi multi-kelas ini dapat
dibagi menjadi enam himpunan data klasifikasi biner sebagai berikut [24]:
Cara ini menghasilkan himpunan data yang lebih banyak, yang pada
gilirannya, menyebabkan lebih banyak model daripada strategi OvR. Formula untuk
menghitung jumlah himpunan data biner [24]:
Setiap model klasifikasi biner memprediksi satu label kelas dan kemudian
model dengan prediksi terbanyak diprediksi dengan strategi OvO. Biasanya,
pendekatan ini digunakan oleh SVM dan algoritma berdasarkan kernel yang
berhubungan [24].
yang terbatas. Prodsedur ini memiliki satu parameter yang disebut k yang mengacu
pada jumlah grup pembagian sampel data yang dibagi. Karena itu, prosedur ini
sering disebut k-fold cross-validation. Nilai k yang paling umum digunakan adalah 5
atau 10, nilai yang berdasarkan eksperimen secara umum menghasilkan estimasi
skill model dengan bias rendah dan variasi sedang [25].
Validasi silang utamanya digunakan dalam penerapan ML untuk
mengestimasi skill model ML pada data yang belum pernah dilihat. Metode ini
populer karena sederhana untuk dipahami dan biasanya menghasilkan estimasi yang
kurang bias atau kurang optimistik dari skill model daripada metode lain, seperti
pembagian train/test sederhana. Prosedur umum dari k-fold cross-validation adalah
sebagai berikut [25]:
(c) Cocokkan model pada data latih dan evaluasi dengan data uji.
Confusion matrix juga sering disebut error matrix. Pada dasarnya confusion
matrix memberikan informasi perbandingan hasil klasifikasi yang dilakukan oleh
sistem (model) dengan hasil klasifikasi sebenarnya. Confusion matrix berbentuk
tabel matriks yang menggambarkan kinerja model klasifikasi pada serangkaian data
uji yang nilai sebenarnya diketahui. Gambar 3.12. berikut ini merupakan confusion
matrix dengan 4 kombinasi nilai prediksi dan nilai aktual yang berbeda. Perhatikan
Gambar 3.12. berikut ini [27]:
kanker (class 1) dan dari model yang dibuat memprediksi pasien tersebut
menderita kanker (class 1).
III.8. Hipotesis
PELAKSANAAN PENELITIAN
Bahan yang digunakan dalam penelitian ini dapat dilihat pada Tabel 4.1. Alat
yang digunakan dalam penelitian ini dapat dilihat pada Tabel 4.2.
43
44
Studi literatur dilakukan dengan menggali materi yang relevan dari buku,
jurnal, maupun artikel baik melalui media cetak maupun daring. Studi literatur
dilaksanakan untuk mendapatkan dasar utama perancangan desain dengan tinjauan
yang terkait dengan psikoterapi, electroecephalography (EEG), pengolahan data
EEG, metode klasifikasi Support Vector Machine (SVM), emosi, dan EEG untuk
klasifikasi emosi.
EEG. Perangkat lunak ekstraksi fitur dibuat dengan menggunakan pustaka numpy
untuk perhitungan matematis, scipy untuk melakukan estimasi PSD dengan
metode Welch dan operasi integrasi, mne untuk membuka dan memanipulasi data
EEG, serta csv untuk membuat berkas berisikan fitur dengan format .csv.
Perangkat lunak SVM dibuat dengan menggunakan pustaka pandas untuk
membaca dan memanipulasi berkas .csv yang berisikan fitur, scikit-learn
untuk membuat model SVM beserta validasi silang dan pengujian, dan csv untuk
menyimpan data hasil validasi silang dan pengujian ke dalam bentuk berkas .csv.
5. Suhu dan pencahayaan diubah agar probandus nyaman sesuai umpan balik
probandus.
SAM dari probandus. Terdapat 9 nilai valensi dan gairah pada SAM. Jenis emosi
data EEG dikategorikan sebagai:
1. Senang jika stimulus video nilai valensi > 5 dan gairah > 5.
Data dianggap valid jika emosi stimulus dan emosi yang dibangkitkan sesuai.
Dari data yang valid dihasilkan dua varian sampel data EEG. Varian pertama yaitu
multi-sesi dengan durasi sampel 3 menit per emosi per sesi sesuai dengan stimulus,
sedangkan varian ke dua yaitu sesi tunggal dengan 4 sampel berdurasi 45 detik per
emosi per sesi. Tiap sampel valid dilabeli dengan emosi sesuai dengan stimulus. Fitur
berupa daya, energi, dan asimetri diekstrak dari tiap sampel dan disimpan ke dalam
berkas dalam bentuk .csv.
Data fitur dibagi menjadi 20% data uji dan 80% data validasi silang secara
acak. Data validasi silang dibagi menjadi 10 bagian secara acak. 1 bagian digunakan
untuk pelatihan dan 9 bagian digunakan untuk validasi. Validasi silang yang
digunakan adalah 10-fold cross validation. 10-fold cross validation atau validasi
silang 10 kali lipat dilakukan dengan mengulang pelatihan model dengan 9 bagian
dan menguji dengan 1 bagian sebanyak 10 kali yang dilakukan pada data validasi
atau 80% dari total data.
52
Pada proses validasi silang juga dilakukan uji performansi dari kernel (linier
atau RBF) dan hiperparameter model. Dilakukan validasi performa satu set
hiperparameter model dalam skala logaritmik. Hiperparameter yang digunakan
dalam proses validasi silang ditunjukkan dalam Tabel 4.3..
53
No Kernel C Gamma
1 Linier 0,1 -
2 Linier 1 -
3 Linier 10 -
4 Linier 100 -
5 Linier 1000 -
6 RBF 0,1 1
7 RBF 0,1 0,1
8 RBF 0,1 0,01
9 RBF 0,1 1,00E-03
10 RBF 0,1 1,00E-04
11 RBF 0,1 1,00E-05
12 RBF 0,1 1,00E-06
13 RBF 1 1
14 RBF 1 0,1
15 RBF 1 0,01
16 RBF 1 1,00E-03
17 RBF 1 1,00E-04
18 RBF 1 1,00E-05
19 RBF 1 1,00E-06
20 RBF 10 1
21 RBF 10 0,1
22 RBF 10 0,01
23 RBF 10 1,00E-03
24 RBF 10 1,00E-04
25 RBF 10 1,00E-05
26 RBF 10 1,00E-06
27 RBF 100 1
28 RBF 100 0,1
29 RBF 100 0,01
30 RBF 100 1,00E-03
31 RBF 100 1,00E-04
32 RBF 100 1,00E-05
33 RBF 100 1,00E-06
34 RBF 1000 1
35 RBF 1000 0,1
36 RBF 1000 0,01
37 RBF 1000 1,00E-03
38 RBF 1000 1,00E-04
39 RBF 1000 1,00E-05
40 RBF 1000 1,00E-06
54
Hal ini dilakukan menurut rule of thumb tuning hiperparameter pada SVM.
Data akurasi dari 10 kali validasi dirata-rata dan dihitung standar deviasinya untuk
tiap set hiperparameter yang digunakan. Hiperparameter yang menghasilkan model
SVM dengan performansi terbaik dipilih.
Pada pengujian sistem dilakukan dan uji akurasi dengan menggunakan data
uji. Uji akurasi dilakukan untuk mendapatkan nilai akurasi dari sistem klasifikasi
untuk data uji. Pengujian sistem dilakukan pada sampel sesi tunggal dan multi-sesi.
Sistem dengan model hiperparameter terbaik yang dihasilkan dari langkah validasi
diuji. Pengujian dilakukan dengan menggunakan data uji sebanyak 20% dari data
total. Data uji yang digunakan saling asing dengan data yang digunakan untuk
melatih model. Keluaran dari proses pengujian sistem adalah sebaran keberhasilan
klasifikasi yang ditunjukkan dengan menggunakan confusion matrix. Confusion
matrix berisikan jumlah sampel yang sampel yang diprediksi memiliki emosi
tertentu dibandingkan dengan emosi aktual dari sampel.
Akurasi sistem dinyatakan dengan hasil pengujian sistem terhadap data uji.
Hiperparameter dari sistem yang diuji disesuaikan dengan hiperparameter terbaik dari
hasil validasi silang. Terdapat dua set data yaitu data sesi tunggal dan multi-sesi.
Tuntutan rancangan terpenuhi jika akurasi sistem pada pengujian sesi tunggal lebih
dari 61%. Hasil pengujian multi-sesi dijadikan pertimbangan dalam penerapan sistem
secara nyata.
BAB V
55
56
Gambar 5.2. Diagram alir perangkat lunak preprocessing dan pemilahan data
Preparasi dilakukan satu kali saat perangkat lunak dijalankan. Preprasi berupa
export data EEG berupa berkas dengan ekstensi .BDF, penempatan berkas
pada direktori kerja program, dan pemberian nama berkas dengan angka 1, 2,
3, 4, ... sesuai dengan jumlah berkas yang dimasukkan. Preparasi dilakukan
untuk memastikan bahwa berkas yang akan diolah sesuai dan tidak timbul
galat pada saat program dijalankan.
Setelah preparasi selesai, program mengambil data EEG yang ada dalam
58
folder kerja program. Didapatkan data EEG yang berupa potensial listrik
dalam µV dengan waktu t detik dan jumlah data t × 100 dengan 100 sebagai
sampling rate dalam Hz. Setelah data dibaca, dilakukan pengubahan data ke
dalam domain frekuensi untuk penapisan frekuensi kurang dari 1Hz dan lebih
dari 35Hz. Setelah data ditapis, data dikembalikan pada domain waktu.
Kemudian dilakukan pemisahan data berdasarkan emosi, stimulus, dan
pembagian sampel.
Untuk sampel sesi tunggal, satu 3 menit sampel data untuk tiap emosi per sesi
dibagi menjadi empat 45 detik sampel. Sehingga dalam satu sesi pengambilan
data didapatkan 16 sampel dengan durasi masing-masing sampel selama 45
detik. Untuk multi-sesi 3 menit sampel tiap emosi per sesi diambil sehingga
didapatkan 4 sampel dengan durasi masing-masing sampel selama 3 menit.
Sampel kemudian disimpan dalam folder yang berbeda untuk masing-masing
emosi dalam berkas dengan ekstensi .fif.
Preparasi dilakukan satu kali saat perangkat lunak dijalankan. Preparasi yang
dilakukan berupa penghapusan data sampel dengan pembangkitan emosi yang
tidak valid dan penamaan ulang berkas dengan angka 1, 2, 3, ... sesuai dengan
jumlah berkas. Hal ini dilakukan supaya data yang diolah hanyalah data di
mana emosi probandus berhasil dibangkitkan dan sesuai dengan stimulus yang
diberikan. Selain itu perlu dipastikan bahwa data yang akan diolah berada pada
direktori yang telah ditentukan.
60
Setelah preparasi selesai, data yang sudah ditapis diambil, kemudian dilakukan
estimasi PSD untuk tiap-tiap sampel. Data PSD dipisahkan berdasarkan
rentang frekuensi gelombang delta, theta, alpha, beta, dan gamma. Dari PSD
kemudian dilakukan penghitungan daya rerata, asimetri serebral, dan energi
dari data untuk tiap rentang gelombang otak. Penghitungan dilakukan untuk
tiap kanal EEG. Untuk fitur daya dan energi didapatkan 80 nilai dari 16 kanal
dan 5 gelombang otak. Untuk fitur asimetri serebral didapatkan 40 nilai dari 8
pasang kanal dan 5 gelombang otak. Sehingga jumlah total fitur adalah 200.
Fitur kemudian disimpan ke dalam berkas berbentuk bentuk .csv.
Sebelum program dimulai dipastikan bahwa berkas yang akan diolah berada
dalam direktori yang sesuai. Data fitur dalam bentuk berkas .csv kemudian
dibaca. Data yang terbaca dibagi menjadi data uji dengan proporsi 20% dari
data total dan data latih dan validasi dengan proporsi 80%. Pembagian data
dilakukan secara acak.
Kemudian dilakukan validasi silang 10 kali lipat dengan 80% data. Data
tersebut dibagi lagi menjadi 10 bagian secara acak. 9 bagian digunakan untuk
data latih dan 1 bagian digunakan untuk validasi. Pada proses latih dan
62
melakukan penapisan data dalam frekuensi yang telah disebutkan, dan menyimpan
berkas dalam bentuk .fif. Filter digital dirancang dengan parameter frekuensi
batas bawah dan batas atas masing-masing 1Hz dan 35Hz, bandwidth transisi 1Hz,
desain FIR, dan window Hamming.
Terdapat dua varian dari program ini. Varian pertama memotong data EEG
dengan durasi penuh selama 3 menit per emosi dan menghasilkan keluaran berupa
berkas .fif (multi-sampel) sedangkan varian ke dua memotong data EEG selama 3
menit per emosi dan menghasilkan 4 berkas .fif (sampel tunggal) dengan durasi
masing-masing selama 45 detik. Masing-masing berkas .fif disimpan dalam
direktori yang diberi label senang, takut, sedih, dan tenang, sesuai dengan emosi
stimulus yang diberikan saat perekaman.
Program ini diberi nama Classifier.py. Pada program ini SVM dilatih,
divalidasi, dan diuji. Pada program ini digunakan pustaka pandas, sklearn, dan
64
csv. pandas digunakan untuk membaca dan memanipulasi berkas .csv yang
berisikan fitur. sklearn digunakan untuk membangun model SVM, membagi data,
melakukan validasi silang 10 kali lipat, dan menguji performa model. csv
digunakan untuk membuat berkas .csv yang berisikan hasil validasi silang dan
performansi model.
V.3. Pembahasan
Total data yang didapatkan dalam penelitian ini berjumlah 45 sampel dari 45
sesi pengambilan data. Emosi dari stimulus yang diberikan pada probandus
dibandingkan dengan emosi yang sebenarnya dirasakan berdasarkan hasil dari SAM.
Dalam seluruh data tersebut setidaknya terdapat satu emosi probandus yang sesuai
dengan stimulus yang diberikan, misalkan probandus merasakan takut saat diberikan
stimulus takut. Pada mayoritas data yang didapatkan, setidaknya ada satu emosi
probandus yang berbeda dengan stimulus yang diberikan. Keberhasilan
pembangkitan emosi berdasarkan jenis emosi yang dibangkitkan dirangkum dalam
Tabel 5.1..
Jumlah (sampel)
Emosi Persentase (%)
Sesuai Total
Senang 27 45 60,00
Takut 33 45 73,33
Sedih 17 45 37,78
Tenang 21 45 46,67
Total 98 180 54,44
Dari tabel dapat dilihat bahwa emosi yang sesuai hanya berhasil dibangkitkan
pada 98 sampel emosi dari potensi total 180 sampel. Emosi takut menjadi emosi
65
Jumlah (sampel)
Variasi Video Persentase (%)
Sesuai Total
Z1 16 28 57,14
Z2 13 28 46,43
Z3 45 84 53,57
Z4 24 40 60,00
Total 98 180 54,44
Dari 98 data EEG dengan emosi yang valid, 20% sampel digunakan untuk data
uji dan 80% data digunakan untuk data validasi secara acak. Apabila data tidak dapat
dibagi dengan sempurna maka jumlah data uji dibulatkan naik. Dalam pembagian
data multi-sesi, didapatkan 20 data uji dan 78 data validasi. 78 data validasi yang
sudah dipisah kemudian dibagi lagi menjadi 10 bagian. Masing-masing bagian berisi
7 hingga 8 sampel. Pembagian dilakukan secara acak dan bertingkat sehingga dapat
dipastikan bahwa sampel setiap emosi dapat terwakilkan dalam tiap bagian. Dengan
kata lain setiap bagian setidaknya memiliki satu data sampel untuk tiap emosi. Untuk
pembagian data sesi tunggal, didapatkan 79 sampel data uji dan 313 data validasi.
Dilakukan pembagian yang sama dengan pembagian pada data multi-sesi. Masing-
masing bagian validasi memiliki 31 hingga 32 sampel.
Dilakukan ekstraksi fitur untuk tiap-tiap sampel. Fitur berupa daya, energi,
dan asimetri serebral dihitung berdasarkan PSD masing-masing sampel. Fitur daya
dihitung dengan menggunakan Persamaan 5.1 berdasarkan [22].
Z f1
P = Sx (f )df (5.1)
fo
di mana fo dan f1 adalah frekuensi batas atas dan bawah frekuensi yang diintegralkan,
Sx adalah nilai PSD pada frekuensi tertentu.
67
di mana f s adalah frekuensi sampling, ∆fwelch adalah selisih sampel frekuensi PSD
berdasarkan perhitungan dengan menggunakan pustaka scipy, dan ∆ff f t adalah
selisih sampel frekuensi FFT berdasarkan perhitungan dengan pustaka numpy.
Asimetri dihitung dengan menggunakan Persamaan 5.4 berdasarkan [8].
di mana Plef t adalah daya yang dihitung dari elektroda sebelah kiri dan Pright adalah
pasangan elektroda yang ada di sebelah kanan.
Kemudian fitur dinormalisasi dengan membaginya dengan nilai fitur pada
rentang frekuensi penuh sehingga semua nilai fitur berada dalam rentang di antara 0
sampai 1. Persamaan normalisasi ditunjukkan pada Persamaan 5.4.
F iturδ,θ,α,γ,β
F iturnormalδ,θ,α,β,γ = (5.4)
F iturtotal
Hal ini dilakukan untuk menghilangkan variasi nilai fitur antar sesi.
1. Multi-Sesi
Hasil validasi silang pada sampel multi-sesi dengan kernel linier dapat dilihat
dalam Tabel 5.3.. Hasil validasi silang dengan kernel RBF dirangkum dalam
Tabel 5.4. dalam bentuk matriks.
Dari Tabel 5.3. dan Tabel 5.4. dapat dilihat bahwa pada kernel linier
hiperparameter C dengan nilai 100 dan 1000 memberikan akurasi terbaik
yaitu 32,58±15,16%. Sedangkan pada kernel RBF muncul perbedaan akurasi
antara C = 100 dan C = 1000 dengan masuknya hiperparameter γ. Akurasi
terbaik pada kernel RBF muncul dengan nilai C = 1000 dan γ = 0, 1 sebesar
39,58±15,10%.
Tabel 5.3. Akurasi Kernel Linier
No C Akurasi (%)
1 0,1 9,29±1,07
2 1 22,57±7,49
3 10 25,77±9,82
4 100 32,58±15,16
5 1000 32,58±15,16
γ
C
1 0,1 0,01 1e-03 1e-04 1e-05 1e-05
0,10 9,29±1,07 9,29±1,07 9,29±1,07 9,29±1,07 9,29±1,07 9,29±1,07 9,29±1,07
1,00 18,37±4,30 20,11±13,08 9,29±1,07 9,29±1,07 9,29±1,07 9,29±1,07 9,29±1,07
10,00 26,19±14,73 25,44±11,07 20,11±13,08 9,29±1,07 9,29±1,07 9,29±1,07 9,29±1,07
100,00 24,57±12,19 30,87±14,11 22,90±9,15 20,11±13,08 9,29±1,07 9,29±1,07 9,29±1,07
1000,00 24,57±15,10 39,58±15,10 33,45±7,42 22,68±9,06 20,11±13,08 9,29±1,07 9,29±1,07
69
70
2. Sesi Tunggal
Hasil validasi silang pada sampel sesi tunggal dengan kernel linier dapat dilihat
dalam Tabel 5.5.. Hasil validasi silang dengan kernel RBF dirangkum dalam
Tabel 5.6. dalam bentuk matriks.
Dari Tabel 5.5. dan Tabel 5.6. dapat dilihat bahwa pada kernel linier
hiperparameter C dengan nilai 10 memberikan akurasi terbaik yaitu
58,39±11,96%. Hal yang sama juga dapat dilihat pada kernel RBF dimana
akurasi terbaik didapatkan dengan nilai C = 10 dan γ = 1 sebesar
66,34±12,86%.
No C Akurasi (%)
1 0,1 28,98±14,41
2 1 52,52±16,78
3 10 58,39±11,96
4 100 58,01±18,18
5 1000 54,12±9,83
γ
C
1 0,1 0,01 1e-03 1e-04 1e-05 1e-05
0,10 8,87±0,21 8,87±0,21 8,87±0,21 8,87±0,21 8,87±0,21 8,87±0,21 8,87±0,21
1,00 58,31±17,32 45,82±20,27 8,87±0,21 8,87±0,21 8,87±0,21 8,87±0,21 8,87±0,21
10,00 66,34±12,86 58,07±18,98 51,34±22,40 8,87±0,21 8,87±0,21 8,87±0,21 8,87±0,21
100,00 62,68±11,53 62,51±14,55 57,33±15,77 49,24±23,14 8,87±0,21 8,87±0,21 8,87±0,21
1000,00 62,68±11,53 63,00±7,98 57,96±14,23 55,87±17,69 49,24±23,14 8,87±0,21 8,87±0,21
71
72
1. Multi-Sesi
Dalam multi-sesi digunakan 20 data uji. Persebaran antara emosi hasil prediksi
dan aktual dapat dilihat pada Tabel 5.7..
Aktual
Prediksi
Senang Takut Sedih Tenang
Senang 2 1 0 3
Takut 1 2 0 2
Sedih 0 3 3 1
Tenang 1 1 1 2
Jumlah data dengan emosi prediksi dan aktual sama ditandai dengan highlight
hijau. Jumlah total prediksi emosi yang benar adalah 9 data. Akurasi total
yang didapatkan berdasarkan pengujian ini adalah 9/20 = 45, 00%. Dari
confusion matrix dapat dihitung nilai precision, recall, dan skor f1 untuk
mengetahui kemampuan model untuk mengklasifikasikan tiap emosi.
73
T rueP ositive
P recision = (5.5)
T rueP ositive + F alseP ositive
T rueP ositive
Recall = (5.6)
T rueP ositive + F alseN egative
2 × P recision × Recall
F1 = (5.7)
P recision + Recall
40,00%.
Dari hasil perhitungan precision dan recall, dapat dihitung F1 yang merupakan
weighted average dari precision dan recall. Emosi dengan skor F1 paling tinggi
adalah sedih dengan nilai 54,55%. Sedangkan emosi dengan skor F1 paling
rendah adalah tenang dengan nilai 30,77%.
2. Sesi Tunggal Dalam pengujian sesi tunggal digunakan 79 data uji. Sebaran
emosi aktual dibandingkan dengan hasil prediksi dapat dilihat pada Tabel 5.9.
berikut.
Tabel 5.9. Confusion matrix hasil pengujian sesi tunggal
Aktual
Prediksi
Senang Takut Sedih Tenang
Senang 18 5 3 2
Takut 1 14 6 0
Sedih 2 1 9 9
Tenang 2 3 2 9
Jumlah total prediksi emosi yang benar pada pengujian sesi tunggal adalah 50
dari 79 sampel yang digunakan. Sehingga akurasi total classifier dalam
pengujian ini adalah 50/79 = 63, 29%. Untuk mengetahui preforma
kalsifikasi untuk tiap emosi perlu dihitung precison, recall, dan skor F1 yang
ditunjukkan pada tabel Tabel 5.10.
sedih dengan nilai 45,00%. Untuk recall, nilai tertinggi dan terendah tidak
terlalu berbeda jauh. Emosi dengan recall tertinggi adalah takut dengan nilai
66,67%. Sedangkan emosi dengan recall terendah adalah tenang dengan nilai
56,25%.
Untuk nilai F1, yang merupakan weighted average dari precision dan recall,
didapatkan skor tertinggi pada emosi senang dengan nilai 70,59%. Skor F1
terendah diperoleh pada emosi sedih dengan nilai 52,94%.
1. Variasi penempatan elektroda antara satu sesi pengambilan data yang dilakukan
dengan sesi yang lain. Variasi ini disebabkan oleh kesalahan pengukuran saat
mengukur peletakan elektroda ataupun karena bentuk kepala probandus sendiri.
2. Adanya artefak yang belum dapat diperbaiki atau ditapis dengan menggunakan
metode preprocessing yang dilakukan pada sistem yang dibangun. Artefak ini
dapat berupa kedipan/gerakan mata, detak jantung, ataupun goyangan kabel
akibat gerakan probandus.
Akurasi sampel tunggal lebih tinggi daripada multi-sampel karena pada saat
pengacakan data dalam data latih dan data validasi, kemungkinan besar terdapat data
76
latih dan data validasi dari probandus yang sama, emosi yang sama, walaupun dalam
waktu yang berbeda. Kemungkinan terdapat data yang diambil dalam satu sesi yang
sama, memiliki emosi yang sama, dan digunakan sebagai data latih, validasi, dan
uji. Dalam sampel tunggal, data latih yang digunakan memiliki karakteristik lebih
mirip dengan sampel uji. Sehingga dalam sampel tunggal, sistem dapat dikatakan
sudah mengenali karakteristik EEG dari seseorang. Penggunaan sampling sampel
tunggal tidak dapat dikatakan merupakan sebuah kejadian overfitting karena sampel
yang digunakan untuk pengujian, validasi, dan pelatihan berbeda dari satu dengan
yang lainnya.
Pada multi-sampel, tidak ada data sampel dengan emosi yang sama yang
diambil pada sesi yang sama. Sehingga data uji maupun validasi merupakan data
yang dapat dikatakan sama sekali asing terhadap sistem klasifikasi. Oleh karena itu
akurasi yang didapatkan pada sampling multi-sampel lebih rendah daripada sampel
tunggal. Akan tetapi situasi dimana sistem klasifikasi sama sekali asing dengan data
masukan lebih mendekati keadaan nyata utamanya pada saat dilakukan psikoterapi.
Dalam psikoterapi, terapis berusaha menyelesaikan masalah klien dalam
waktu sesingkat mungkin dan hasil sebaik mungkin. Dengan kata lain jumlah sesi
psikoterapi diusahakan seminimal mungkin. Dalam kondisi tersebut boleh jadi
sistem klasifikasi hanya memiliki akurasi dalam kisaran sampel multi-sesi. Akurasi
multi sesi hanya 20% lebih tinggi dibandingkan dengan menebak secara acak (25%).
Performa seperti ini menurut peneliti tidak dapat diterima.
Sehingga dalam penerapannya, akurasi sistem klasifikasi dapat ditingkatkan
apabila sistem sudah mengenali karakteristik data EEG dari seseorang. Salah satu
cara untuk melakukannya dalam penerapan psikoterapi adalah dengan mengambil
sampel EEG klien sebelum dilakukan sesi utama psikoterapi, dengan syarat sampel
EEG klien yang diambil memiliki label yang jelas. Dengan demikian sistem dapat
77
VI.1. Kesimpulan
1. Akurasi klasifikasi emosi multi sesi keseluruhan sebesar 45,00% dari 19 sampel
uji. Klasifikasi emosi senang (50,00%), takut (28,57%), sedih (75,00%), dan
tenang (25,00%) berhasil dilakukan.
78
79
[6] Jonathan Posner, James A. Russell dan Bradley S. Peterson. “The circumplex
model of affect: An integrative approach to affective neuroscience, cognitive
development, and psychopathology”. Development and psychopathology,
17(3):715–734, 2005. Diakses dari https://www.ncbi.nlm.nih.gov/pmc/articles/
PMC2367156/.
[7] Raja Majid Mehmood dan Hyo Jong Lee. Emotion classification of EEG brain
signal using SVM and KNN, June 2015. Diakses dari http://ieeexplore.ieee.org/
lpdocs/epic03/wrapper.htm?arnumber=7169786.
[8] Yuan-Pin Lin, Chi-Hong Wang, Tzyy-Ping Jung, Tien-Lin Wu, Shyh-Kang
Jeng, Jeng-Ren Duann dan Jyh-Horng Chen. “EEG-Based Emotion Recognition
in Music Listening”. IEEE Transactions on Biomedical Engineering,
57(7):1798–1806, July 2010. Diakses dari http://ieeexplore.ieee.org/document/
5458075/.
[9] Siuly Siuly, Yan Li dan Yanchun Zhang. EEG Signal Analysis
and Classification. Health Information Science. Springer International
Publishing, Cham, 2016. Diakses dari http://link.springer.com/10.1007/
978-3-319-47653-7.
[10] Mi-Sook Park, Hyeong-Seok Oh, Hoyeon Jeong dan Jin-Hun Sohn. Eeg-based
emotion recogntion during emotionally evocative films, February 2013. Diakses
dari http://ieeexplore.ieee.org/document/6506629/.
[11] Barjinder Kaur, Dinesh Singh dan Partha Pratim Roy. “EEG Based
Emotion Classification Mechanism in BCI”. Procedia Computer Science,
132:752–758, 2018. Diakses dari https://linkinghub.elsevier.com/retrieve/pii/
S1877050918308196.
80
81
[12] Sreeshakthy M. dan Preethi J. Classification of emotion from EEG using hybrid
radial basis function networks with elitist PSO, January 2015. Diakses dari
http://ieeexplore.ieee.org/document/7282340/.
[13] Ahmad Tauseef Sohaib, Shahnawaz Qureshi, Johan Hagelbäck, Olle Hilborn
dan Petar Jerčić. Evaluating Classifiers for Emotion Recognition Using
EEG. Dalam David Hutchison, Takeo Kanade, Josef Kittler, Jon M.
Kleinberg, Friedemann Mattern, John C. Mitchell, Moni Naor, Oscar Nierstrasz,
C. Pandu Rangan, Bernhard Steffen, Madhu Sudan, Demetri Terzopoulos, Doug
Tygar, Moshe Y. Vardi, Gerhard Weikum, Dylan D. Schmorrow dan Cali M.
Fidopiastis, editors, Foundations of Augmented Cognition, volume 8027, hal.
492–501. Springer Berlin Heidelberg, Berlin, Heidelberg, 2013. Diakses dari
http://link.springer.com/10.1007/978-3-642-39454-6_53.
[14] Aayush Bhardwaj, Ankit Gupta, Pallav Jain, Asha Rani dan Jyoti Yadav.
Classification of human emotions from EEG signals using SVM and LDA
Classifiers, February 2015. Diakses dari http://ieeexplore.ieee.org/document/
7095376/.
[17] Saeid Sanei dan Jonathan Chambers. “EEG Signal Processing”. hal. 313.
[19] Anastasia Veloni, Nikolaos Miridakis dan Erysso Boukouvala. Digital and
statistical signal processing. CRC Press, Taylor & Francis Group, Boca Raton,
FL, 2019.
[21] OM Solomon Jr. “Psd computations using welch’s method”. STIN, 92:23584,
1991.
[23] Asa Ben-Hur dan Jason Weston. A User’s Guide to Support Vector Machines.
Dalam Oliviero Carugo dan Frank Eisenhaber, editors, Data Mining Techniques
for the Life Sciences, volume 609, hal. 223–239. Humana Press, Totowa, NJ,
2010. Diakses dari http://link.springer.com/10.1007/978-1-60327-241-4_13.
Series Title: Methods in Molecular Biology.
83
LAMPIRAN A
84
85
Tabel A.1. Fitur daya gelombang delta hingga gamma elektroda Fp1 dari sampel 1
hingga 40
Tabel A.2. Fitur energi gelombang delta hingga gamma elektroda Fp1 dari sampel 1
hingga 40
Tabel A.3. Fitur asimetri gelombang delta hingga gamma elektroda Fp1-Fp2 dari
sampel 1 hingga 40
Tabel A.4. Fitur daya gelombang delta hingga gamma elektroda Fp1 dari sampel 1
hingga 40
Tabel A.5. Fitur energi gelombang delta hingga gamma elektroda Fp1 dari sampel 1
hingga 40
Tabel A.6. Fitur asimetri gelombang delta hingga gamma elektroda Fp1-Fp2 dari
sampel 1 hingga 40
Tabel A.7. Hasil validasi silang multi-sesi beserta hyperparameter yang digunakan
No Rerata σ Parameter
1 0,09 0,01 {’C’: 0.1, ’gamma’: 1, ’kernel’: ’rbf’}
2 0,09 0,01 {’C’: 0.1, ’gamma’: 0.1, ’kernel’: ’rbf’}
3 0,09 0,01 {’C’: 0.1, ’gamma’: 0.01, ’kernel’: ’rbf’}
4 0,09 0,01 {’C’: 0.1, ’gamma’: 0.001, ’kernel’: ’rbf’}
5 0,09 0,01 {’C’: 0.1, ’gamma’: 0.0001, ’kernel’: ’rbf’}
6 0,09 0,01 {’C’: 0.1, ’gamma’: 1e-05, ’kernel’: ’rbf’}
7 0,09 0,01 {’C’: 0.1, ’gamma’: 1e-06, ’kernel’: ’rbf’}
8 0,18 0,04 {’C’: 1, ’gamma’: 1, ’kernel’: ’rbf’}
9 0,20 0,13 {’C’: 1, ’gamma’: 0.1, ’kernel’: ’rbf’}
10 0,09 0,01 {’C’: 1, ’gamma’: 0.01, ’kernel’: ’rbf’}
11 0,09 0,01 {’C’: 1, ’gamma’: 0.001, ’kernel’: ’rbf’}
12 0,09 0,01 {’C’: 1, ’gamma’: 0.0001, ’kernel’: ’rbf’}
13 0,09 0,01 {’C’: 1, ’gamma’: 1e-05, ’kernel’: ’rbf’}
14 0,09 0,01 {’C’: 1, ’gamma’: 1e-06, ’kernel’: ’rbf’}
15 0,26 0,15 {’C’: 10, ’gamma’: 1, ’kernel’: ’rbf’}
16 0,25 0,11 {’C’: 10, ’gamma’: 0.1, ’kernel’: ’rbf’}
17 0,20 0,13 {’C’: 10, ’gamma’: 0.01, ’kernel’: ’rbf’}
18 0,09 0,01 {’C’: 10, ’gamma’: 0.001, ’kernel’: ’rbf’}
19 0,09 0,01 {’C’: 10, ’gamma’: 0.0001, ’kernel’: ’rbf’}
20 0,09 0,01 {’C’: 10, ’gamma’: 1e-05, ’kernel’: ’rbf’}
21 0,09 0,01 {’C’: 10, ’gamma’: 1e-06, ’kernel’: ’rbf’}
22 0,25 0,12 {’C’: 100, ’gamma’: 1, ’kernel’: ’rbf’}
23 0,31 0,14 {’C’: 100, ’gamma’: 0.1, ’kernel’: ’rbf’}
24 0,23 0,09 {’C’: 100, ’gamma’: 0.01, ’kernel’: ’rbf’}
25 0,20 0,13 {’C’: 100, ’gamma’: 0.001, ’kernel’: ’rbf’}
26 0,09 0,01 {’C’: 100, ’gamma’: 0.0001, ’kernel’: ’rbf’}
27 0,09 0,01 {’C’: 100, ’gamma’: 1e-05, ’kernel’: ’rbf’}
28 0,09 0,01 {’C’: 100, ’gamma’: 1e-06, ’kernel’: ’rbf’}
29 0,25 0,12 {’C’: 1000, ’gamma’: 1, ’kernel’: ’rbf’}
30 0,40 0,15 {’C’: 1000, ’gamma’: 0.1, ’kernel’: ’rbf’}
31 0,33 0,07 {’C’: 1000, ’gamma’: 0.01, ’kernel’: ’rbf’}
32 0,23 0,09 {’C’: 1000, ’gamma’: 0.001, ’kernel’: ’rbf’}
33 0,20 0,13 {’C’: 1000, ’gamma’: 0.0001, ’kernel’: ’rbf’}
34 0,09 0,01 {’C’: 1000, ’gamma’: 1e-05, ’kernel’: ’rbf’}
35 0,09 0,01 {’C’: 1000, ’gamma’: 1e-06, ’kernel’: ’rbf’}
36 0,09 0,01 {’C’: 0.1, ’kernel’: ’linear’}
37 0,23 0,07 {’C’: 1, ’kernel’: ’linear’}
38 0,26 0,10 {’C’: 10, ’kernel’: ’linear’}
39 0,33 0,15 {’C’: 100, ’kernel’: ’linear’}
40 0,33 0,15 {’C’: 1000, ’kernel’: ’linear’}
92
Tabel A.8. Hasil validasi silang sesi tunggal beserta hyperparameter yang digunakan
No Rerata σ Parameter
1 0,09 0,00 {’C’: 0,1, ’gamma’: 1, ’kernel’: ’rbf’}
2 0,09 0,00 {’C’: 0,1, ’gamma’: 0,1, ’kernel’: ’rbf’}
3 0,09 0,00 {’C’: 0,1, ’gamma’: 0,01, ’kernel’: ’rbf’}
4 0,09 0,00 {’C’: 0,1, ’gamma’: 0,001, ’kernel’: ’rbf’}
5 0,09 0,00 {’C’: 0,1, ’gamma’: 0,0001, ’kernel’: ’rbf’}
6 0,09 0,00 {’C’: 0,1, ’gamma’: 1e-05, ’kernel’: ’rbf’}
7 0,09 0,00 {’C’: 0,1, ’gamma’: 1e-06, ’kernel’: ’rbf’}
8 0,58 0,17 {’C’: 1, ’gamma’: 1, ’kernel’: ’rbf’}
9 0,46 0,20 {’C’: 1, ’gamma’: 0,1, ’kernel’: ’rbf’}
10 0,09 0,00 {’C’: 1, ’gamma’: 0,01, ’kernel’: ’rbf’}
11 0,09 0,00 {’C’: 1, ’gamma’: 0,001, ’kernel’: ’rbf’}
12 0,09 0,00 {’C’: 1, ’gamma’: 0,0001, ’kernel’: ’rbf’}
13 0,09 0,00 {’C’: 1, ’gamma’: 1e-05, ’kernel’: ’rbf’}
14 0,09 0,00 {’C’: 1, ’gamma’: 1e-06, ’kernel’: ’rbf’}
15 0,66 0,13 {’C’: 10, ’gamma’: 1, ’kernel’: ’rbf’}
16 0,58 0,19 {’C’: 10, ’gamma’: 0,1, ’kernel’: ’rbf’}
17 0,51 0,22 {’C’: 10, ’gamma’: 0,01, ’kernel’: ’rbf’}
18 0,09 0,00 {’C’: 10, ’gamma’: 0,001, ’kernel’: ’rbf’}
19 0,09 0,00 {’C’: 10, ’gamma’: 0,0001, ’kernel’: ’rbf’}
20 0,09 0,00 {’C’: 10, ’gamma’: 1e-05, ’kernel’: ’rbf’}
21 0,09 0,00 {’C’: 10, ’gamma’: 1e-06, ’kernel’: ’rbf’}
22 0,63 0,12 {’C’: 100, ’gamma’: 1, ’kernel’: ’rbf’}
23 0,63 0,15 {’C’: 100, ’gamma’: 0,1, ’kernel’: ’rbf’}
24 0,57 0,16 {’C’: 100, ’gamma’: 0,01, ’kernel’: ’rbf’}
25 0,49 0,23 {’C’: 100, ’gamma’: 0,001, ’kernel’: ’rbf’}
26 0,09 0,00 {’C’: 100, ’gamma’: 0,0001, ’kernel’: ’rbf’}
27 0,09 0,00 {’C’: 100, ’gamma’: 1e-05, ’kernel’: ’rbf’}
28 0,09 0,00 {’C’: 100, ’gamma’: 1e-06, ’kernel’: ’rbf’}
29 0,63 0,12 {’C’: 1000, ’gamma’: 1, ’kernel’: ’rbf’}
30 0,63 0,08 {’C’: 1000, ’gamma’: 0,1, ’kernel’: ’rbf’}
31 0,58 0,14 {’C’: 1000, ’gamma’: 0,01, ’kernel’: ’rbf’}
32 0,56 0,18 {’C’: 1000, ’gamma’: 0,001, ’kernel’: ’rbf’}
33 0,49 0,23 {’C’: 1000, ’gamma’: 0,0001, ’kernel’: ’rbf’}
34 0,09 0,00 {’C’: 1000, ’gamma’: 1e-05, ’kernel’: ’rbf’}
35 0,09 0,00 {’C’: 1000, ’gamma’: 1e-06, ’kernel’: ’rbf’}
36 0,29 0,14 {’C’: 0,1, ’kernel’: ’linear’}
37 0,53 0,17 {’C’: 1, ’kernel’: ’linear’}
38 0,58 0,12 {’C’: 10, ’kernel’: ’linear’}
39 0,58 0,18 {’C’: 100, ’kernel’: ’linear’}
40 0,54 0,10 {’C’: 1000, ’kernel’: ’linear’}
LAMPIRAN B
LISTING PROGRAM
1 # −∗− c o d i n g : u t f −8 −∗−
2 """
3 C r e a t e d on Thu Mar 5 1 4 : 4 8 : 1 7 2020
4
5 @author : G h a z i a n
6 """
7 import o s
8 import mne
9
10 delay = [120]
11 time = [180 , 120 , 180 , 120 , 180 , 120 , 180]
12
13 # J e n i s e m o s i dan s t i m u l u s
14 emo1 = [ ’ s e d i h ’ , ’ t e n a n g ’ , ’ t a k u t ’ , ’ s e n a n g ’ ]
15 a = ’ Z1 ’
16
17 #Nama f i l e u n t u k d i b u k a
18 name = [ ’ 1 ’ , ’ 2 ’ , ’ 3 ’ , ’ 4 ’ , ’ 13 ’ , ’ 20 ’ , ’ 27 ’ ]
19
20 # Fungsi pre pr oc ess in g
21 d e f p r e p r o c e s s i n g ( raw ) :
22 raw = raw . f i l t e r ( l _ f r e q = 1 , h _ f r e q = 3 5 ,
23 l_trans_bandwidth = 1 ,
24 h_trans_bandwidth = 1 ,
25 fir_design=’ firwin ’ )
26 r e t u r n raw
93
94
27
28 # F u n g s i pembagi f i l e b e r d a s a r k a n e m o s i dan s t i m u l u s
29 d e f s p l i t _ e m o t i o n ( d e l a y , t i m e , s t i m , emo ) :
30 f o r i i n range ( l e n ( name ) ) :
31 fname = name [ i ]
32 p a t h = o s . p a t h . j o i n ( fname + ’ . BDF ’ )
33 raw = mne . i o . r e a d _ r a w _ b d f ( p a t h , p r e l o a d = T r u e )
34 raw = p r e p r o c e s s i n g ( raw )
35 raw . d r o p _ c h a n n e l s ( [ ’ A d d _ l e a d 1 ’ , ’ A d d _ l e a d 2 ’ ] )
36 a = 0
37 b = 0
38 fid = 0
39 f o r i n d e x i n range ( l e n ( t i m e ) ) :
40 b = b + time [ index ]
41 i f i n d e x % 2 == 0 :
42 s a v e _ p a t h = os . pa t h . j o i n
43 ( ’C : \ MNE\ D a t a \ Ground T r u t h \ Emosi Cut ’ ,
44 emo [ f i d ] , fname + ’ _ ’ + ’ _raw . f i f ’ )
45 raw . s a v e ( s a v e _ p a t h , t m i n = d e l a y [ 0 ] + a ,
46 tmax = d e l a y [ 0 ] + b ,
47 o v e r w r i t e = True )
48 fid = fid + 1
49 a = b
50
51 # Panggil fungsi
52 s p l i t _ e m o t i o n ( d e l a y , t i m e , a , emo1 )
95
1 # −∗− c o d i n g : u t f −8 −∗−
2 """
3 C r e a t e d on Thu Mar 5 1 5 : 3 0 : 2 6 2020
4
5 @author : G h a z i a n
6 """
7 import o s
8 import numpy a s np
9 from s c i p y import s i g n a l
10 from s c i p y . i n t e g r a t e import s i m p s
11 import mne
12 import c s v
13
14 # D e k l a r a s i nama v a r i a b e l k o s o n g
15 Fp1_delta_psd = [ ]
16 Fp1_theta_psd = [ ]
17 Fp1_alpha_psd = [ ]
18 Fp1_beta_psd = [ ]
19 Fp1_gamma_psd = [ ]
20
21 Fp2_delta_psd = [ ]
22 Fp2_theta_psd = [ ]
23 Fp2_alpha_psd = [ ]
24 Fp2_beta_psd = [ ]
25 Fp2_gamma_psd = [ ]
26
27 F3_delta_psd = []
28 F3_theta_psd = []
29 F3_alpha_psd = [ ]
30 F3_beta_psd = [ ]
96
31 F3_gamma_psd = [ ]
32
33 F4_delta_psd = []
34 F4_theta_psd = []
35 F4_alpha_psd = [ ]
36 F4_beta_psd = [ ]
37 F4_gamma_psd = [ ]
38
39 C3_delta_psd = [ ]
40 C3_theta_psd = [ ]
41 C3_alpha_psd = [ ]
42 C3_beta_psd = [ ]
43 C3_gamma_psd = [ ]
44
45 C4_delta_psd = [ ]
46 C4_theta_psd = [ ]
47 C4_alpha_psd = [ ]
48 C4_beta_psd = [ ]
49 C4_gamma_psd = [ ]
50
51 P3_delta_psd = []
52 P3_theta_psd = []
53 P3_alpha_psd = [ ]
54 P3_beta_psd = [ ]
55 P3_gamma_psd = [ ]
56
57 P4_delta_psd = []
58 P4_theta_psd = []
59 P4_alpha_psd = [ ]
60 P4_beta_psd = [ ]
61 P4_gamma_psd = [ ]
97
62
63 O1_delta_psd = [ ]
64 O1_theta_psd = [ ]
65 O1_alpha_psd = [ ]
66 O1_beta_psd = [ ]
67 O1_gamma_psd = [ ]
68
69 O2_delta_psd = [ ]
70 O2_theta_psd = [ ]
71 O2_alpha_psd = [ ]
72 O2_beta_psd = [ ]
73 O2_gamma_psd = [ ]
74
75 F7_delta_psd = []
76 F7_theta_psd = []
77 F7_alpha_psd = [ ]
78 F7_beta_psd = [ ]
79 F7_gamma_psd = [ ]
80
81 F8_delta_psd = []
82 F8_theta_psd = []
83 F8_alpha_psd = [ ]
84 F8_beta_psd = [ ]
85 F8_gamma_psd = [ ]
86
87 T3_delta_psd = [ ]
88 T3_theta_psd = [ ]
89 T3_alpha_psd = [ ]
90 T3_beta_psd = [ ]
91 T3_gamma_psd = [ ]
92
98
93 T4_delta_psd = [ ]
94 T4_theta_psd = [ ]
95 T4_alpha_psd = [ ]
96 T4_beta_psd = [ ]
97 T4_gamma_psd = [ ]
98
99 T5_delta_psd = [ ]
100 T5_theta_psd = [ ]
101 T5_alpha_psd = [ ]
102 T5_beta_psd = [ ]
103 T5_gamma_psd = [ ]
104
105 T6_delta_psd = [ ]
106 T6_theta_psd = [ ]
107 T6_alpha_psd = [ ]
108 T6_beta_psd = [ ]
109 T6_gamma_psd = [ ]
110
111 Fp1_delta_e = []
112 Fp1_theta_e = []
113 Fp1_alpha_e = [ ]
114 Fp1_beta_e = [ ]
115 Fp1_gamma_e = [ ]
116
117 Fp2_delta_e = []
118 Fp2_theta_e = []
119 Fp2_alpha_e = [ ]
120 Fp2_beta_e = [ ]
121 Fp2_gamma_e = [ ]
122
123 F3_delta_e = []
99
124 F3_theta_e = []
125 F3_alpha_e = [ ]
126 F3_beta_e = [ ]
127 F3_gamma_e = [ ]
128
129 F4_delta_e = []
130 F4_theta_e = []
131 F4_alpha_e = [ ]
132 F4_beta_e = [ ]
133 F4_gamma_e = [ ]
134
135 C3_delta_e = [ ]
136 C3_theta_e = [ ]
137 C3_alpha_e = [ ]
138 C3_beta_e = [ ]
139 C3_gamma_e = [ ]
140
141 C4_delta_e = [ ]
142 C4_theta_e = [ ]
143 C4_alpha_e = [ ]
144 C4_beta_e = [ ]
145 C4_gamma_e = [ ]
146
147 P3_delta_e = []
148 P3_theta_e = []
149 P3_alpha_e = [ ]
150 P3_beta_e = [ ]
151 P3_gamma_e = [ ]
152
153 P4_delta_e = []
154 P4_theta_e = []
100
155 P4_alpha_e = [ ]
156 P4_beta_e = [ ]
157 P4_gamma_e = [ ]
158
159 O1_delta_e = [ ]
160 O1_theta_e = [ ]
161 O1_alpha_e = [ ]
162 O1_beta_e = [ ]
163 O1_gamma_e = [ ]
164
165 O2_delta_e = [ ]
166 O2_theta_e = [ ]
167 O2_alpha_e = [ ]
168 O2_beta_e = [ ]
169 O2_gamma_e = [ ]
170
171 F7_delta_e = []
172 F7_theta_e = []
173 F7_alpha_e = [ ]
174 F7_beta_e = [ ]
175 F7_gamma_e = [ ]
176
177 F8_delta_e = []
178 F8_theta_e = []
179 F8_alpha_e = [ ]
180 F8_beta_e = [ ]
181 F8_gamma_e = [ ]
182
183 T3_delta_e = [ ]
184 T3_theta_e = [ ]
185 T3_alpha_e = [ ]
101
186 T3_beta_e = [ ]
187 T3_gamma_e = [ ]
188
189 T4_delta_e = [ ]
190 T4_theta_e = [ ]
191 T4_alpha_e = [ ]
192 T4_beta_e = [ ]
193 T4_gamma_e = [ ]
194
195 T5_delta_e = [ ]
196 T5_theta_e = [ ]
197 T5_alpha_e = [ ]
198 T5_beta_e = [ ]
199 T5_gamma_e = [ ]
200
201 T6_delta_e = [ ]
202 T6_theta_e = [ ]
203 T6_alpha_e = [ ]
204 T6_beta_e = [ ]
205 T6_gamma_e = [ ]
206
207 Fp12_delta_psd = [ ]
208 Fp12_theta_psd = [ ]
209 Fp12_alpha_psd = [ ]
210 Fp12_beta_psd = [ ]
211 Fp12_gamma_psd = [ ]
212
213 F34_delta_psd = [ ]
214 F34_theta_psd = [ ]
215 F34_alpha_psd = [ ]
216 F34_beta_psd = [ ]
102
217 F34_gamma_psd = [ ]
218
219 C34_delta_psd = [ ]
220 C34_theta_psd = [ ]
221 C34_alpha_psd = [ ]
222 C34_beta_psd = [ ]
223 C34_gamma_psd = [ ]
224
225 P34_delta_psd = [ ]
226 P34_theta_psd = [ ]
227 P34_alpha_psd = [ ]
228 P34_beta_psd = [ ]
229 P34_gamma_psd = [ ]
230
231 O12_delta_psd = [ ]
232 O12_theta_psd = [ ]
233 O12_alpha_psd = [ ]
234 O12_beta_psd = [ ]
235 O12_gamma_psd = [ ]
236
237 F78_delta_psd = [ ]
238 F78_theta_psd = [ ]
239 F78_alpha_psd = [ ]
240 F78_beta_psd = [ ]
241 F78_gamma_psd = [ ]
242
243 T34_delta_psd = [ ]
244 T34_theta_psd = [ ]
245 T34_alpha_psd = [ ]
246 T34_beta_psd = [ ]
247 T34_gamma_psd = [ ]
103
248
249 T56_delta_psd = [ ]
250 T56_theta_psd = [ ]
251 T56_alpha_psd = [ ]
252 T56_beta_psd = [ ]
253 T56_gamma_psd = [ ]
254
255 Fp1 = [ ]
256 Fp2 = [ ]
257 F3 = [ ]
258 F4 = [ ]
259 C3 = [ ]
260 C4 = [ ]
261 P3 = [ ]
262 P4 = [ ]
263 O1 = [ ]
264 O2 = [ ]
265 F7 = [ ]
266 F8 = [ ]
267 T3 = [ ]
268 T4 = [ ]
269 T5 = [ ]
270 T6 = [ ]
271
272 # d e k l a r a s i nama k a n a l
273 Ch = [ ’ Fp1−A1 ’ , ’ Fp2−A2 ’ , ’ F3−A1 ’ , ’ F4−A2 ’ ,
274 ’C3−A1 ’ , ’C4−A2 ’ , ’ P3−A1 ’ , ’ P4−A2 ’ ,
275 ’O1−A1 ’ , ’O2−A2 ’ , ’ F7−A1 ’ , ’ F8−A2 ’ ,
276 ’ T3−A1 ’ , ’ T4−A2 ’ , ’ T5−A1 ’ , ’ T6−A2 ’ ]
277
278 # d e k l a r a s i nama v a r i a b e l k a n a l
104
310 #nama v a r i a b e l e n e r g i
311 e_var = [ Fp1_delta_e , Fp1_theta_e , Fp1_alpha_e , Fp1_beta_e ,
312 Fp1_gamma_e , F p 2 _ d e l t a _ e , F p 2 _ t h e t a _ e , F p 2 _ a l p h a _ e ,
313 F p 2 _ b e t a _ e , Fp2_gamma_e , F 3 _ d e l t a _ e , F 3 _ t h e t a _ e ,
314 F 3 _ a l p h a _ e , F 3 _ b e t a _ e , F3_gamma_e , F 4 _ d e l t a _ e ,
315 F 4 _ t h e t a _ e , F 4 _ a l p h a _ e , F 4 _ b e t a _ e , F4_gamma_e ,
316 C3_delta_e , C3_theta_e , C3_alpha_e , C3_beta_e ,
317 C3_gamma_e , C 4 _ d e l t a _ e , C 4 _ t h e t a _ e , C 4 _ a l p h a _ e ,
318 C 4 _ b e t a _ e , C4_gamma_e , P 3 _ d e l t a _ e , P 3 _ t h e t a _ e ,
319 P 3 _ a l p h a _ e , P 3 _ b e t a _ e , P3_gamma_e , P 4 _ d e l t a _ e ,
320 P 4 _ t h e t a _ e , P 4 _ a l p h a _ e , P 4 _ b e t a _ e , P4_gamma_e ,
321 O 1 _ d e l t a _ e , O 1 _ t h e t a _ e , O1_alpha_e , O1_beta_e ,
322 O1_gamma_e , O 2 _ d e l t a _ e , O 2 _ t h e t a _ e , O2_alpha_e ,
323 O2_beta_e , O2_gamma_e , F 7 _ d e l t a _ e , F 7 _ t h e t a _ e ,
324 F 7 _ a l p h a _ e , F 7 _ b e t a _ e , F7_gamma_e , F 8 _ d e l t a _ e ,
325 F 8 _ t h e t a _ e , F 8 _ a l p h a _ e , F 8 _ b e t a _ e , F8_gamma_e ,
326 T3_delta_e , T3_theta_e , T3_alpha_e , T3_beta_e ,
327 T3_gamma_e , T 4 _ d e l t a _ e , T 4 _ t h e t a _ e , T 4 _ a l p h a _ e ,
328 T 4 _ b e t a _ e , T4_gamma_e , T 5 _ d e l t a _ e , T 5 _ t h e t a _ e ,
329 T 5 _ a l p h a _ e , T 5 _ b e t a _ e , T5_gamma_e , T 6 _ d e l t a _ e ,
330 T 6 _ t h e t a _ e , T 6 _ a l p h a _ e , T 6 _ b e t a _ e , T6_gamma_e ]
331
332 #nama v a r i a b e l a s i m e t r i
333 asymmetry_var = [ Fp12_delta_psd , Fp12_theta_psd , Fp12_alpha_psd ,
334 F p 1 2 _ b e t a _ p s d , Fp12_gamma_psd , F 3 4 _ d e l t a _ p s d ,
335 F34_theta_psd , F34_alpha_psd , F34_beta_psd ,
336 F34_gamma_psd , C 3 4 _ d e l t a _ p s d , C 3 4 _ t h e t a _ p s d ,
337 C 3 4 _ a l p h a _ p s d , C 3 4 _ b e t a _ p s d , C34_gamma_psd ,
338 P34_delta_psd , P34_theta_psd , P34_alpha_psd ,
339 P 3 4 _ b e t a _ p s d , P34_gamma_psd , O 1 2 _ d e l t a _ p s d ,
340 O12_theta_psd , O12_alpha_psd , O12_beta_psd ,
106
341 O12_gamma_psd , F 7 8 _ d e l t a _ p s d , F 7 8 _ t h e t a _ p s d ,
342 F 7 8 _ a l p h a _ p s d , F 7 8 _ b e t a _ p s d , F78_gamma_psd ,
343 T34_delta_psd , T34_theta_psd , T34_alpha_psd ,
344 T 3 4 _ b e t a _ p s d , T34_gamma_psd , T 5 6 _ d e l t a _ p s d ,
345 T56_theta_psd , T56_alpha_psd , T56_beta_psd ,
346 T56_gamma_psd ]
347
348 # r a n g e f r e k u e n s i pemotongan PSD
349 freq_range = [(1 , 4) , (4 , 8) , (8 , 13) , (13 , 30) , (30 , 35)]
350
351 #nama−nama f o l d e r
352 f o l d e r s = [ ’ senang ’ , ’ t a k u t ’ , ’ sedih ’ , ’ tenang ’ ]
353
354 # jumlah f i l e s t i m u l u s 1
355 n s t i m 1 = 27
356 n s t i m 2 = 33
357 n s t i m 3 = 17
358 n s t i m 4 = 21
359
360 s = 0
361
362 # d e f i n i s i k a n f u n g s i pemisah per kanal
363 d e f s e p a r a t e ( ChName ) :
364 c h a n n e l = raw . g e t _ d a t a ( p i c k s = ChName ) . f l a t t e n
365 return channel # kembalikan channel
366
367 # definisikan fungsi ekstraksi fitur
368 d e f f e a t u r e _ e x t r a c t i o n ( s , n , low , h i g h ) :
369 n = n [0]
370 win = 4 ∗ s a m p l i n g _ f r e q
371 f _ v a l u e s , p s d _ v a l u e s = s i g n a l . welch ( n ,
107
372 fs = sampling_freq ,
373 n p e r s e g = win )
374 i d x _ d e l t a = np . l o g i c a l _ a n d ( f _ v a l u e s >= low ,
375 f _ v a l u e s <= h i g h )
376 freq_res = f_values [1] − f_values [0]
377 power = s i m p s ( p s d _ v a l u e s [ i d x _ d e l t a ] , dx = f r e q _ r e s )
378 t o t a l _ p o w e r = s i m p s ( p s d _ v a l u e s , dx= f r e q _ r e s )
379 r e l _ p o w = power / t o t a l _ p o w e r
380 f _ f f t = np . f f t . f f t f r e q ( l e n ( n ) , d = 1 / 1 0 0 )
381 df_fft = f_fft [1] − f_fft [0]
382 E_welch = ( ( 1 / ( 1 / 1 0 0 ) ∗ ( f r e q _ r e s / d f _ f f t ) ∗
383 np . sum ( p s d _ v a l u e s [ i d x _ d e l t a ] ) ) )
384 E_tot = ((1 / (1/100) ∗ ( freq_res / d f _ f f t ) ∗
385 np . sum ( p s d _ v a l u e s ) ) )
386 E _ r e l = E_welch / E _ t o t
387
388 # n . clear ()
389
390 return rel_pow , E _ r e l
391
392 def save ( n ) :
393 f o r i i n range ( l e n ( F p 1 _ d e l t a _ p s d ) ) :
394 F p 1 2 _ d e l t a _ p s d = abs ( F p 1 _ d e l t a _ p s d [ i ]− F p 2 _ d e l t a _ p s d [ i ] )
395 F p 1 2 _ t h e t a _ p s d = abs ( F p 1 _ t h e t a _ p s d [ i ]− F p 2 _ t h e t a _ p s d [ i ] )
396 F p 1 2 _ a l p h a _ p s d = abs ( F p 1 _ a l p h a _ p s d [ i ]− F p 2 _ a l p h a _ p s d [ i ] )
397 F p 1 2 _ b e t a _ p s d = abs ( F p 1 _ b e t a _ p s d [ i ]− F p 2 _ b e t a _ p s d [ i ] )
398 Fp12_gamma_psd = abs ( Fp1_gamma_psd [ i ]−Fp2_gamma_psd [ i ] )
399 F 3 4 _ d e l t a _ p s d = abs ( F 3 _ d e l t a _ p s d [ i ]− F 4 _ d e l t a _ p s d [ i ] )
400 F 3 4 _ t h e t a _ p s d = abs ( F 3 _ t h e t a _ p s d [ i ]− F 4 _ t h e t a _ p s d [ i ] )
401 F 3 4 _ a l p h a _ p s d = abs ( F 3 _ a l p h a _ p s d [ i ]− F 4 _ a l p h a _ p s d [ i ] )
402 F 3 4 _ b e t a _ p s d = abs ( F 3 _ b e t a _ p s d [ i ]− F 4 _ b e t a _ p s d [ i ] )
108
434
435 f i t u r = ( Fp1_delta_psd [ i ] , Fp1_theta_psd [ i ] , Fp1_alpha_psd [ i ] ,
436 F p 1 _ b e t a _ p s d [ i ] , Fp1_gamma_psd [ i ] , F p 2 _ d e l t a _ p s d [ i ] ,
437 Fp2_theta_psd [ i ] , Fp2_alpha_psd [ i ] , Fp2_beta_psd [ i ] ,
438 Fp2_gamma_psd [ i ] , F 3 _ d e l t a _ p s d [ i ] , F 3 _ t h e t a _ p s d [ i ] ,
439 F 3 _ a l p h a _ p s d [ i ] , F 3 _ b e t a _ p s d [ i ] , F3_gamma_psd [ i ] ,
440 F4_delta_psd [ i ] , F4_theta_psd [ i ] , F4_alpha_psd [ i ] ,
441 F 4 _ b e t a _ p s d [ i ] , F4_gamma_psd [ i ] , C 3 _ d e l t a _ p s d [ i ] ,
442 C3_theta_psd [ i ] , C3_alpha_psd [ i ] , C3_beta_psd [ i ] ,
443 C3_gamma_psd [ i ] , C 4 _ d e l t a _ p s d [ i ] , C 4 _ t h e t a _ p s d [ i ] ,
444 C 4 _ a l p h a _ p s d [ i ] , C 4 _ b e t a _ p s d [ i ] , C4_gamma_psd [ i ] ,
445 P3_delta_psd [ i ] , P3_theta_psd [ i ] , P3_alpha_psd [ i ] ,
446 P 3 _ b e t a _ p s d [ i ] , P3_gamma_psd [ i ] , P 4 _ d e l t a _ p s d [ i ] ,
447 P4_theta_psd [ i ] , P4_alpha_psd [ i ] , P4_beta_psd [ i ] ,
448 P4_gamma_psd [ i ] , O 1 _ d e l t a _ p s d [ i ] , O 1 _ t h e t a _ p s d [ i ] ,
449 O 1 _ a l p h a _ p s d [ i ] , O 1 _ b e t a _ p s d [ i ] , O1_gamma_psd [ i ] ,
450 O2_delta_psd [ i ] , O2_theta_psd [ i ] , O2_alpha_psd [ i ] ,
451 O 2 _ b e t a _ p s d [ i ] , O2_gamma_psd [ i ] , F 7 _ d e l t a _ p s d [ i ] ,
452 F7_theta_psd [ i ] , F7_alpha_psd [ i ] , F7_beta_psd [ i ] ,
453 F7_gamma_psd [ i ] , F 8 _ d e l t a _ p s d [ i ] , F 8 _ t h e t a _ p s d [ i ] ,
454 F 8 _ a l p h a _ p s d [ i ] , F 8 _ b e t a _ p s d [ i ] , F8_gamma_psd [ i ] ,
455 T3_delta_psd [ i ] , T3_theta_psd [ i ] , T3_alpha_psd [ i ] ,
456 T 3 _ b e t a _ p s d [ i ] , T3_gamma_psd [ i ] , T 4 _ d e l t a _ p s d [ i ] ,
457 T4_theta_psd [ i ] , T4_alpha_psd [ i ] , T4_beta_psd [ i ] ,
458 T4_gamma_psd [ i ] , T 5 _ d e l t a _ p s d [ i ] , T 5 _ t h e t a _ p s d [ i ] ,
459 T 5 _ a l p h a _ p s d [ i ] , T 5 _ b e t a _ p s d [ i ] , T5_gamma_psd [ i ] ,
460 T6_delta_psd [ i ] , T6_theta_psd [ i ] , T6_alpha_psd [ i ] ,
461 T 6 _ b e t a _ p s d [ i ] , T6_gamma_psd [ i ] , F p 1 _ d e l t a _ e [ i ] ,
462 Fp1_theta_e [ i ] , Fp1_alpha_e [ i ] , Fp1_beta_e [ i ] ,
463 Fp1_gamma_e [ i ] , F p 2 _ d e l t a _ e [ i ] , F p 2 _ t h e t a _ e [ i ] ,
464 F p 2 _ a l p h a _ e [ i ] , F p 2 _ b e t a _ e [ i ] , Fp2_gamma_e [ i ] ,
110
496 O 1 2 _ b e t a _ p s d , O12_gamma_psd , F 7 8 _ d e l t a _ p s d ,
497 F78_theta_psd , F78_alpha_psd , F78_beta_psd ,
498 F78_gamma_psd , T 3 4 _ d e l t a _ p s d , T 3 4 _ t h e t a _ p s d ,
499 T 3 4 _ a l p h a _ p s d , T 3 4 _ b e t a _ p s d , T34_gamma_psd ,
500 T56_delta_psd , T56_theta_psd , T56_alpha_psd ,
501 T 5 6 _ b e t a _ p s d , T56_gamma_psd , n )
502
503 w i t h open ( ’ f i t u r _ e m o s i _ v 7 _ 1 0 0 _ a b s _ e a s y m . c s v ’ ,
504 mode= ’ a ’ , n e w l i n e = ’ ’ ) a s f i t u r _ e m o s i :
505 f i t u r _ w r i t e r = csv . w r i t e r ( f i t u r _ e m o s i ,
506 delimiter = ’ , ’)
507 f i t u r _ w r i t e r . writerow ( f i t u r )
508
509 # Baca semua f i l e dalam t i a p f o l d e r
510 f o r x i n range ( l e n ( f o l d e r s ) ) :
511 folder = folders [x]
512 i f f o l d e r == ’ s e n a n g ’ :
513 nstim = nstim1
514 e l i f f o l d e r == ’ t a k u t ’ :
515 nstim = nstim2
516 e l i f f o l d e r == ’ s e d i h ’ :
517 nstim = nstim3
518 e l i f f o l d e r == ’ t e n a n g ’ :
519 nstim = nstim4
520 f o r i i n range ( n s t i m ) :
521 raw = [ ]
522
523 # Buka f i l e
524 fname = o s . p a t h . j o i n ( f o l d e r , s t r ( i + 1 ) + ’ __raw . f i f ’ )
525 raw = mne . i o . r e a d _ r a w _ f i f ( fname , p r e l o a d = T r u e )
526
112
527 #CAR , b i s a d i g u n a k a n a t a u t i d a k
528 # raw . s e t _ e e g _ r e f e r e n c e ( r e f _ c h a n n e l s = ’ a v e r a g e ’ )
529 i n f o = raw . i n f o
530
531 # Dapatkan f r e k u e n s i s a m p l i n g
532 s a m p l i n g _ f r e q = raw . i n f o [ ’ s f r e q ’ ]
533 m = 0
534
535 # Buka dan masukkan d a t a t i a p k a n a l k e v a r i a b e l penampung
536 f o r a i n Ch :
537 channel_data = separate ( a )
538 idx = 0
539 for n in channel_data ( ) :
540 idx = 0
541 i f abs ( n ) >= 100 e −6:
542 c h a n n e l _ d a t a ( ) [ i d x ] = None
543 idx = idx + 1
544 ChN [m ] . a p p e n d ( c h a n n e l _ d a t a ( ) )
545 m = m + 1
546
547 n = 0
548 o = 0
549 f o r j i n ChN :
550 for f in freq_range :
551 l_freq , h_freq = f
552 psd , e n e r g y = f e a t u r e _ e x t r a c t i o n ( s , j , l _ f r e q ,
553 h_freq )
554 psd_var [ n ] . append ( psd )
555 e_var [ n ] . append ( energy )
556 n = n + 1
557 o = o + 1
113
558
559 m = 0
560 f o r a i n Ch :
561 ChN [m ] . c l e a r ( )
562 m = m + 1
563
564 i f f o l d e r == ’ s e n a n g ’ :
565 save (0)
566 e l i f f o l d e r == ’ t a k u t ’ :
567 save (1)
568 e l i f f o l d e r == ’ s e d i h ’ :
569 save (2)
570 e l i f f o l d e r == ’ t e n a n g ’ :
571 save (3)
572
573 for z in ( e_var + psd_var ) :
574 z . clear ()
114
1 # −∗− c o d i n g : u t f −8 −∗−
2 """
3 C r e a t e d on Thu Mar 5 1 5 : 3 0 : 2 6 2020
4
5 @author : G h a z i a n
6 """
7 import o s
8 import numpy a s np
9 from s c i p y import s i g n a l
10 from s c i p y . i n t e g r a t e import s i m p s
11 import mne
12 import c s v
13
14 # D e k l a r a s i nama v a r i a b e l k o s o n g
15 Fp1_delta_psd = [ ]
16 Fp1_theta_psd = [ ]
17 Fp1_alpha_psd = [ ]
18 Fp1_beta_psd = [ ]
19 Fp1_gamma_psd = [ ]
20
21 Fp2_delta_psd = [ ]
22 Fp2_theta_psd = [ ]
23 Fp2_alpha_psd = [ ]
24 Fp2_beta_psd = [ ]
25 Fp2_gamma_psd = [ ]
26
27 F3_delta_psd = []
28 F3_theta_psd = []
29 F3_alpha_psd = [ ]
30 F3_beta_psd = [ ]
115
31 F3_gamma_psd = [ ]
32
33 F4_delta_psd = []
34 F4_theta_psd = []
35 F4_alpha_psd = [ ]
36 F4_beta_psd = [ ]
37 F4_gamma_psd = [ ]
38
39 C3_delta_psd = [ ]
40 C3_theta_psd = [ ]
41 C3_alpha_psd = [ ]
42 C3_beta_psd = [ ]
43 C3_gamma_psd = [ ]
44
45 C4_delta_psd = [ ]
46 C4_theta_psd = [ ]
47 C4_alpha_psd = [ ]
48 C4_beta_psd = [ ]
49 C4_gamma_psd = [ ]
50
51 P3_delta_psd = []
52 P3_theta_psd = []
53 P3_alpha_psd = [ ]
54 P3_beta_psd = [ ]
55 P3_gamma_psd = [ ]
56
57 P4_delta_psd = []
58 P4_theta_psd = []
59 P4_alpha_psd = [ ]
60 P4_beta_psd = [ ]
61 P4_gamma_psd = [ ]
116
62
63 O1_delta_psd = [ ]
64 O1_theta_psd = [ ]
65 O1_alpha_psd = [ ]
66 O1_beta_psd = [ ]
67 O1_gamma_psd = [ ]
68
69 O2_delta_psd = [ ]
70 O2_theta_psd = [ ]
71 O2_alpha_psd = [ ]
72 O2_beta_psd = [ ]
73 O2_gamma_psd = [ ]
74
75 F7_delta_psd = []
76 F7_theta_psd = []
77 F7_alpha_psd = [ ]
78 F7_beta_psd = [ ]
79 F7_gamma_psd = [ ]
80
81 F8_delta_psd = []
82 F8_theta_psd = []
83 F8_alpha_psd = [ ]
84 F8_beta_psd = [ ]
85 F8_gamma_psd = [ ]
86
87 T3_delta_psd = [ ]
88 T3_theta_psd = [ ]
89 T3_alpha_psd = [ ]
90 T3_beta_psd = [ ]
91 T3_gamma_psd = [ ]
92
117
93 T4_delta_psd = [ ]
94 T4_theta_psd = [ ]
95 T4_alpha_psd = [ ]
96 T4_beta_psd = [ ]
97 T4_gamma_psd = [ ]
98
99 T5_delta_psd = [ ]
100 T5_theta_psd = [ ]
101 T5_alpha_psd = [ ]
102 T5_beta_psd = [ ]
103 T5_gamma_psd = [ ]
104
105 T6_delta_psd = [ ]
106 T6_theta_psd = [ ]
107 T6_alpha_psd = [ ]
108 T6_beta_psd = [ ]
109 T6_gamma_psd = [ ]
110
111 Fp1_delta_e = []
112 Fp1_theta_e = []
113 Fp1_alpha_e = [ ]
114 Fp1_beta_e = [ ]
115 Fp1_gamma_e = [ ]
116
117 Fp2_delta_e = []
118 Fp2_theta_e = []
119 Fp2_alpha_e = [ ]
120 Fp2_beta_e = [ ]
121 Fp2_gamma_e = [ ]
122
123 F3_delta_e = []
118
124 F3_theta_e = []
125 F3_alpha_e = [ ]
126 F3_beta_e = [ ]
127 F3_gamma_e = [ ]
128
129 F4_delta_e = []
130 F4_theta_e = []
131 F4_alpha_e = [ ]
132 F4_beta_e = [ ]
133 F4_gamma_e = [ ]
134
135 C3_delta_e = [ ]
136 C3_theta_e = [ ]
137 C3_alpha_e = [ ]
138 C3_beta_e = [ ]
139 C3_gamma_e = [ ]
140
141 C4_delta_e = [ ]
142 C4_theta_e = [ ]
143 C4_alpha_e = [ ]
144 C4_beta_e = [ ]
145 C4_gamma_e = [ ]
146
147 P3_delta_e = []
148 P3_theta_e = []
149 P3_alpha_e = [ ]
150 P3_beta_e = [ ]
151 P3_gamma_e = [ ]
152
153 P4_delta_e = []
154 P4_theta_e = []
119
155 P4_alpha_e = [ ]
156 P4_beta_e = [ ]
157 P4_gamma_e = [ ]
158
159 O1_delta_e = [ ]
160 O1_theta_e = [ ]
161 O1_alpha_e = [ ]
162 O1_beta_e = [ ]
163 O1_gamma_e = [ ]
164
165 O2_delta_e = [ ]
166 O2_theta_e = [ ]
167 O2_alpha_e = [ ]
168 O2_beta_e = [ ]
169 O2_gamma_e = [ ]
170
171 F7_delta_e = []
172 F7_theta_e = []
173 F7_alpha_e = [ ]
174 F7_beta_e = [ ]
175 F7_gamma_e = [ ]
176
177 F8_delta_e = []
178 F8_theta_e = []
179 F8_alpha_e = [ ]
180 F8_beta_e = [ ]
181 F8_gamma_e = [ ]
182
183 T3_delta_e = [ ]
184 T3_theta_e = [ ]
185 T3_alpha_e = [ ]
120
186 T3_beta_e = [ ]
187 T3_gamma_e = [ ]
188
189 T4_delta_e = [ ]
190 T4_theta_e = [ ]
191 T4_alpha_e = [ ]
192 T4_beta_e = [ ]
193 T4_gamma_e = [ ]
194
195 T5_delta_e = [ ]
196 T5_theta_e = [ ]
197 T5_alpha_e = [ ]
198 T5_beta_e = [ ]
199 T5_gamma_e = [ ]
200
201 T6_delta_e = [ ]
202 T6_theta_e = [ ]
203 T6_alpha_e = [ ]
204 T6_beta_e = [ ]
205 T6_gamma_e = [ ]
206
207 Fp12_delta_psd = [ ]
208 Fp12_theta_psd = [ ]
209 Fp12_alpha_psd = [ ]
210 Fp12_beta_psd = [ ]
211 Fp12_gamma_psd = [ ]
212
213 F34_delta_psd = [ ]
214 F34_theta_psd = [ ]
215 F34_alpha_psd = [ ]
216 F34_beta_psd = [ ]
121
217 F34_gamma_psd = [ ]
218
219 C34_delta_psd = [ ]
220 C34_theta_psd = [ ]
221 C34_alpha_psd = [ ]
222 C34_beta_psd = [ ]
223 C34_gamma_psd = [ ]
224
225 P34_delta_psd = [ ]
226 P34_theta_psd = [ ]
227 P34_alpha_psd = [ ]
228 P34_beta_psd = [ ]
229 P34_gamma_psd = [ ]
230
231 O12_delta_psd = [ ]
232 O12_theta_psd = [ ]
233 O12_alpha_psd = [ ]
234 O12_beta_psd = [ ]
235 O12_gamma_psd = [ ]
236
237 F78_delta_psd = [ ]
238 F78_theta_psd = [ ]
239 F78_alpha_psd = [ ]
240 F78_beta_psd = [ ]
241 F78_gamma_psd = [ ]
242
243 T34_delta_psd = [ ]
244 T34_theta_psd = [ ]
245 T34_alpha_psd = [ ]
246 T34_beta_psd = [ ]
247 T34_gamma_psd = [ ]
122
248
249 T56_delta_psd = [ ]
250 T56_theta_psd = [ ]
251 T56_alpha_psd = [ ]
252 T56_beta_psd = [ ]
253 T56_gamma_psd = [ ]
254
255 Fp1 = [ ]
256 Fp2 = [ ]
257 F3 = [ ]
258 F4 = [ ]
259 C3 = [ ]
260 C4 = [ ]
261 P3 = [ ]
262 P4 = [ ]
263 O1 = [ ]
264 O2 = [ ]
265 F7 = [ ]
266 F8 = [ ]
267 T3 = [ ]
268 T4 = [ ]
269 T5 = [ ]
270 T6 = [ ]
271
272 # d e k l a r a s i nama k a n a l
273 Ch = [ ’ Fp1−A1 ’ , ’ Fp2−A2 ’ , ’ F3−A1 ’ , ’ F4−A2 ’ ,
274 ’C3−A1 ’ , ’C4−A2 ’ , ’ P3−A1 ’ , ’ P4−A2 ’ ,
275 ’O1−A1 ’ , ’O2−A2 ’ , ’ F7−A1 ’ , ’ F8−A2 ’ ,
276 ’ T3−A1 ’ , ’ T4−A2 ’ , ’ T5−A1 ’ , ’ T6−A2 ’ ]
277
278 # d e k l a r a s i nama v a r i a b e l k a n a l
123
310 #nama v a r i a b e l e n e r g i
311 e_var = [ Fp1_delta_e , Fp1_theta_e , Fp1_alpha_e , Fp1_beta_e ,
312 Fp1_gamma_e , F p 2 _ d e l t a _ e , F p 2 _ t h e t a _ e , F p 2 _ a l p h a _ e ,
313 F p 2 _ b e t a _ e , Fp2_gamma_e , F 3 _ d e l t a _ e , F 3 _ t h e t a _ e ,
314 F 3 _ a l p h a _ e , F 3 _ b e t a _ e , F3_gamma_e , F 4 _ d e l t a _ e ,
315 F 4 _ t h e t a _ e , F 4 _ a l p h a _ e , F 4 _ b e t a _ e , F4_gamma_e ,
316 C3_delta_e , C3_theta_e , C3_alpha_e , C3_beta_e ,
317 C3_gamma_e , C 4 _ d e l t a _ e , C 4 _ t h e t a _ e , C 4 _ a l p h a _ e ,
318 C 4 _ b e t a _ e , C4_gamma_e , P 3 _ d e l t a _ e , P 3 _ t h e t a _ e ,
319 P 3 _ a l p h a _ e , P 3 _ b e t a _ e , P3_gamma_e , P 4 _ d e l t a _ e ,
320 P 4 _ t h e t a _ e , P 4 _ a l p h a _ e , P 4 _ b e t a _ e , P4_gamma_e ,
321 O 1 _ d e l t a _ e , O 1 _ t h e t a _ e , O1_alpha_e , O1_beta_e ,
322 O1_gamma_e , O 2 _ d e l t a _ e , O 2 _ t h e t a _ e , O2_alpha_e ,
323 O2_beta_e , O2_gamma_e , F 7 _ d e l t a _ e , F 7 _ t h e t a _ e ,
324 F 7 _ a l p h a _ e , F 7 _ b e t a _ e , F7_gamma_e , F 8 _ d e l t a _ e ,
325 F 8 _ t h e t a _ e , F 8 _ a l p h a _ e , F 8 _ b e t a _ e , F8_gamma_e ,
326 T3_delta_e , T3_theta_e , T3_alpha_e , T3_beta_e ,
327 T3_gamma_e , T 4 _ d e l t a _ e , T 4 _ t h e t a _ e , T 4 _ a l p h a _ e ,
328 T 4 _ b e t a _ e , T4_gamma_e , T 5 _ d e l t a _ e , T 5 _ t h e t a _ e ,
329 T 5 _ a l p h a _ e , T 5 _ b e t a _ e , T5_gamma_e , T 6 _ d e l t a _ e ,
330 T 6 _ t h e t a _ e , T 6 _ a l p h a _ e , T 6 _ b e t a _ e , T6_gamma_e ]
331
332 #nama v a r i a b e l a s i m e t r i
333 asymmetry_var = [ Fp12_delta_psd , Fp12_theta_psd , Fp12_alpha_psd ,
334 F p 1 2 _ b e t a _ p s d , Fp12_gamma_psd , F 3 4 _ d e l t a _ p s d ,
335 F34_theta_psd , F34_alpha_psd , F34_beta_psd ,
336 F34_gamma_psd , C 3 4 _ d e l t a _ p s d , C 3 4 _ t h e t a _ p s d ,
337 C 3 4 _ a l p h a _ p s d , C 3 4 _ b e t a _ p s d , C34_gamma_psd ,
338 P34_delta_psd , P34_theta_psd , P34_alpha_psd ,
339 P 3 4 _ b e t a _ p s d , P34_gamma_psd , O 1 2 _ d e l t a _ p s d ,
340 O12_theta_psd , O12_alpha_psd , O12_beta_psd ,
125
341 O12_gamma_psd , F 7 8 _ d e l t a _ p s d , F 7 8 _ t h e t a _ p s d ,
342 F 7 8 _ a l p h a _ p s d , F 7 8 _ b e t a _ p s d , F78_gamma_psd ,
343 T34_delta_psd , T34_theta_psd , T34_alpha_psd ,
344 T 3 4 _ b e t a _ p s d , T34_gamma_psd , T 5 6 _ d e l t a _ p s d ,
345 T56_theta_psd , T56_alpha_psd , T56_beta_psd ,
346 T56_gamma_psd ]
347
348 # r a n g e f r e k u e n s i pemotongan PSD
349 freq_range = [(1 , 4) , (4 , 8) , (8 , 13) , (13 , 30) , (30 , 35)]
350
351 #nama−nama f o l d e r
352 f o l d e r s = [ ’ senang ’ , ’ t a k u t ’ , ’ sedih ’ , ’ tenang ’ ]
353
354 # jumlah f i l e s t i m u l u s 1
355 n s t i m 1 = 27
356 n s t i m 2 = 33
357 n s t i m 3 = 17
358 n s t i m 4 = 21
359
360 s = 0
361
362 # d e f i n i s i k a n f u n g s i pemisah per kanal
363 d e f s e p a r a t e ( ChName ) :
364 c h a n n e l = raw . g e t _ d a t a ( p i c k s = ChName ) . f l a t t e n
365 return channel # kembalikan channel
366
367 # definisikan fungsi ekstraksi fitur
368 d e f f e a t u r e _ e x t r a c t i o n ( s , n , low , h i g h ) :
369 n = n [0]
370 win = 4 ∗ s a m p l i n g _ f r e q
371 f _ v a l u e s , p s d _ v a l u e s = s i g n a l . welch ( n ,
126
372 fs = sampling_freq ,
373 n p e r s e g = win )
374 i d x _ d e l t a = np . l o g i c a l _ a n d ( f _ v a l u e s >= low ,
375 f _ v a l u e s <= h i g h )
376 freq_res = f_values [1] − f_values [0]
377 power = s i m p s ( p s d _ v a l u e s [ i d x _ d e l t a ] , dx = f r e q _ r e s )
378 t o t a l _ p o w e r = s i m p s ( p s d _ v a l u e s , dx= f r e q _ r e s )
379 r e l _ p o w = power / t o t a l _ p o w e r
380 f _ f f t = np . f f t . f f t f r e q ( l e n ( n ) , d = 1 / 1 0 0 )
381 df_fft = f_fft [1] − f_fft [0]
382 E_welch = ( ( 1 / ( 1 / 1 0 0 ) ∗ ( f r e q _ r e s / d f _ f f t ) ∗
383 np . sum ( p s d _ v a l u e s [ i d x _ d e l t a ] ) ) )
384 E_tot = ((1 / (1/100) ∗ ( freq_res / d f _ f f t ) ∗
385 np . sum ( p s d _ v a l u e s ) ) )
386 E _ r e l = E_welch / E _ t o t
387
388 # n . clear ()
389
390 return rel_pow , E _ r e l
391
392 def save ( n ) :
393 f o r i i n range ( l e n ( F p 1 _ d e l t a _ p s d ) ) :
394 F p 1 2 _ d e l t a _ p s d = abs ( F p 1 _ d e l t a _ p s d [ i ]− F p 2 _ d e l t a _ p s d [ i ] )
395 F p 1 2 _ t h e t a _ p s d = abs ( F p 1 _ t h e t a _ p s d [ i ]− F p 2 _ t h e t a _ p s d [ i ] )
396 F p 1 2 _ a l p h a _ p s d = abs ( F p 1 _ a l p h a _ p s d [ i ]− F p 2 _ a l p h a _ p s d [ i ] )
397 F p 1 2 _ b e t a _ p s d = abs ( F p 1 _ b e t a _ p s d [ i ]− F p 2 _ b e t a _ p s d [ i ] )
398 Fp12_gamma_psd = abs ( Fp1_gamma_psd [ i ]−Fp2_gamma_psd [ i ] )
399 F 3 4 _ d e l t a _ p s d = abs ( F 3 _ d e l t a _ p s d [ i ]− F 4 _ d e l t a _ p s d [ i ] )
400 F 3 4 _ t h e t a _ p s d = abs ( F 3 _ t h e t a _ p s d [ i ]− F 4 _ t h e t a _ p s d [ i ] )
401 F 3 4 _ a l p h a _ p s d = abs ( F 3 _ a l p h a _ p s d [ i ]− F 4 _ a l p h a _ p s d [ i ] )
402 F 3 4 _ b e t a _ p s d = abs ( F 3 _ b e t a _ p s d [ i ]− F 4 _ b e t a _ p s d [ i ] )
127
434
435 f i t u r = ( Fp1_delta_psd [ i ] , Fp1_theta_psd [ i ] , Fp1_alpha_psd [ i ] ,
436 F p 1 _ b e t a _ p s d [ i ] , Fp1_gamma_psd [ i ] , F p 2 _ d e l t a _ p s d [ i ] ,
437 Fp2_theta_psd [ i ] , Fp2_alpha_psd [ i ] , Fp2_beta_psd [ i ] ,
438 Fp2_gamma_psd [ i ] , F 3 _ d e l t a _ p s d [ i ] , F 3 _ t h e t a _ p s d [ i ] ,
439 F 3 _ a l p h a _ p s d [ i ] , F 3 _ b e t a _ p s d [ i ] , F3_gamma_psd [ i ] ,
440 F4_delta_psd [ i ] , F4_theta_psd [ i ] , F4_alpha_psd [ i ] ,
441 F 4 _ b e t a _ p s d [ i ] , F4_gamma_psd [ i ] , C 3 _ d e l t a _ p s d [ i ] ,
442 C3_theta_psd [ i ] , C3_alpha_psd [ i ] , C3_beta_psd [ i ] ,
443 C3_gamma_psd [ i ] , C 4 _ d e l t a _ p s d [ i ] , C 4 _ t h e t a _ p s d [ i ] ,
444 C 4 _ a l p h a _ p s d [ i ] , C 4 _ b e t a _ p s d [ i ] , C4_gamma_psd [ i ] ,
445 P3_delta_psd [ i ] , P3_theta_psd [ i ] , P3_alpha_psd [ i ] ,
446 P 3 _ b e t a _ p s d [ i ] , P3_gamma_psd [ i ] , P 4 _ d e l t a _ p s d [ i ] ,
447 P4_theta_psd [ i ] , P4_alpha_psd [ i ] , P4_beta_psd [ i ] ,
448 P4_gamma_psd [ i ] , O 1 _ d e l t a _ p s d [ i ] , O 1 _ t h e t a _ p s d [ i ] ,
449 O 1 _ a l p h a _ p s d [ i ] , O 1 _ b e t a _ p s d [ i ] , O1_gamma_psd [ i ] ,
450 O2_delta_psd [ i ] , O2_theta_psd [ i ] , O2_alpha_psd [ i ] ,
451 O 2 _ b e t a _ p s d [ i ] , O2_gamma_psd [ i ] , F 7 _ d e l t a _ p s d [ i ] ,
452 F7_theta_psd [ i ] , F7_alpha_psd [ i ] , F7_beta_psd [ i ] ,
453 F7_gamma_psd [ i ] , F 8 _ d e l t a _ p s d [ i ] , F 8 _ t h e t a _ p s d [ i ] ,
454 F 8 _ a l p h a _ p s d [ i ] , F 8 _ b e t a _ p s d [ i ] , F8_gamma_psd [ i ] ,
455 T3_delta_psd [ i ] , T3_theta_psd [ i ] , T3_alpha_psd [ i ] ,
456 T 3 _ b e t a _ p s d [ i ] , T3_gamma_psd [ i ] , T 4 _ d e l t a _ p s d [ i ] ,
457 T4_theta_psd [ i ] , T4_alpha_psd [ i ] , T4_beta_psd [ i ] ,
458 T4_gamma_psd [ i ] , T 5 _ d e l t a _ p s d [ i ] , T 5 _ t h e t a _ p s d [ i ] ,
459 T 5 _ a l p h a _ p s d [ i ] , T 5 _ b e t a _ p s d [ i ] , T5_gamma_psd [ i ] ,
460 T6_delta_psd [ i ] , T6_theta_psd [ i ] , T6_alpha_psd [ i ] ,
461 T 6 _ b e t a _ p s d [ i ] , T6_gamma_psd [ i ] , F p 1 _ d e l t a _ e [ i ] ,
462 Fp1_theta_e [ i ] , Fp1_alpha_e [ i ] , Fp1_beta_e [ i ] ,
463 Fp1_gamma_e [ i ] , F p 2 _ d e l t a _ e [ i ] , F p 2 _ t h e t a _ e [ i ] ,
464 F p 2 _ a l p h a _ e [ i ] , F p 2 _ b e t a _ e [ i ] , Fp2_gamma_e [ i ] ,
129
496 O 1 2 _ b e t a _ p s d , O12_gamma_psd , F 7 8 _ d e l t a _ p s d ,
497 F78_theta_psd , F78_alpha_psd , F78_beta_psd ,
498 F78_gamma_psd , T 3 4 _ d e l t a _ p s d , T 3 4 _ t h e t a _ p s d ,
499 T 3 4 _ a l p h a _ p s d , T 3 4 _ b e t a _ p s d , T34_gamma_psd ,
500 T56_delta_psd , T56_theta_psd , T56_alpha_psd ,
501 T 5 6 _ b e t a _ p s d , T56_gamma_psd , n )
502
503 w i t h open ( ’ f i t u r _ e m o s i _ v 7 _ 1 0 0 _ a b s _ e a s y m . c s v ’ ,
504 mode= ’ a ’ , n e w l i n e = ’ ’ ) a s f i t u r _ e m o s i :
505 f i t u r _ w r i t e r = csv . w r i t e r ( f i t u r _ e m o s i ,
506 delimiter = ’ , ’)
507 f i t u r _ w r i t e r . writerow ( f i t u r )
508
509 # Baca semua f i l e dalam t i a p f o l d e r
510 f o r x i n range ( l e n ( f o l d e r s ) ) :
511 folder = folders [x]
512 i f f o l d e r == ’ s e n a n g ’ :
513 nstim = nstim1
514 e l i f f o l d e r == ’ t a k u t ’ :
515 nstim = nstim2
516 e l i f f o l d e r == ’ s e d i h ’ :
517 nstim = nstim3
518 e l i f f o l d e r == ’ t e n a n g ’ :
519 nstim = nstim4
520 f o r i i n range ( n s t i m ) :
521 raw = [ ]
522
523 # Buka f i l e
524 fname = o s . p a t h . j o i n ( f o l d e r , s t r ( i + 1 ) + ’ __raw . f i f ’ )
525 raw = mne . i o . r e a d _ r a w _ f i f ( fname , p r e l o a d = T r u e )
526
131
527 #CAR , b i s a d i g u n a k a n a t a u t i d a k
528 # raw . s e t _ e e g _ r e f e r e n c e ( r e f _ c h a n n e l s = ’ a v e r a g e ’ )
529 i n f o = raw . i n f o
530
531 # Dapatkan f r e k u e n s i s a m p l i n g
532 s a m p l i n g _ f r e q = raw . i n f o [ ’ s f r e q ’ ]
533 m = 0
534
535 # Buka dan masukkan d a t a t i a p k a n a l k e v a r i a b e l penampung
536 f o r a i n Ch :
537 channel_data = separate ( a )
538 idx = 0
539 for n in channel_data ( ) :
540 idx = 0
541 i f abs ( n ) >= 100 e −6:
542 c h a n n e l _ d a t a ( ) [ i d x ] = None
543 idx = idx + 1
544 ChN [m ] . a p p e n d ( c h a n n e l _ d a t a ( ) )
545 m = m + 1
546
547 n = 0
548 o = 0
549 f o r j i n ChN :
550 for f in freq_range :
551 l_freq , h_freq = f
552 psd , e n e r g y = f e a t u r e _ e x t r a c t i o n ( s , j , l _ f r e q ,
553 h_freq )
554 psd_var [ n ] . append ( psd )
555 e_var [ n ] . append ( energy )
556 n = n + 1
557 o = o + 1
132
558
559 m = 0
560 f o r a i n Ch :
561 ChN [m ] . c l e a r ( )
562 m = m + 1
563
564 i f f o l d e r == ’ s e n a n g ’ :
565 save (0)
566 e l i f f o l d e r == ’ t a k u t ’ :
567 save (1)
568 e l i f f o l d e r == ’ s e d i h ’ :
569 save (2)
570 e l i f f o l d e r == ’ t e n a n g ’ :
571 save (3)
572
573 for z in ( e_var + psd_var ) :
574 z . clear ()