File size: 5,824 Bytes
def27a0
 
 
 
 
 
 
 
 
 
 
 
687dc0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
def27a0
 
687dc0b
def27a0
 
 
 
 
 
687dc0b
 
 
 
 
 
 
def27a0
687dc0b
def27a0
687dc0b
 
def27a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
687dc0b
def27a0
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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()