import streamlit as st import pandas as pd import numpy as np import pickle import json import joblib as jb # load models model = jb.load('model.pkl') # load data df = pd.read_csv('DataScienceSalaries.csv') map_ex = {'SE': 'Senior-level', 'MI': 'Mid-level', 'EN': 'Entry-level', 'EX': 'Executive-level'} map_ex_inverse = {v: k for k, v in map_ex.items()} map_type = {'FT': 'Toàn thời gian', 'PT': 'Bán thời gian', 'CT': 'Hợp đồng', 'FL': 'Tự do'} map_type_inverse = {v: k for k, v in map_type.items()} map_size = {'S': 'Nhỏ', 'M': 'Vừa', 'L': 'Lớn'} map_size_inverse = {v: k for k, v in map_size.items()} map_job = { "Principal Data Scientist": "Chuyên gia Khoa học Dữ liệu Cấp cao", "ML Engineer": "Kỹ sư Máy học", "Data Scientist": "Nhà khoa học Dữ liệu", "Data Analyst": "Nhà phân tích Dữ liệu", "Machine Learning Scientist": "Nhà khoa học Máy học", "AI Scientist": "Nhà khoa học Trí tuệ Nhân tạo", "Director of Data Science": "Giám đốc Khoa học Dữ liệu", "Data Engineering Manager": "Quản lý Kỹ thuật Dữ liệu", "Data Engineer": "Kỹ sư Dữ liệu", "Machine Learning Engineer": "Kỹ sư Máy học", "Machine Learning Developer": "Nhà phát triển Máy học", "Big Data Engineer": "Kỹ sư Big Data", "Business Intelligence Developer": "Nhà phát triển Trí tuệ Kinh doanh", "BI Data Analyst": "Nhà phân tích Dữ liệu BI", "Lead Data Analyst": "Trưởng nhóm Nhà phân tích Dữ liệu", "Lead Data Engineer": "Trưởng nhóm Kỹ sư Dữ liệu", "Lead Data Scientist": "Trưởng nhóm Nhà khoa học Dữ liệu", "Research Scientist": "Nhà khoa học Nghiên cứu", "Data Science Manager": "Quản lý Khoa học Dữ liệu", "Product Data Analyst": "Nhà phân tích Dữ liệu Sản phẩm", "Head of Data": "Trưởng phòng Dữ liệu", "Analytics Engineer": "Kỹ sư Phân tích", "Data Science Consultant": "Tư vấn Khoa học Dữ liệu", "Machine Learning Infrastructure Engineer": "Kỹ sư Cơ sở hạ tầng Máy học", "Applied Data Scientist": "Nhà khoa học Dữ liệu Ứng dụng", "Data Analytics Engineer": "Kỹ sư Phân tích Dữ liệu", "Data Architecture": "Kiến trúc Dữ liệu", "Database Administrator": "Quản trị viên Cơ sở dữ liệu", "Software Engineer": "Kỹ sư Phần mềm", "Statistician": "Nhà thống kê", "Product Manager": "Quản lý Sản phẩm", "Marketing Data Analyst": "Nhà phân tích Dữ liệu Tiếp thị", "Financial Data Analyst": "Nhà phân tích Dữ liệu Tài chính", "Data Science Engineer": "Kỹ sư Khoa học Dữ liệu", "Principal Data Engineer": "Chuyên gia Kỹ sư Dữ liệu Cấp cao", "AI Engineer": "Kỹ sư Trí tuệ Nhân tạo", "Data Operations Analyst": "Nhà phân tích Hoạt động Dữ liệu", "Business Data Analyst": "Nhà phân tích Dữ liệu Kinh doanh", "Applied Machine Learning Engineer": "Kỹ sư Máy học Ứng dụng", "Data Product Manager": "Quản lý Sản phẩm Dữ liệu", "Data Specialist": "Chuyên gia Dữ liệu", "Head of Data Science": "Trưởng phòng Khoa học Dữ liệu", "Machine Learning Operations Engineer": "Kỹ sư Hoạt động Máy học", "Data Architect": "Kiến trúc sư Dữ liệu", "Data Science Instructor": "Giảng viên Khoa học Dữ liệu", "Principal Data Analyst": "Chuyên gia Phân tích Dữ liệu Cấp cao", "Senior Data Scientist": "Nhà khoa học Dữ liệu Cấp cao", "Senior Data Engineer": "Kỹ sư Dữ liệu Cấp cao", } map_job_inverse = {v: k for k, v in map_job.items()} def run(): st.markdown("

Mô hình dự đoán lương

", unsafe_allow_html=True) # description st.subheader('Vui lòng kiểm tra mức lương của bạn tại đây.') with st.form('key=form_prediction'): year = st.selectbox('Năm làm việc', df['work_year'].unique()) experience_select = st.selectbox('Cấp độ kinh nghiệm', map_ex.values()) experience = map_ex_inverse[experience_select] employment_select = st.selectbox('Hình thức hợp đồng', map_type.values()) employment = map_type_inverse[employment_select] job_select = st.selectbox('Vị trí công việc', map_job.values()) job = map_job_inverse[job_select] residence = st.selectbox('Quốc tịch', sorted(df['employee_residence'].unique())) remote = st.selectbox('Làm việc từ xa [%]', df['remote_ratio'].unique()) location = st.selectbox('Vị trí công ty', sorted(df['company_location'].unique())) size_select = st.selectbox('Quy mô công ty', map_size.values()) size = map_size_inverse[size_select] submitted = st.form_submit_button('Dự đoán') inf = { 'work_year': year, 'experience_level': experience, 'employment_type': employment, 'job_title': job, 'employee_residence': residence, 'remote_ratio': remote, 'company_location': location, 'company_size': size } data_inf = pd.DataFrame([inf]) st.dataframe(data_inf) if submitted: # Predict using bagging y_pred_inf = model.predict(data_inf) st.write('Với kinh nghiệm này bạn sẽ nhận được mức lương 1 năm khoảng') st.write('# $', str(int(y_pred_inf))) st.write( 'LƯU Ý: Hãy nhớ rằng mô hình này không chính xác 100%, vui lòng kiểm tra lại với một trang web khác về tiền lương như Glassdoor') if __name__ == '__main__': run()