fiqih97 commited on
Commit
9d6669f
·
verified ·
1 Parent(s): 883fbe2

Upload 6 files

Browse files
Files changed (6) hide show
  1. app.py +24 -0
  2. eda.py +62 -0
  3. model.py +15 -0
  4. negative.png +0 -0
  5. neutral.png +0 -0
  6. positive.png +0 -0
app.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import eda
3
+ import model
4
+
5
+
6
+
7
+ page = st.sidebar.selectbox(label='Select Page:', options=['Home Page', 'Exploration Data Analysis', 'Model Prediksi'])
8
+
9
+ if page == 'Home Page':
10
+ st.header('Welcome Page')
11
+ st.write('')
12
+ st.write('Project : GC - 7')
13
+ st.write('Nama : Muhammad Fiqih Al-ayubi')
14
+ st.write('Batch : HCK - 017')
15
+ st.write('Objectives: Program ini dibuat untuk membantu calon investor dalam melihat kondisi bisnis dan ekonomi suatu negara dengan cara membuat model machine learning yang dapat melakukan melakukan klasifikasi sentiment ekonomi berdasarkan text rangkuman atau judul berita.')
16
+ st.write('')
17
+ st.caption('Silahkan pilih menu lain di Select Box pada sebelah kiri layar anda untuk memulai!')
18
+ st.write('')
19
+ st.write('')
20
+
21
+ elif page == 'Exploration Data Analysis':
22
+ eda.run()
23
+ else:
24
+ model.run()
eda.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import matplotlib.pyplot as plt
4
+ # from phik.report import plot_correlation_matrix
5
+ from PIL import Image
6
+
7
+ #membuat function
8
+ def run():
9
+ st.title('Selamat datang di bagian Exploratory Data Analysis')
10
+ # Memanggil data csv
11
+ df= pd.read_csv('bank.csv')
12
+
13
+ # Menampilakn 5 data teratas
14
+ st.table(df.head(5))
15
+
16
+
17
+ # Menampilkan grafik distribusi data client berdasarkan status deposit
18
+ st.title('Distribusi sentiment')
19
+ image1 = Image.open('distribusisentimen.png')
20
+ st.image(image1, caption='figure 1')
21
+
22
+ # Menampilkan penjelasan
23
+ with st.expander('Penjelasan'):
24
+ st.caption('''Dari grafik distribusi di atas dapat terlihat jika dataset bersifat imbalanced dimana text bersentiment neutral sangat mendominasi populasi dataset (59 %) dibandingkan text - text bersentiment positive dan neutral. Berdasarkan presentasenya, maka dapat disimpulkan jika text bersentiment positive dan neutral memiliki drajat ketidakseimbangan moderat (https://developers.google.com/machine-learning/data-prep/construct/sampling-splitting/imbalanced-data). Hal ini sangat berbahaya bagi model karena model akan lebih banyak belajar atau memahami pola - pola kelas mayoritas (dalam hal ini text bersentimen neutral) sehingga dikhawatirkan hasil prediksinya bertendensi pada kelas tersebut. Untuk menghindari hal tersebut, kita akan melakukan class balancing pada bagian feature engineering.
25
+
26
+ Jika dilihat dari segi konteksnya (ekonomi dan bisnis), hasil di atas dapat memiliki arti adanya 2 kemungkinan kondisi pertumbuhan ekonomi di negara finlandia pada periode waktu tertentu, yaitu pertumbuhan positif atau stagnan (karena sentiment berita neutral lebih banyak). Karena jumlah presentase berita bersentimen negative sangat kecil maka dapat diasumsikan jika ***pada periode waktu data ini diambil, negara finlandia sedang berada pada 2 kemungkinan kondisi pertumbuhan ekonomi yaitu stagnan atau positive***.''')
27
+
28
+
29
+
30
+ # Menampilkan Presentase client yang dihubungi berdasarkan jenis pekerjaannya
31
+ st.title('10 kata positive teratas')
32
+ image2 = Image.open('positive.png')
33
+ st.image(image2, caption='figure 2')
34
+
35
+ # Menampilkan penjelasan
36
+ with st.expander('Penjelasan'):
37
+ st.caption('''Dari grafik di atas kita dapat bahwa saat ini kata - kata tersebut lebih memiliki makna atau arti. Artinya text preprocessing yang sudah dilakukan sebelumnya telah berhasil menghapus kata - kata yang tidak memberikan informasi signifikan (stop words).
38
+
39
+ 10 Kata yang paling sering muncul pada kelas positive setelah text preprocessing adalah 'eur', 'company', 'mn' (milion), 'year', 'finnsih', 'net', 'profit', 'sale', 'million', dan 'period'. Dari seluruh kata, hanya kata profit yang pada umumnya memang memiliki tendensi positif..''')
40
+
41
+
42
+
43
+ # Menampilkan grafik Distribusi data client berdsarkan umur
44
+ st.title('10 kata neutral teratas')
45
+ image3 = Image.open('neutral.png')
46
+ st.image(image3, caption='figure 3')
47
+
48
+ # Menampilkan penjelasan
49
+ with st.expander('Penjelasan'):
50
+ st.caption('''Dari grafik di atas dapat terlihat jika ada beberapa kata dari 10 kata yang paling sering muncul di kelas neutral, juga muncul di 10 kata teratas kelas positive. Kata - kata tersebut adlah 'company', 'eur', 'million' dan 'finnsih'. Sementara itu, kata - kata pada grafik di atas yang sebelumnya tidak muncul pada 10 kata teratas di kelas positive adalah 'share', 'service', 'finland', 'business', 'group' dan 'market''')
51
+
52
+
53
+
54
+ # Menampilkan grafik Hubungan jenis pekerjaan dengan keputusan client dalam berinvestasi
55
+ st.title('10 kata negative treatas')
56
+ image4 = Image.open('negative.png')
57
+ st.image(image4, caption='figure 4')
58
+
59
+ # Menampilkan penjelasan
60
+ with st.expander('Penjelasan'):
61
+ st.caption('''Dari 10 kata teratas yang paling sering muncul pada kelas negative, tidak ada kata - kata yang secara umum memiliki tendensi negatif yang kuat (dalam konteks bisnsis). Contohnya kata - kata seperti 'decreased', 'fell', 'loss', 'warning', dll (yang sebelumnya muncul pada hasil fungsi WordCloud()) justru tidak masuk dalam 10 kata teratas pada kelas negative. Bahkan mayoritas kata - kata pada grafik di atas justru juga muncul pada 10 kata teratas kelas neutral dan positive. Hal tersebut kemungkinan terjadi karena periode ketika dataset ini diambil merupakan periode dimana negara finlandia tidak berada dalam kondisi ekonomi yang sulit, karena pada umumnya semakin sulit kondisi ekonomi suatu negara maka akan semakin banyak teks - teks berita yang mengandung kata - kata bertendensi negatif (seusai konteksnya)''')
62
+
model.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # import pandas as pd
2
+ # import numpy as np
3
+ # import re
4
+ # import json
5
+ # import pickle
6
+ # import nltk
7
+ # import dill
8
+ # import tensorflow as tf
9
+ # from tensorflow.keras.models import load_model
10
+ # from nltk.stem import WordNetLemmatizer
11
+ # from nltk.tokenize import word_tokenize
12
+ # from nltk.stem import WordNetLemmatizer
13
+ # from nltk.corpus import stopwords
14
+ # from nltk.stem import PorterStemmer
15
+ # from sklearn.feature_extraction.text import CountVectorizer
negative.png ADDED
neutral.png ADDED
positive.png ADDED