Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
#
|
654 |
-
|
655 |
|
656 |
-
#
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
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',
|
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 |
|