Spaces:
Runtime error
Runtime error
perezcatriel
commited on
Commit
•
122cd0e
1
Parent(s):
74b1fdc
nuevos modelos betas
Browse files- ML/salary.py +11 -1
- app.py +93 -5
ML/salary.py
CHANGED
@@ -34,8 +34,18 @@ results_df['company_location'] = le.inverse_transform(results_df['company_locati
|
|
34 |
# Ordenar los resultados por salario predicho
|
35 |
results_df = results_df.sort_values('predicted_salary', ascending=False).reset_index(drop=True)
|
36 |
|
|
|
|
|
37 |
# Mostrar el título y el top 5 de países mejor pagados
|
38 |
-
st.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
for i in range(5):
|
40 |
location = results_df.loc[i, 'company_location']
|
41 |
salary = results_df.loc[i, 'predicted_salary']
|
|
|
34 |
# Ordenar los resultados por salario predicho
|
35 |
results_df = results_df.sort_values('predicted_salary', ascending=False).reset_index(drop=True)
|
36 |
|
37 |
+
|
38 |
+
|
39 |
# Mostrar el título y el top 5 de países mejor pagados
|
40 |
+
st.markdown("""
|
41 |
+
<h1>Top 5 de países mejor pagados</h1>
|
42 |
+
""", unsafe_allow_html=True)
|
43 |
+
|
44 |
+
# Descripción
|
45 |
+
st.markdown("""
|
46 |
+
<p>Este código utiliza un algoritmo de RandomForest para seleccionar solo algunas empresas de cada país de forma aleatoria y retornar el promedio. Utilizamos este algoritmo para obtener un promedio menos sesgado por outliers</p>
|
47 |
+
""", unsafe_allow_html=True)
|
48 |
+
|
49 |
for i in range(5):
|
50 |
location = results_df.loc[i, 'company_location']
|
51 |
salary = results_df.loc[i, 'predicted_salary']
|
app.py
CHANGED
@@ -631,7 +631,7 @@ if selected2 == "ML":
|
|
631 |
|
632 |
st.markdown('''
|
633 |
<br><br><br>
|
634 |
-
<h2>Gracias por su tiempo y atención!</h2>
|
635 |
<hr>
|
636 |
<h3>Nuevas Propuestas...</h3>
|
637 |
<p>Sí te gusto lo que viste, te invito a ver lo que se vendrá en la
|
@@ -648,6 +648,84 @@ if selected2 == "New":
|
|
648 |
time.sleep(0.05)
|
649 |
my_bar.progress(percent_complete + 1, text=progress_text)
|
650 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
651 |
#####
|
652 |
import pandas as pd
|
653 |
import streamlit as st
|
@@ -675,9 +753,19 @@ if selected2 == "New":
|
|
675 |
clf.fit(X, df.Aptitude)
|
676 |
|
677 |
# Crear la interfaz de usuario con Streamlit
|
678 |
-
st.
|
679 |
-
|
680 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
681 |
|
682 |
title = st.text_input("Título del trabajo")
|
683 |
|
@@ -719,7 +807,7 @@ if selected2 == "New":
|
|
719 |
if selected2 == "Contact":
|
720 |
|
721 |
st.markdown('''
|
722 |
-
<h2>Presupuesto</h2>
|
723 |
<hr>
|
724 |
''', unsafe_allow_html=True)
|
725 |
|
|
|
631 |
|
632 |
st.markdown('''
|
633 |
<br><br><br>
|
634 |
+
<h2>Gracias por su <strong>tiempo y atención!</strong></h2>
|
635 |
<hr>
|
636 |
<h3>Nuevas Propuestas...</h3>
|
637 |
<p>Sí te gusto lo que viste, te invito a ver lo que se vendrá en la
|
|
|
648 |
time.sleep(0.05)
|
649 |
my_bar.progress(percent_complete + 1, text=progress_text)
|
650 |
|
651 |
+
#####
|
652 |
+
st.markdown("""
|
653 |
+
<h1>Proyectos en Beta</h1>
|
654 |
+
<hr>
|
655 |
+
<p>Estos proyectos todavía no están terminados, pero queremos mostrar un avance de lo que se viene muy pronto...</p>
|
656 |
+
""", unsafe_allow_html=True)
|
657 |
+
|
658 |
+
import pandas as pd
|
659 |
+
import streamlit as st
|
660 |
+
from sklearn.preprocessing import LabelEncoder
|
661 |
+
from sklearn.ensemble import RandomForestRegressor
|
662 |
+
|
663 |
+
# Leer los datos y seleccionar las columnas necesarias
|
664 |
+
df = pd.read_csv('./ML/ds_salaries.csv')
|
665 |
+
df = df[['company_location', 'salary_in_usd']]
|
666 |
+
|
667 |
+
# Codificar las ubicaciones de las empresas
|
668 |
+
le = LabelEncoder()
|
669 |
+
df['company_location'] = le.fit_transform(df['company_location'])
|
670 |
+
|
671 |
+
# Decodificar las ubicaciones de las empresas
|
672 |
+
decoded_locations = le.inverse_transform(df['company_location'].unique())
|
673 |
+
|
674 |
+
# Separar los datos de entrada y salida
|
675 |
+
X = df.iloc[:, :-1].values
|
676 |
+
y = df.iloc[:, -1].values
|
677 |
+
|
678 |
+
# Entrenar el modelo
|
679 |
+
model = RandomForestRegressor(n_estimators=100, random_state=42)
|
680 |
+
model.fit(X, y)
|
681 |
+
|
682 |
+
# Obtener las ubicaciones de las empresas y sus salarios predichos
|
683 |
+
locations = df['company_location'].unique()
|
684 |
+
predicted_salaries = model.predict(locations.reshape(-1, 1))
|
685 |
+
results_df = pd.DataFrame(
|
686 |
+
{'company_location': locations, 'predicted_salary': predicted_salaries})
|
687 |
+
|
688 |
+
# Decodificar las ubicaciones de las empresas
|
689 |
+
results_df['company_location'] = le.inverse_transform(
|
690 |
+
results_df['company_location'])
|
691 |
+
|
692 |
+
# Ordenar los resultados por salario predicho
|
693 |
+
results_df = results_df.sort_values('predicted_salary',
|
694 |
+
ascending=False).reset_index(drop=True)
|
695 |
+
|
696 |
+
# Mostrar el título y el top 5 de países mejor pagados
|
697 |
+
st.markdown("""
|
698 |
+
<h2>Top 5 de países mejor pagados</h2>
|
699 |
+
<hr>
|
700 |
+
""", unsafe_allow_html=True)
|
701 |
+
|
702 |
+
# Descripción
|
703 |
+
st.markdown("""
|
704 |
+
<p>Este código utiliza un algoritmo de <strong>RandomForest</strong>
|
705 |
+
para seleccionar solo algunas empresas de cada país de forma aleatoria y retornar el promedio. Utilizamos este algoritmo para obtener un promedio menos sesgado por outliers</p>
|
706 |
+
""", unsafe_allow_html=True)
|
707 |
+
|
708 |
+
for i in range(5):
|
709 |
+
location = results_df.loc[i, 'company_location']
|
710 |
+
salary = results_df.loc[i, 'predicted_salary']
|
711 |
+
st.markdown(f'### **{location}**: ${salary:,.2f}',
|
712 |
+
unsafe_allow_html=True)
|
713 |
+
|
714 |
+
# Mostrar el menú desplegable para seleccionar un país
|
715 |
+
st.markdown("""
|
716 |
+
<h2>Seleccionar un país</h2>
|
717 |
+
<hr>
|
718 |
+
""", unsafe_allow_html=True)
|
719 |
+
selected_location = st.selectbox('Ubicación de la empresa',
|
720 |
+
decoded_locations)
|
721 |
+
|
722 |
+
# Mostrar el salario predicho para el país seleccionado
|
723 |
+
predicted_salary = results_df.loc[results_df[
|
724 |
+
'company_location'] == selected_location, 'predicted_salary'].iloc[
|
725 |
+
0]
|
726 |
+
st.markdown(f'### **{selected_location}**: ${predicted_salary:,.2f}',
|
727 |
+
unsafe_allow_html=True)
|
728 |
+
|
729 |
#####
|
730 |
import pandas as pd
|
731 |
import streamlit as st
|
|
|
753 |
clf.fit(X, df.Aptitude)
|
754 |
|
755 |
# Crear la interfaz de usuario con Streamlit
|
756 |
+
st.markdown("""
|
757 |
+
<h2>Predicción de Skills</h2>
|
758 |
+
<hr>
|
759 |
+
""", unsafe_allow_html=True)
|
760 |
+
st.markdown(
|
761 |
+
"""
|
762 |
+
<p>Ingrese el título del trabajo para ver las habilidades más
|
763 |
+
importantes.</p>
|
764 |
+
<p>Con el modelo de <strong>Naive Bayes</strong> cada skill recibe
|
765 |
+
una puntuación con respecto a un título de trabajo, por lo cual,
|
766 |
+
al ingresar un título de trabajo el algoritmo retorna las skill más
|
767 |
+
utilizadas en las publicaciones de la base de dato de LatamBrain.
|
768 |
+
""", unsafe_allow_html=True)
|
769 |
|
770 |
title = st.text_input("Título del trabajo")
|
771 |
|
|
|
807 |
if selected2 == "Contact":
|
808 |
|
809 |
st.markdown('''
|
810 |
+
<h2>Simulación de <strong>Presupuesto</strong></h2>
|
811 |
<hr>
|
812 |
''', unsafe_allow_html=True)
|
813 |
|