Spaces:
Runtime error
Runtime error
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("<h1 style='text-align: center;'>Mô hình dự đoán lương</h1>", 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() | |