perezcatriel commited on
Commit
5788134
·
1 Parent(s): b7fb3d6
Files changed (1) hide show
  1. 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)