perezcatriel commited on
Commit
122cd0e
1 Parent(s): 74b1fdc

nuevos modelos betas

Browse files
Files changed (2) hide show
  1. ML/salary.py +11 -1
  2. 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.title('Top 5 de países mejor pagados')
 
 
 
 
 
 
 
 
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.title("Predicción de Skills")
679
- st.write(
680
- "Ingrese el título del trabajo para ver las habilidades más importantes.")
 
 
 
 
 
 
 
 
 
 
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