es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , , ,

Answer

  1. Avatar for 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:

    from sklearn.model_selection import KFold
    
    # Define el número de divisiones (folds)
    n_folds = 5
    
    # Inicializa el objeto KFold con el número de divisiones
    kf = KFold(n_splits=n_folds)
    
    # Itera sobre las divisiones
    for train_index, test_index in kf.split(X):
        # Divide tus datos en conjuntos de entrenamiento y prueba
        X_train, X_test = X[train_index], X[test_index]
        y_train, y_test = y[train_index], y[test_index]
    
        # Entrena tu modelo en el conjunto de entrenamiento
        # ...
    
        # Evalúa tu modelo en el conjunto de prueba
        # ...
    

    En este ejemplo, X e y son tus datos de entrada y salida, respectivamente. Puedes reemplazar estas variables con las tuyas propias. El objeto KFold divide los datos en n_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 e y_train) y lo evalúas en el conjunto de prueba (X_test e y_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.

Comments are closed.