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.

Diferentes resultados producidos por linearRegression.score y svm.svc(kernel = linear)

Soy un traductor de documentos de TI que traduce al español. Traduzca lo siguiente al español. No traduzca el código y la salida en Markdown.

Soy muy nuevo en aprendizaje automático.

Tengo un conjunto de datos y quiero aplicar una división de prueba y entrenamiento y validación cruzada para la regresión lineal en él.

He intentado dividir el conjunto de datos usando traintestsplit(X, y, test_size=0.3), y realicé ambos


reg = LinearRegression().fit(X_train,y_train)
reg.score(X_test,y_test)
clf = svm.SVC(kernel = 'linear').fit(X_train,y_train)
clf.score(X_test,y_test)

el reg.score da una salida de 0.98, pero el clf.score solo da una salida muy baja, cercana a 0. ¿Por qué son diferentes estos resultados?

También intenté

clf = svm.SVC(kernel='linear', C=1, random_state=42)
scores = cross_val_score(clf, X, y, cv=2)

También da números muy pequeños y vi esta advertencia

UserWarning: La clase con menos miembros tiene solo 1 miembro, lo que es menos que n_splits=2.
% (min_groups, self.n_splits)), UserWarning)

He probado diferentes cv pero cv>5 da un error “n_splits=5 no puede ser mayor que el número de miembros en cada clase.” Tenga en cuenta que el conjunto de datos que estoy usando no es binario ni un multiclase simple. Es más como datos de ventas mensuales que uno de categorización. Creo que eso es probablemente por qué está causando la advertencia. ¿Qué debo hacer en este caso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber algún problema con los datos o la selección del modelo.

    En primer lugar, es bueno que haya realizado la división de entrenamiento-prueba para evaluar el modelo en los datos que no ha visto antes. Sin embargo, no está claro por qué está utilizando SVM con el kernel lineal para un problema de regresión. SVM se utiliza típicamente para problemas de clasificación, y para problemas de regresión, es mejor utilizar un algoritmo diferente como Regresión Lineal o Regresión de Ridge.

    La razón por la cual la puntuación para SVM es muy baja podría ser porque no es adecuado para este problema, o porque los hiperparámetros como C o gamma necesitan ser ajustados.

    Con respecto a la validación cruzada, la advertencia se debe a que una de las clases tiene sólo una muestra, lo que crea un problema para la validación cruzada. Esta advertencia sugiere que los datos podrían estar desequilibrados, lo que significa que algunas clases tienen muchas más muestras que otras. En estos casos, es mejor utilizar una validación cruzada estratificada, que asegura que la misma proporción de muestras de cada clase se incluya en cada plegamiento.

    En resumen, puede intentar lo siguiente:

    • Utilice Regresión Lineal o Regresión de Ridge en lugar de SVM para problemas de regresión.
    • Ajuste los hiperparámetros del modelo.
    • Utilice una validación cruzada estratificada en lugar de una validación cruzada regular cuando los datos estén desequilibrados.

Comments are closed.