design layout fix
This commit is contained in:
33
App.py
33
App.py
@ -10,17 +10,13 @@ from pages.exploration import show_exploration
|
|||||||
from pages.karyawan_komen import show_karyawan_komen
|
from pages.karyawan_komen import show_karyawan_komen
|
||||||
from pages.pimpinan_exploration import show_pimpinan_exploration
|
from pages.pimpinan_exploration import show_pimpinan_exploration
|
||||||
|
|
||||||
# Set konfigurasi halaman sebagai perintah pertama
|
st.set_page_config(page_title="TALENTRA", layout="wide", initial_sidebar_state="collapsed")
|
||||||
st.set_page_config(page_title="Aplikasi Prediksi Retensi Karyawan", layout="wide", initial_sidebar_state="collapsed")
|
|
||||||
|
|
||||||
# Tambahkan direktori 'App' ke sys.path
|
|
||||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
|
||||||
# Import halaman dari folder pages
|
|
||||||
import pages as pg
|
import pages as pg
|
||||||
|
|
||||||
# Import halaman dari root directory
|
from login import show_login
|
||||||
from login import show_login # Impor dari file login.py di root directory
|
|
||||||
|
|
||||||
parent_dir = os.path.dirname(os.path.abspath(__file__))
|
parent_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
logo_path = os.path.join(parent_dir, "asset/logo.png")
|
logo_path = os.path.join(parent_dir, "asset/logo.png")
|
||||||
@ -51,7 +47,6 @@ st.markdown(
|
|||||||
unsafe_allow_html=True,
|
unsafe_allow_html=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# CSS untuk mengubah warna latar belakang
|
|
||||||
background_style = """
|
background_style = """
|
||||||
<style>
|
<style>
|
||||||
.stApp {
|
.stApp {
|
||||||
@ -84,7 +79,6 @@ if "page" not in st.session_state:
|
|||||||
else:
|
else:
|
||||||
st.session_state.page = "Home"
|
st.session_state.page = "Home"
|
||||||
|
|
||||||
# Tambahkan validasi login
|
|
||||||
if 'logged_in' in st.session_state and st.session_state['logged_in']:
|
if 'logged_in' in st.session_state and st.session_state['logged_in']:
|
||||||
role = st.session_state.get('role', '').lower()
|
role = st.session_state.get('role', '').lower()
|
||||||
role_pages = {
|
role_pages = {
|
||||||
@ -112,8 +106,7 @@ def get_image_as_base64(image_path):
|
|||||||
return base64.b64encode(img_file.read()).decode("utf-8")
|
return base64.b64encode(img_file.read()).decode("utf-8")
|
||||||
|
|
||||||
def navbar_with_sidebar_control(pages, options, logo_path):
|
def navbar_with_sidebar_control(pages, options, logo_path):
|
||||||
# Kontrol sidebar visibility
|
if not options.get("show_sidebar", True):
|
||||||
if not options.get("show_sidebar", True): # Jika "show_sidebar" = False
|
|
||||||
st.markdown(
|
st.markdown(
|
||||||
"""
|
"""
|
||||||
<style>
|
<style>
|
||||||
@ -125,7 +118,6 @@ def navbar_with_sidebar_control(pages, options, logo_path):
|
|||||||
unsafe_allow_html=True,
|
unsafe_allow_html=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Render navbar
|
|
||||||
navbar_home()
|
navbar_home()
|
||||||
|
|
||||||
def navbar_home():
|
def navbar_home():
|
||||||
@ -188,7 +180,7 @@ def navbar_home():
|
|||||||
</div>
|
</div>
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<!-- Ganti teks "Home" dengan teks statis -->
|
<!-- Ganti teks "Home" dengan teks statis -->
|
||||||
<span class="welcome-text">Selamat Datang di Aplikasi Prediksi Retensi Karyawan</span>
|
<span class="welcome-text">Selamat Datang di TALENTRA</span>
|
||||||
</div>
|
</div>
|
||||||
<a class="login-button" href="?page=Login">Login</a>
|
<a class="login-button" href="?page=Login">Login</a>
|
||||||
</div>
|
</div>
|
||||||
@ -196,13 +188,11 @@ def navbar_home():
|
|||||||
unsafe_allow_html=True,
|
unsafe_allow_html=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Atur Navbar dengan kontrol sidebar
|
|
||||||
options = {
|
options = {
|
||||||
"show_menu": False,
|
"show_menu": False,
|
||||||
"show_sidebar": False, # Ubah ke True jika ingin menampilkan sidebar
|
"show_sidebar": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Atur Navbar dengan kontrol sidebar hanya untuk Home
|
|
||||||
if st.session_state.page == "Home":
|
if st.session_state.page == "Home":
|
||||||
navbar_with_sidebar_control(
|
navbar_with_sidebar_control(
|
||||||
pages=["Home", "Login"],
|
pages=["Home", "Login"],
|
||||||
@ -210,24 +200,21 @@ if st.session_state.page == "Home":
|
|||||||
logo_path=logo_path,
|
logo_path=logo_path,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Deklarasi fungsi halaman
|
|
||||||
functions = {
|
functions = {
|
||||||
"Home": pg.show_home,
|
"Home": pg.show_home,
|
||||||
"Login": show_login, # Panggil fungsi show_login dari root directory
|
"Login": show_login,
|
||||||
"admin": show_prediction, # Pastikan fungsi ini diimpor dan didefinisikan
|
"admin": show_prediction,
|
||||||
"karyawan_form": show_karyawan_form, # Pastikan fungsi ini diimpor dan didefinisikan
|
"karyawan_form": show_karyawan_form,
|
||||||
"pimpinan_form": show_pimpinan_form,
|
"pimpinan_form": show_pimpinan_form,
|
||||||
"exploration": show_exploration,
|
"exploration": show_exploration,
|
||||||
"Prediksi": show_prediction, # Tambahkan ini
|
"Prediksi": show_prediction,
|
||||||
"report": show_report, # Tambahkan ini
|
"report": show_report,
|
||||||
"karyawan_komen": show_karyawan_komen,
|
"karyawan_komen": show_karyawan_komen,
|
||||||
"pimpinan_exploration": show_pimpinan_exploration
|
"pimpinan_exploration": show_pimpinan_exploration
|
||||||
}
|
}
|
||||||
|
|
||||||
query_params = st.query_params
|
query_params = st.query_params
|
||||||
|
|
||||||
# Validasi query parameter
|
|
||||||
if "page" not in st.session_state:
|
if "page" not in st.session_state:
|
||||||
query_params = st.query_params
|
query_params = st.query_params
|
||||||
print("Query parameters (raw):", repr(query_params))
|
print("Query parameters (raw):", repr(query_params))
|
||||||
|
14182
X_train.csv
14182
X_train.csv
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 31 KiB |
2
login.py
2
login.py
@ -135,7 +135,7 @@ def show_login():
|
|||||||
color: white;
|
color: white;
|
||||||
font-family: 'Poppins', sans-serif;
|
font-family: 'Poppins', sans-serif;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 600;
|
font-weight: 1000;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
9241
notebook/preprocessed_data_train_1.csv
Normal file
9241
notebook/preprocessed_data_train_1.csv
Normal file
File diff suppressed because it is too large
Load Diff
@ -6,194 +6,29 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"name": "stderr",
|
||||||
"text/html": [
|
"output_type": "stream",
|
||||||
"<div>\n",
|
"text": [
|
||||||
"<style scoped>\n",
|
"c:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\lib\\site-packages\\numpy\\__init__.py:148: UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring its correct out-of-the box operation under condition when Gnu OpenMP had already been loaded by Python process is not assured. Please install mkl-service package, see http://github.com/IntelPython/mkl-service\n",
|
||||||
" .dataframe tbody tr th:only-of-type {\n",
|
" from . import _distributor_init\n"
|
||||||
" vertical-align: middle;\n",
|
|
||||||
" }\n",
|
|
||||||
"\n",
|
|
||||||
" .dataframe tbody tr th {\n",
|
|
||||||
" vertical-align: top;\n",
|
|
||||||
" }\n",
|
|
||||||
"\n",
|
|
||||||
" .dataframe thead th {\n",
|
|
||||||
" text-align: right;\n",
|
|
||||||
" }\n",
|
|
||||||
"</style>\n",
|
|
||||||
"<table border=\"1\" class=\"dataframe\">\n",
|
|
||||||
" <thead>\n",
|
|
||||||
" <tr style=\"text-align: right;\">\n",
|
|
||||||
" <th></th>\n",
|
|
||||||
" <th>employee_id</th>\n",
|
|
||||||
" <th>domisili</th>\n",
|
|
||||||
" <th>jenis_kelamin</th>\n",
|
|
||||||
" <th>date_of_birth</th>\n",
|
|
||||||
" <th>join_date</th>\n",
|
|
||||||
" <th>resign_date</th>\n",
|
|
||||||
" <th>marriage_stat</th>\n",
|
|
||||||
" <th>dependant</th>\n",
|
|
||||||
" <th>education</th>\n",
|
|
||||||
" <th>absent_90D</th>\n",
|
|
||||||
" <th>avg_time_work</th>\n",
|
|
||||||
" <th>departemen</th>\n",
|
|
||||||
" <th>position</th>\n",
|
|
||||||
" <th>income</th>\n",
|
|
||||||
" <th>total_komp</th>\n",
|
|
||||||
" <th>job_satisfaction</th>\n",
|
|
||||||
" <th>performance_rating</th>\n",
|
|
||||||
" <th>churn_status</th>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" </thead>\n",
|
|
||||||
" <tbody>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>0</th>\n",
|
|
||||||
" <td>EM0001</td>\n",
|
|
||||||
" <td>Kabupaten Bogor</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1970-09-10</td>\n",
|
|
||||||
" <td>2024-01-04</td>\n",
|
|
||||||
" <td>NaN</td>\n",
|
|
||||||
" <td>Married</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>S1</td>\n",
|
|
||||||
" <td>1.0</td>\n",
|
|
||||||
" <td>9.34</td>\n",
|
|
||||||
" <td>Engineering & IT</td>\n",
|
|
||||||
" <td>Junior</td>\n",
|
|
||||||
" <td>5198046</td>\n",
|
|
||||||
" <td>NaN</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>1</th>\n",
|
|
||||||
" <td>EM0002</td>\n",
|
|
||||||
" <td>Kota Jakarta Selatan</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1980-12-09</td>\n",
|
|
||||||
" <td>2021-01-05</td>\n",
|
|
||||||
" <td>2023-04-22</td>\n",
|
|
||||||
" <td>Married</td>\n",
|
|
||||||
" <td>3</td>\n",
|
|
||||||
" <td>SLTA</td>\n",
|
|
||||||
" <td>11.0</td>\n",
|
|
||||||
" <td>9.86</td>\n",
|
|
||||||
" <td>Service & Support</td>\n",
|
|
||||||
" <td>Staff</td>\n",
|
|
||||||
" <td>1281761</td>\n",
|
|
||||||
" <td>NaN</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>2</th>\n",
|
|
||||||
" <td>EM0003</td>\n",
|
|
||||||
" <td>Tangerang</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1987-04-25</td>\n",
|
|
||||||
" <td>2022-01-17</td>\n",
|
|
||||||
" <td>2024-01-31</td>\n",
|
|
||||||
" <td>Single</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>D2</td>\n",
|
|
||||||
" <td>3.0</td>\n",
|
|
||||||
" <td>9.66</td>\n",
|
|
||||||
" <td>Creative & Design</td>\n",
|
|
||||||
" <td>Staff</td>\n",
|
|
||||||
" <td>4902208</td>\n",
|
|
||||||
" <td>NaN</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>3</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>3</th>\n",
|
|
||||||
" <td>EM0004</td>\n",
|
|
||||||
" <td>Kepulauan Seribu</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1975-12-24</td>\n",
|
|
||||||
" <td>2022-01-26</td>\n",
|
|
||||||
" <td>NaN</td>\n",
|
|
||||||
" <td>Married</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>S1</td>\n",
|
|
||||||
" <td>1.0</td>\n",
|
|
||||||
" <td>9.54</td>\n",
|
|
||||||
" <td>Marketing</td>\n",
|
|
||||||
" <td>Junior</td>\n",
|
|
||||||
" <td>6410492</td>\n",
|
|
||||||
" <td>NaN</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>4</th>\n",
|
|
||||||
" <td>EM0005</td>\n",
|
|
||||||
" <td>Kota Jakarta Utara</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1987-06-15</td>\n",
|
|
||||||
" <td>2022-01-31</td>\n",
|
|
||||||
" <td>2023-02-21</td>\n",
|
|
||||||
" <td>Single</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>SLTA</td>\n",
|
|
||||||
" <td>1.0</td>\n",
|
|
||||||
" <td>9.14</td>\n",
|
|
||||||
" <td>Operations</td>\n",
|
|
||||||
" <td>Staff</td>\n",
|
|
||||||
" <td>1208627</td>\n",
|
|
||||||
" <td>NaN</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" </tbody>\n",
|
|
||||||
"</table>\n",
|
|
||||||
"</div>"
|
|
||||||
],
|
|
||||||
"text/plain": [
|
|
||||||
" employee_id domisili jenis_kelamin date_of_birth join_date \\\n",
|
|
||||||
"0 EM0001 Kabupaten Bogor Laki-laki 1970-09-10 2024-01-04 \n",
|
|
||||||
"1 EM0002 Kota Jakarta Selatan Laki-laki 1980-12-09 2021-01-05 \n",
|
|
||||||
"2 EM0003 Tangerang Laki-laki 1987-04-25 2022-01-17 \n",
|
|
||||||
"3 EM0004 Kepulauan Seribu Laki-laki 1975-12-24 2022-01-26 \n",
|
|
||||||
"4 EM0005 Kota Jakarta Utara Laki-laki 1987-06-15 2022-01-31 \n",
|
|
||||||
"\n",
|
|
||||||
" resign_date marriage_stat dependant education absent_90D avg_time_work \\\n",
|
|
||||||
"0 NaN Married 2 S1 1.0 9.34 \n",
|
|
||||||
"1 2023-04-22 Married 3 SLTA 11.0 9.86 \n",
|
|
||||||
"2 2024-01-31 Single 0 D2 3.0 9.66 \n",
|
|
||||||
"3 NaN Married 1 S1 1.0 9.54 \n",
|
|
||||||
"4 2023-02-21 Single 0 SLTA 1.0 9.14 \n",
|
|
||||||
"\n",
|
|
||||||
" departemen position income total_komp job_satisfaction \\\n",
|
|
||||||
"0 Engineering & IT Junior 5198046 NaN 2 \n",
|
|
||||||
"1 Service & Support Staff 1281761 NaN 1 \n",
|
|
||||||
"2 Creative & Design Staff 4902208 NaN 1 \n",
|
|
||||||
"3 Marketing Junior 6410492 NaN 2 \n",
|
|
||||||
"4 Operations Staff 1208627 NaN 2 \n",
|
|
||||||
"\n",
|
|
||||||
" performance_rating churn_status \n",
|
|
||||||
"0 2 0 \n",
|
|
||||||
"1 2 1 \n",
|
|
||||||
"2 3 1 \n",
|
|
||||||
"3 1 0 \n",
|
|
||||||
"4 2 1 "
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 1,
|
{
|
||||||
"metadata": {},
|
"ename": "ImportError",
|
||||||
"output_type": "execute_result"
|
"evalue": "Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python3.10 from \"c:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\python.exe\"\n * The NumPy version is: \"1.21.5\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n",
|
||||||
|
"output_type": "error",
|
||||||
|
"traceback": [
|
||||||
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
|
"\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)",
|
||||||
|
"Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[0;32m 2\u001b[0m data \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mread_csv(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mD:\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mTugas Akhir\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mCodingan\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mDevelopment\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mApp\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124motebook\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mpreprocessed_data_train_1.csv\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 3\u001b[0m data\u001b[38;5;241m.\u001b[39mhead()\n",
|
||||||
|
"File \u001b[1;32mc:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\lib\\site-packages\\pandas\\__init__.py:16\u001b[0m\n\u001b[0;32m 13\u001b[0m missing_dependencies\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing_dependencies:\n\u001b[1;32m---> 16\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m(\n\u001b[0;32m 17\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnable to import required dependencies:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(missing_dependencies)\n\u001b[0;32m 18\u001b[0m )\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m hard_dependencies, dependency, missing_dependencies\n\u001b[0;32m 21\u001b[0m \u001b[38;5;66;03m# numpy compat\u001b[39;00m\n",
|
||||||
|
"\u001b[1;31mImportError\u001b[0m: Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python3.10 from \"c:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\python.exe\"\n * The NumPy version is: \"1.21.5\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"import pandas as pd\n",
|
"import pandas as pd\n",
|
||||||
"data = pd.read_csv('D:\\Tugas Akhir\\Codingan\\Development\\Data\\data_train.csv')\n",
|
"data = pd.read_csv('D:\\Tugas Akhir\\Codingan\\Development\\App\\notebook\\preprocessed_data_train_1.csv')\n",
|
||||||
"data.head()"
|
"data.head()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -5375,7 +5210,7 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.9.18"
|
"version": "3.10.16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
@ -23,224 +23,24 @@
|
|||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"name": "stderr",
|
||||||
"text/html": [
|
"output_type": "stream",
|
||||||
"<div>\n",
|
"text": [
|
||||||
"<style scoped>\n",
|
"c:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\lib\\site-packages\\numpy\\__init__.py:148: UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring its correct out-of-the box operation under condition when Gnu OpenMP had already been loaded by Python process is not assured. Please install mkl-service package, see http://github.com/IntelPython/mkl-service\n",
|
||||||
" .dataframe tbody tr th:only-of-type {\n",
|
" from . import _distributor_init\n"
|
||||||
" vertical-align: middle;\n",
|
|
||||||
" }\n",
|
|
||||||
"\n",
|
|
||||||
" .dataframe tbody tr th {\n",
|
|
||||||
" vertical-align: top;\n",
|
|
||||||
" }\n",
|
|
||||||
"\n",
|
|
||||||
" .dataframe thead th {\n",
|
|
||||||
" text-align: right;\n",
|
|
||||||
" }\n",
|
|
||||||
"</style>\n",
|
|
||||||
"<table border=\"1\" class=\"dataframe\">\n",
|
|
||||||
" <thead>\n",
|
|
||||||
" <tr style=\"text-align: right;\">\n",
|
|
||||||
" <th></th>\n",
|
|
||||||
" <th>employee_id</th>\n",
|
|
||||||
" <th>domisili</th>\n",
|
|
||||||
" <th>jenis_kelamin</th>\n",
|
|
||||||
" <th>date_of_birth</th>\n",
|
|
||||||
" <th>join_date</th>\n",
|
|
||||||
" <th>resign_date</th>\n",
|
|
||||||
" <th>marriage_stat</th>\n",
|
|
||||||
" <th>dependant</th>\n",
|
|
||||||
" <th>education</th>\n",
|
|
||||||
" <th>absent_90D</th>\n",
|
|
||||||
" <th>...</th>\n",
|
|
||||||
" <th>active_work_category</th>\n",
|
|
||||||
" <th>work_stability_score</th>\n",
|
|
||||||
" <th>married_dependent_ratio</th>\n",
|
|
||||||
" <th>position_score</th>\n",
|
|
||||||
" <th>job_income_position_score</th>\n",
|
|
||||||
" <th>education_score</th>\n",
|
|
||||||
" <th>education_income_ratio</th>\n",
|
|
||||||
" <th>weighted_satisfaction_performance</th>\n",
|
|
||||||
" <th>resign_risk_indicator</th>\n",
|
|
||||||
" <th>adjusted_work_time</th>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" </thead>\n",
|
|
||||||
" <tbody>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>0</th>\n",
|
|
||||||
" <td>EM0001</td>\n",
|
|
||||||
" <td>Kabupaten Bogor</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1970-09-10</td>\n",
|
|
||||||
" <td>2024-01-04</td>\n",
|
|
||||||
" <td>2024-10-31</td>\n",
|
|
||||||
" <td>Married</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>S1</td>\n",
|
|
||||||
" <td>1.0</td>\n",
|
|
||||||
" <td>...</td>\n",
|
|
||||||
" <td>Short-term</td>\n",
|
|
||||||
" <td>5.00</td>\n",
|
|
||||||
" <td>3</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>2599023.0</td>\n",
|
|
||||||
" <td>5</td>\n",
|
|
||||||
" <td>1.039609e+06</td>\n",
|
|
||||||
" <td>2.0</td>\n",
|
|
||||||
" <td>Medium</td>\n",
|
|
||||||
" <td>9.329634</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>1</th>\n",
|
|
||||||
" <td>EM0002</td>\n",
|
|
||||||
" <td>Kota Jakarta Selatan</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1980-12-09</td>\n",
|
|
||||||
" <td>2021-01-05</td>\n",
|
|
||||||
" <td>2023-04-22</td>\n",
|
|
||||||
" <td>Married</td>\n",
|
|
||||||
" <td>3</td>\n",
|
|
||||||
" <td>SLTA</td>\n",
|
|
||||||
" <td>11.0</td>\n",
|
|
||||||
" <td>...</td>\n",
|
|
||||||
" <td>Mid-term</td>\n",
|
|
||||||
" <td>2.25</td>\n",
|
|
||||||
" <td>4</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>1281761.0</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>1.281761e+06</td>\n",
|
|
||||||
" <td>1.4</td>\n",
|
|
||||||
" <td>Medium</td>\n",
|
|
||||||
" <td>9.815385</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>2</th>\n",
|
|
||||||
" <td>EM0003</td>\n",
|
|
||||||
" <td>Tangerang</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1987-04-25</td>\n",
|
|
||||||
" <td>2022-01-17</td>\n",
|
|
||||||
" <td>2024-01-31</td>\n",
|
|
||||||
" <td>Single</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>D2</td>\n",
|
|
||||||
" <td>3.0</td>\n",
|
|
||||||
" <td>...</td>\n",
|
|
||||||
" <td>Mid-term</td>\n",
|
|
||||||
" <td>6.00</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>4902208.0</td>\n",
|
|
||||||
" <td>3</td>\n",
|
|
||||||
" <td>1.634069e+06</td>\n",
|
|
||||||
" <td>1.8</td>\n",
|
|
||||||
" <td>Medium</td>\n",
|
|
||||||
" <td>9.646590</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>3</th>\n",
|
|
||||||
" <td>EM0004</td>\n",
|
|
||||||
" <td>Kepulauan Seribu</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1975-12-24</td>\n",
|
|
||||||
" <td>2022-01-26</td>\n",
|
|
||||||
" <td>2024-10-31</td>\n",
|
|
||||||
" <td>Married</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>S1</td>\n",
|
|
||||||
" <td>1.0</td>\n",
|
|
||||||
" <td>...</td>\n",
|
|
||||||
" <td>Mid-term</td>\n",
|
|
||||||
" <td>16.50</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>2</td>\n",
|
|
||||||
" <td>3205246.0</td>\n",
|
|
||||||
" <td>5</td>\n",
|
|
||||||
" <td>1.282098e+06</td>\n",
|
|
||||||
" <td>1.6</td>\n",
|
|
||||||
" <td>Medium</td>\n",
|
|
||||||
" <td>9.536789</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" <tr>\n",
|
|
||||||
" <th>4</th>\n",
|
|
||||||
" <td>EM0005</td>\n",
|
|
||||||
" <td>Kota Jakarta Utara</td>\n",
|
|
||||||
" <td>Laki-laki</td>\n",
|
|
||||||
" <td>1987-06-15</td>\n",
|
|
||||||
" <td>2022-01-31</td>\n",
|
|
||||||
" <td>2023-02-21</td>\n",
|
|
||||||
" <td>Single</td>\n",
|
|
||||||
" <td>0</td>\n",
|
|
||||||
" <td>SLTA</td>\n",
|
|
||||||
" <td>1.0</td>\n",
|
|
||||||
" <td>...</td>\n",
|
|
||||||
" <td>Mid-term</td>\n",
|
|
||||||
" <td>6.00</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>1208627.0</td>\n",
|
|
||||||
" <td>1</td>\n",
|
|
||||||
" <td>1.208627e+06</td>\n",
|
|
||||||
" <td>2.0</td>\n",
|
|
||||||
" <td>Medium</td>\n",
|
|
||||||
" <td>9.131545</td>\n",
|
|
||||||
" </tr>\n",
|
|
||||||
" </tbody>\n",
|
|
||||||
"</table>\n",
|
|
||||||
"<p>5 rows × 37 columns</p>\n",
|
|
||||||
"</div>"
|
|
||||||
],
|
|
||||||
"text/plain": [
|
|
||||||
" employee_id domisili jenis_kelamin date_of_birth join_date \\\n",
|
|
||||||
"0 EM0001 Kabupaten Bogor Laki-laki 1970-09-10 2024-01-04 \n",
|
|
||||||
"1 EM0002 Kota Jakarta Selatan Laki-laki 1980-12-09 2021-01-05 \n",
|
|
||||||
"2 EM0003 Tangerang Laki-laki 1987-04-25 2022-01-17 \n",
|
|
||||||
"3 EM0004 Kepulauan Seribu Laki-laki 1975-12-24 2022-01-26 \n",
|
|
||||||
"4 EM0005 Kota Jakarta Utara Laki-laki 1987-06-15 2022-01-31 \n",
|
|
||||||
"\n",
|
|
||||||
" resign_date marriage_stat dependant education absent_90D ... \\\n",
|
|
||||||
"0 2024-10-31 Married 2 S1 1.0 ... \n",
|
|
||||||
"1 2023-04-22 Married 3 SLTA 11.0 ... \n",
|
|
||||||
"2 2024-01-31 Single 0 D2 3.0 ... \n",
|
|
||||||
"3 2024-10-31 Married 1 S1 1.0 ... \n",
|
|
||||||
"4 2023-02-21 Single 0 SLTA 1.0 ... \n",
|
|
||||||
"\n",
|
|
||||||
" active_work_category work_stability_score married_dependent_ratio \\\n",
|
|
||||||
"0 Short-term 5.00 3 \n",
|
|
||||||
"1 Mid-term 2.25 4 \n",
|
|
||||||
"2 Mid-term 6.00 1 \n",
|
|
||||||
"3 Mid-term 16.50 2 \n",
|
|
||||||
"4 Mid-term 6.00 1 \n",
|
|
||||||
"\n",
|
|
||||||
" position_score job_income_position_score education_score \\\n",
|
|
||||||
"0 2 2599023.0 5 \n",
|
|
||||||
"1 1 1281761.0 1 \n",
|
|
||||||
"2 1 4902208.0 3 \n",
|
|
||||||
"3 2 3205246.0 5 \n",
|
|
||||||
"4 1 1208627.0 1 \n",
|
|
||||||
"\n",
|
|
||||||
" education_income_ratio weighted_satisfaction_performance \\\n",
|
|
||||||
"0 1.039609e+06 2.0 \n",
|
|
||||||
"1 1.281761e+06 1.4 \n",
|
|
||||||
"2 1.634069e+06 1.8 \n",
|
|
||||||
"3 1.282098e+06 1.6 \n",
|
|
||||||
"4 1.208627e+06 2.0 \n",
|
|
||||||
"\n",
|
|
||||||
" resign_risk_indicator adjusted_work_time \n",
|
|
||||||
"0 Medium 9.329634 \n",
|
|
||||||
"1 Medium 9.815385 \n",
|
|
||||||
"2 Medium 9.646590 \n",
|
|
||||||
"3 Medium 9.536789 \n",
|
|
||||||
"4 Medium 9.131545 \n",
|
|
||||||
"\n",
|
|
||||||
"[5 rows x 37 columns]"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 1,
|
{
|
||||||
"metadata": {},
|
"ename": "ImportError",
|
||||||
"output_type": "execute_result"
|
"evalue": "Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python3.10 from \"c:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\python.exe\"\n * The NumPy version is: \"1.21.5\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n",
|
||||||
|
"output_type": "error",
|
||||||
|
"traceback": [
|
||||||
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||||
|
"\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)",
|
||||||
|
"Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[0;32m 3\u001b[0m df \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mread_csv(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mD:\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mTugas Akhir\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mCodingan\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mDevelopment\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mData\u001b[39m\u001b[38;5;124m\\\u001b[39m\u001b[38;5;124mpreprocessed_data_train.csv\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 4\u001b[0m df\u001b[38;5;241m.\u001b[39mhead()\n",
|
||||||
|
"File \u001b[1;32mc:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\lib\\site-packages\\pandas\\__init__.py:16\u001b[0m\n\u001b[0;32m 13\u001b[0m missing_dependencies\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdependency\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 15\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing_dependencies:\n\u001b[1;32m---> 16\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m(\n\u001b[0;32m 17\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnable to import required dependencies:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mjoin(missing_dependencies)\n\u001b[0;32m 18\u001b[0m )\n\u001b[0;32m 19\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m hard_dependencies, dependency, missing_dependencies\n\u001b[0;32m 21\u001b[0m \u001b[38;5;66;03m# numpy compat\u001b[39;00m\n",
|
||||||
|
"\u001b[1;31mImportError\u001b[0m: Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python3.10 from \"c:\\Users\\Jesselyn Mu\\anaconda3\\envs\\myenv\\python.exe\"\n * The NumPy version is: \"1.21.5\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@ -2199,7 +1999,7 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.9.18"
|
"version": "3.10.16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
@ -241,11 +241,13 @@ def show_home():
|
|||||||
<div class="text-content">
|
<div class="text-content">
|
||||||
<h2 class="section-title">Bagian Aplikasi</h2>
|
<h2 class="section-title">Bagian Aplikasi</h2>
|
||||||
<p style="text-align: justify;">
|
<p style="text-align: justify;">
|
||||||
Aplikasi ini dirancang untuk mendukung prediksi retensi karyawan dan pengelolaan data dengan fitur-fitur yang terstruktur berdasarkan peran pengguna.
|
Aplikasi ini dirancang untuk mendukung prediksi retensi karyawan dan pengelolaan data
|
||||||
Halaman login menjadi pintu masuk utama untuk autentikasi, setelah itu pengguna diarahkan ke halaman sesuai perannya: admin, karyawan, atau pimpinan.
|
dengan fitur-fitur yang terstruktur berdasarkan peran pengguna.
|
||||||
Admin memiliki akses ke halaman prediksi untuk analisis data, dashboard untuk memantau statistik, dan halaman laporan untuk melihat detail data.
|
Dimulai dari Halaman Utama, pengguna diarahkan ke Halaman Login,
|
||||||
Karyawan dapat mengisi form kepuasan kerja untuk memberikan umpan balik terkait pengalaman mereka.
|
yang kemudian membagi akses berdasarkan peran: Admin, Karyawan, dan Pimpinan.
|
||||||
Sementara itu, pimpinan dapat menggunakan dashboard untuk melihat data strategis serta mengisi form penilaian kinerja guna mengevaluasi performa karyawan.
|
Admin memiliki akses ke Halaman Prediksi, Halaman Dashboard, dan Halaman Laporan untuk mengelola data dan analisis.
|
||||||
|
Karyawan dapat mengisi Form Kepuasan Kerja dan Form Komplain untuk memberikan feedback dan keluhan.
|
||||||
|
Pimpinan memiliki akses ke Form Penilaian untuk evaluasi serta Halaman Dashboard untuk melihat data yang relevan.
|
||||||
Aplikasi ini dirancang untuk mempermudah pengelolaan dan pengambilan keputusan berbasis data.
|
Aplikasi ini dirancang untuk mempermudah pengelolaan dan pengambilan keputusan berbasis data.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -254,7 +256,6 @@ def show_home():
|
|||||||
unsafe_allow_html=True
|
unsafe_allow_html=True
|
||||||
)
|
)
|
||||||
|
|
||||||
# Berita dan Informasi
|
|
||||||
st.markdown(
|
st.markdown(
|
||||||
f"""
|
f"""
|
||||||
<div class="news-section">
|
<div class="news-section">
|
||||||
@ -274,7 +275,6 @@ def show_home():
|
|||||||
unsafe_allow_html=True
|
unsafe_allow_html=True
|
||||||
)
|
)
|
||||||
|
|
||||||
# Footer
|
|
||||||
st.markdown(
|
st.markdown(
|
||||||
"""
|
"""
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
@ -285,13 +285,10 @@ def show_home():
|
|||||||
unsafe_allow_html=True
|
unsafe_allow_html=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_image_as_base64(image_path):
|
def get_image_as_base64(image_path):
|
||||||
import base64
|
import base64
|
||||||
with open(image_path, "rb") as img_file:
|
with open(image_path, "rb") as img_file:
|
||||||
return base64.b64encode(img_file.read()).decode("utf-8")
|
return base64.b64encode(img_file.read()).decode("utf-8")
|
||||||
|
|
||||||
|
|
||||||
# Jalankan aplikasi
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
show_home()
|
show_home()
|
@ -462,41 +462,7 @@ def show_prediction():
|
|||||||
col1, col2 = st.columns([1.5, 2]) # **Kolom pertama untuk grafik, kolom kedua untuk penjelasan**
|
col1, col2 = st.columns([1.5, 2]) # **Kolom pertama untuk grafik, kolom kedua untuk penjelasan**
|
||||||
|
|
||||||
with col1:
|
with col1:
|
||||||
# st.image(buf, caption="SHAP Waterfall Plot", use_container_width=True)
|
|
||||||
# Tambahkan CSS styling ke HTML
|
|
||||||
st.markdown(
|
|
||||||
"""
|
|
||||||
<style>
|
|
||||||
.shap-container {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
.shap-image {
|
|
||||||
border-radius: 10px; /* Sudut membulat */
|
|
||||||
box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2); /* Shadow */
|
|
||||||
border: 2px solid #ddd; /* Stroke */
|
|
||||||
padding: 5px; /* Ruang di dalam border */
|
|
||||||
background: white; /* Biar keliatan efeknya */
|
|
||||||
max-width: 100%; /* Biar responsif */
|
|
||||||
}
|
|
||||||
.shap-caption {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 14px;
|
|
||||||
font-family: 'Poppins', sans-serif;
|
|
||||||
color: #555;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
""",
|
|
||||||
unsafe_allow_html=True
|
|
||||||
)
|
|
||||||
|
|
||||||
# Gunakan `st.image()` untuk menampilkan gambar SHAP dari `buf`
|
|
||||||
st.markdown('<div class="shap-container">', unsafe_allow_html=True)
|
|
||||||
st.image(buf, caption="SHAP Waterfall Plot", use_container_width=True)
|
st.image(buf, caption="SHAP Waterfall Plot", use_container_width=True)
|
||||||
st.markdown('</div>', unsafe_allow_html=True)
|
|
||||||
|
|
||||||
with col2:
|
with col2:
|
||||||
top_factors = sorted(shap_dict.items(), key=lambda x: abs(x[1]), reverse=True)[:5]
|
top_factors = sorted(shap_dict.items(), key=lambda x: abs(x[1]), reverse=True)[:5]
|
||||||
|
Reference in New Issue
Block a user