C2MV commited on
Commit
4c5c7f1
verified
1 Parent(s): f6d8124

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -9
app.py CHANGED
@@ -18,6 +18,7 @@ from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
18
  import os
19
  import json
20
  from sklearn.linear_model import Ridge, Lasso, ElasticNet
 
21
  from sklearn.model_selection import cross_val_score
22
  from sklearn.decomposition import PCA
23
  from sklearn.preprocessing import StandardScaler
@@ -650,15 +651,39 @@ class RSM_BoxBehnken:
650
  f'{self.x1_name}_sq', f'{self.x2_name}_sq', f'{self.x3_name}_sq']]
651
  y = self.data[self.y_name]
652
 
653
- # Calcular R虏 de validaci贸n cruzada
654
- r2_scores = cross_val_score(self.model_simplified, X, y, cv=cv_folds)
655
 
656
- # Calcular MSE de validaci贸n cruzada
657
- mse_scores = -cross_val_score(
658
- self.model_simplified, X, y,
659
- cv=cv_folds,
660
- scoring='neg_mean_squared_error'
661
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
662
 
663
  # Crear tabla de resultados
664
  cv_results = pd.DataFrame({
@@ -668,7 +693,7 @@ class RSM_BoxBehnken:
668
  })
669
 
670
  # Agregar promedio
671
- cv_results.loc['Promedio'] = ['Promedio', cv_results['R虏'].mean(), cv_results['MSE'].mean()]
672
 
673
  return cv_results
674
 
 
18
  import os
19
  import json
20
  from sklearn.linear_model import Ridge, Lasso, ElasticNet
21
+ from sklearn.model_selection import KFold # CORRECCI脫N IMPORTANTE
22
  from sklearn.model_selection import cross_val_score
23
  from sklearn.decomposition import PCA
24
  from sklearn.preprocessing import StandardScaler
 
651
  f'{self.x1_name}_sq', f'{self.x2_name}_sq', f'{self.x3_name}_sq']]
652
  y = self.data[self.y_name]
653
 
654
+ # Crear los folds
655
+ kf = KFold(n_splits=cv_folds, shuffle=True, random_state=42)
656
 
657
+ # Almacenar los resultados
658
+ r2_scores = []
659
+ mse_scores = []
660
+
661
+ # Realizar la validaci贸n cruzada
662
+ for train_index, test_index in kf.split(X):
663
+ X_train, X_test = X.iloc[train_index], X.iloc[test_index]
664
+ y_train, y_test = y.iloc[train_index], y.iloc[test_index]
665
+
666
+ # Crear un DataFrame para el ajuste del modelo
667
+ train_data = X_train.copy()
668
+ train_data[self.y_name] = y_train
669
+
670
+ # Ajustar el modelo en los datos de entrenamiento
671
+ formula = f'{self.y_name} ~ {self.x1_name} + {self.x2_name} + {self.x3_name} + ' \
672
+ f'{self.x1_name}_sq + {self.x2_name}_sq + {self.x3_name}_sq'
673
+ model = smf.ols(formula, data=train_data).fit()
674
+
675
+ # Predecir en los datos de prueba
676
+ y_pred = model.predict(X_test)
677
+
678
+ # Calcular R虏
679
+ ss_total = np.sum((y_test - np.mean(y_test))**2)
680
+ ss_residual = np.sum((y_test - y_pred)**2)
681
+ r2 = 1 - (ss_residual / ss_total)
682
+ r2_scores.append(r2)
683
+
684
+ # Calcular MSE
685
+ mse = np.mean((y_test - y_pred)**2)
686
+ mse_scores.append(mse)
687
 
688
  # Crear tabla de resultados
689
  cv_results = pd.DataFrame({
 
693
  })
694
 
695
  # Agregar promedio
696
+ cv_results.loc['Promedio'] = ['Promedio', np.mean(r2_scores), np.mean(mse_scores)]
697
 
698
  return cv_results
699