Spaces:
Runtime error
Runtime error
Commit
·
5788134
1
Parent(s):
b7fb3d6
salary.py
Browse files- ML/salary.py +48 -0
ML/salary.py
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pandas as pd
|
2 |
+
import streamlit as st
|
3 |
+
from sklearn.preprocessing import LabelEncoder
|
4 |
+
from sklearn.ensemble import RandomForestRegressor
|
5 |
+
|
6 |
+
# Leer los datos y seleccionar las columnas necesarias
|
7 |
+
df = pd.read_csv('./ds_salaries.csv')
|
8 |
+
df = df[['company_location', 'salary_in_usd']]
|
9 |
+
|
10 |
+
# Codificar las ubicaciones de las empresas
|
11 |
+
le = LabelEncoder()
|
12 |
+
df['company_location'] = le.fit_transform(df['company_location'])
|
13 |
+
|
14 |
+
# Separar los datos de entrada y salida
|
15 |
+
X = df.iloc[:, :-1].values
|
16 |
+
y = df.iloc[:, -1].values
|
17 |
+
|
18 |
+
# Entrenar el modelo
|
19 |
+
model = RandomForestRegressor(n_estimators=100, random_state=42)
|
20 |
+
model.fit(X, y)
|
21 |
+
|
22 |
+
# Obtener las ubicaciones de las empresas y sus salarios predichos
|
23 |
+
locations = df['company_location'].unique()
|
24 |
+
predicted_salaries = model.predict(locations.reshape(-1, 1))
|
25 |
+
results_df = pd.DataFrame({'company_location': locations, 'predicted_salary': predicted_salaries})
|
26 |
+
|
27 |
+
# Decodificar las ubicaciones de las empresas
|
28 |
+
decoded_locations = le.inverse_transform(locations)
|
29 |
+
results_df['company_location'] = decoded_locations
|
30 |
+
|
31 |
+
# Ordenar los resultados por salario predicho
|
32 |
+
results_df = results_df.sort_values('predicted_salary', ascending=False).reset_index(drop=True)
|
33 |
+
|
34 |
+
# Mostrar el título y el top 5 de países mejor pagados
|
35 |
+
st.title('Top 5 de países mejor pagados')
|
36 |
+
for i in range(5):
|
37 |
+
location = results_df.loc[i, 'company_location']
|
38 |
+
salary = results_df.loc[i, 'predicted_salary']
|
39 |
+
st.markdown(f'### **{location}**: ${salary:,.2f}', unsafe_allow_html=True)
|
40 |
+
|
41 |
+
# Mostrar el menú desplegable para seleccionar un país
|
42 |
+
st.markdown('---')
|
43 |
+
st.title('Seleccionar un país')
|
44 |
+
selected_location = st.selectbox('Ubicación de la empresa', decoded_locations)
|
45 |
+
|
46 |
+
# Mostrar el salario predicho para el país seleccionado
|
47 |
+
predicted_salary = results_df.loc[results_df['company_location'] == selected_location, 'predicted_salary'].iloc[0]
|
48 |
+
st.markdown(f'### **{selected_location}**: ${predicted_salary:,.2f}', unsafe_allow_html=True)
|