notas del tutorial del sitio web oficial de scikit learn (1)
Cuando miré por primera vez la documentación de aprendizaje de scikit, leí más y más, así que simplemente saqué sus tutoriales y los miré solo la primera parte, principalmente porque quería ver el conocimiento. sistema compilado desde la perspectiva de scikit learn Efectivamente, una vez. Comencemos con supervisado y no supervisado:
En general, un problema de aprendizaje considera un conjunto de n muestras de datos y luego intenta predecir propiedades de datos desconocidos.
Los problemas de aprendizaje se dividen en algunas categorías:
ver más método de carga del conjunto de datos
Un conjunto de datos es un objeto similar a un diccionario que contiene todos los datos y algunos. metadatos sobre los datos. Estos datos se almacenan en el miembro .data, que es una matriz n_samples, n_features. En el caso de un problema supervisado, una o más variables de respuesta se almacenan en el miembro .target. En scikit-learn, un estimador para clasificación es un objeto Python que implementa los métodos fit(X, y) y predict(T), un estimador es cualquier objeto que aprende de los datos
Un ejemplo de estimador es la clase sklearn.svm.SVC, que implementa la clasificación de vectores de soporte.
Classification_report crea un informe de texto que muestra las principales métricas de clasificación.
plot_confusion_matrix se puede utilizar para representar visualmente una matriz de confusión. :
p>
Hay otra forma de escribir la matriz de confusión, es decir, los ejes horizontal y vertical se expresan como positivos y negativo, en lugar de que el anterior sea el indicador y el otro el juicio (correcto, incorrecto). Nada de esto es importante, simplemente compruébelo usted mismo con claridad y no haga suposiciones.
Si:
Interpretación:
El principio general es que cuando lo vemos, ya es el resultado, por lo que solo podemos inferir la situación real a partir de el resultado, como correcto. Los positivos y falsos negativos se suman al positivo de la muestra, etc.
A menos que se especifique lo contrario, la entrada se convertirá en float64:
el ejemplo anterior , el float32 X se convierte en float64 mediante fit_transform(X)
Los hiperparámetros de un estimador se pueden actualizar después de que se haya construido a través de set_params() y luego se llama a fit(), lo aprendido. se sobrescribe.
Cuando se utilizan clasificadores multiclase, la tarea de aprendizaje y predicción que se realiza depende del formato de los datos de destino:
KNN es un método que utiliza el más cercano. n puntos de datos para determinar qué categoría tiene más Es un método para inferir su propia categoría, por lo que esencialmente está etiquetado (todos los puntos de datos circundantes están etiquetados)
Algoritmo vecino más cercano, cuanto mayor es la dimensión, mayor Se necesitan más datos para garantizar que en un punto hay suficientes vecinos cerca. En términos generales, el efecto de KNN disminuirá cuando haya muchas funciones. Por supuesto, hay excepciones. Cuando hice un KNN con 20 funciones, el resultado fue en realidad mejor que el bosque aleatorio (:з」∠). La escena fue muy vergonzosa... Referencia
Si las hay. pocos puntos de datos por dimensión, el ruido en las observaciones induce una alta varianza:
Una solución en el aprendizaje estadístico de alta dimensión es reducir los coeficientes de regresión a cero: es probable que dos conjuntos de observaciones elegidos al azar no estén correlacionados Esto se llama regresión de cresta.
Este es un ejemplo de compensación entre sesgo y varianza:
cuanto mayor sea el parámetro alfa de cresta,
regresión de lazo y regresión de cresta. En realidad, sobre la base de la regresión lineal estándar, se agregan la regularización (regularización) L1 y L2 respectivamente. En comparación con establecer directamente los coeficientes de algunas características en cero, solo hace que su "contribución" sea más pequeña, es decir, multiplicándola por un peso menor (imponiendo una penalización en el tamaño de los coeficientes).
Lasso Más coeficientes para estimar muestras dispersas.
Las siguientes demostraciones y ajustes con expresiones regulares son una divergencia de notas. No son de los tutoriales oficiales, pero también son mis notas de estudio. Solo demuestran el uso de algunas demostraciones y validación cruzada. .
Ridge:
ElasticNet:
En la mayoría de los casos, se debe evitar la regresión lineal pura. Si el número de características es relativamente pequeño, se debe utilizar la regresión Lasso o la red elástica. es más preferido Debido a que reducirán el peso de las características inútiles a 0, las redes elásticas generalmente son mejores que la regresión de Lasso
Volviendo al tutorial, para el ejemplo anterior (sobreajuste causado por muy pocos datos), después. agregando el término de penalización:
Si cambia la fuente de datos, no es necesario reemplazar el estimador. Si necesita cambiar los superparámetros, ya lo hemos mencionado antes:
En comparación con Ridge, Lasso en realidad establecerá algunos coeficientes de características en 0 (método disperso), lo que aplica la navaja de Occam: prefiera modelos más simples
. Se pueden usar diferentes algoritmos para resolver el mismo problema matemático. Por ejemplo, el objeto Lasso en scikit-learn resuelve el problema de regresión de lazo usando un método de descenso de coordenadas, que es eficiente en grandes conjuntos de datos. Sin embargo, scikit-learn también proporciona el objeto LassoLars. el algoritmo LARS, que es muy eficiente para problemas en los que el vector de peso estimado es muy escaso (es decir, problemas con muy pocas observaciones
DEMO: Comparación de KNN y LogisticRegression
Vector de soporte). máquinas (SVM)) es un modelo de dos clasificaciones, y su modelo básico es un clasificador lineal definido con el intervalo más grande en el espacio de características. Además, el algoritmo SVM también incluye una función del núcleo, que puede convertirlo en un clasificador no lineal.
Las máquinas de vectores de soporte pertenecen a la familia de modelos discriminantes:
intentan encontrar una combinación de muestras para construir un plano maximizando el margen entre las dos clases. La regularización la establece C. parámetro:
Se pueden utilizar SVM:
El modelo SVM tiene dos parámetros muy importantes, C y gamma. Entre ellos:
Las clases no siempre son separables linealmente en el espacio de características. La solución es construir una función de decisión que no sea lineal sino que pueda ser polinómica.
Esto se hace usando. truco del kernel que puede considerarse como la creación de energía de decisión al colocar los kernels en las observaciones:
DEMOSTRACIÓN: Trazar diferentes clasificadores SVM en el conjunto de datos del iris
https://scikit-learn.org / stable/modules/cross_validation.html#cross-validation
DEMOSTRACIÓN SIN PROCESAR: validación cruzada de KFold:
Scikit-learn definitivamente proporciona soporte oficial:
[ 0.9348914858096828, 0.9565943238731218, 0.9398998330550918]
ver más generadores de validación cruzada:
La función cross_validate se diferencia de cross_val_score en dos formas:
https://scikit-learn.org/stable/modules/grid_search.html#grid-search
Realice un recorrido combinado en diferentes parámetros para maximizar la puntuación de validación cruzada
Al mismo tiempo, cada estimador también tiene su propia versión CV (que hace eco de las notas de la clase anterior)
Seleccione aleatoriamente k centroides para calcular las distancias de todos los puntos y luego tome cada uno El valor medio en el grupo se utiliza como centro de masa, y así sucesivamente. Los resultados son muy aleatorios (como se mencionó anteriormente, k-means y knn se confundieron)
https://scikit-learn.org/stable/tutorial/statistical_inference/unsupervised_learning.html
p>