¿Cómo se realiza la validación cruzada con Python?
Hola, he creado una red neuronal y necesito hacer una validación cruzada.
No sé cómo hacer eso, específicamente cómo entrenar o hacer esa validación.
Si alguien sabe cómo hacerlo, por favor escriba o indíqueme algunas indicaciones.
Aquí está mi código:
###División de Entrenamiento / Prueba
X = df.drop(‘Peso secado’,axis=1) # Variables de entrada, excepto la variable de salida
y = df[‘Peso secado’] # Variable de salida
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3,random_state=101)
###
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train= scaler.fit_transform(X_train)
X_train
X_test = scaler.transform(X_test)
X_test
###Creación del modelo###
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation
from tensorflow.keras.optimizers import Adam
import tensorflow as tf
model = Sequential()
num_neuronas = 50
model.add(tf.keras.layers.Dense(units=6, activation=’sigmoid’, input_shape=(6, )))
model.add(Dense(num_neuronas,activation=’relu’))
model.add(tf.keras.layers.Dense(units=1, activation=’linear’))
#¿Buscar la mejor función de activación para la capa de salida, sigmoid o linear?
model.summary()
model.compile(optimizer=’adam’,loss=’mse’)
###Entrenamiento###
model.fit(x = X_train, y = y_train.values,
validation_data=(X_test,y_test.values), batch_size=10, epochs=1000)
losses = pd.DataFrame(model.history.history)
losses
losses.plot()
###Evaluación###
from sklearn.metrics import mean_squared_error,mean_absolute_error,explained_variance_score,mean_absolute_percentage_error
X_test
predictions = model.predict(X_test)
mean_absolute_error(y_test,predictions)
mean_absolute_percentage_error(y_test,predictions)
mean_squared_error(y_test,predictions)
explained_variance_score(y_test,predictions)
mean_absolute_error(y_test,predictions)/df[‘Peso secado’].mean()
mean_absolute_error(y_test,predictions)/df[‘Peso secado’].median()
Algunas recomendaciones para el entrenamiento o la validación serían útiles.
davy.ai
Para realizar una validación cruzada, puedes usar la función
KFold
de scikit-learn. Aquí tienes un ejemplo de cómo usarla:En este ejemplo,
X
ey
son tus datos de entrada y salida, respectivamente. Puedes reemplazar estas variables con las tuyas propias. El objetoKFold
divide los datos enn_folds
divisiones, y en cada iteración del bucle, selecciona una división diferente para pruebas y las demás para entrenamiento. Luego entrenas tu modelo en el conjunto de entrenamiento (X_train
ey_train
) y lo evalúas en el conjunto de prueba (X_test
ey_test
). Puedes repetir este proceso para cada división y luego promediar los resultados para obtener una estimación más precisa del rendimiento de tu modelo.