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 |
|