Conocimientos básicos de aprendizaje automático (completos)

Tabla de contenido

1. Descripción general del aprendizaje automático

1.1 Descripción general de la inteligencia artificial

1.1.1 escenarios de uso de IA

1.1.2 Pequeño caso de inteligencia artificial

1.2 La historia del desarrollo de la inteligencia artificial.

1.2.1 Prueba de Turing

1.2.2 Historia del desarrollo

1.2.3 Resumen

1.3 Principales ramas de la inteligencia artificial

1.3.1 Inteligencia artificial, aprendizaje automático y aprendizaje profundo

1.3.2 Introducción de ramas principales

1.3.3 Tres elementos esenciales para el desarrollo de la inteligencia artificial

1.3.4 Expansión: Comparación de GPU y CPU

1.4 Flujo de trabajo de aprendizaje automático

1.4.1 ¿Qué es el aprendizaje automático?

1.4.2 Flujo de trabajo de aprendizaje automático

1.4.3 Introducción a los conjuntos de datos obtenidos

1.4.4 Procesamiento de datos básicos

1.4.5 Ingeniería de características

1.4.6 Conceptos de aprendizaje automático y evaluación de modelos

1.5 Clasificación de algoritmos de aprendizaje automático

1.5.1 Aprendizaje supervisado

1.5.2 Aprendizaje no supervisado

1.5.3 Aprendizaje semisupervisado

1.5.4 Aprendizaje por refuerzo

1.5.5 Resumen

1.6 Evaluación del modelo

1.6.1 Evaluación del modelo de clasificación

1.6.2 Evaluación del modelo de regresión

1.6.3 Montaje

1.7 Introducción a la plataforma Azure

1.8 Introducción al aprendizaje profundo 【Comprender】

1.8.1 Aprendizaje profundo: Introducción a las redes neuronales

1.8.2 De qué es responsable cada capa de aprendizaje profundo

2. Instalación y uso del entorno básico de aprendizaje automático

2.1 Instalación de la biblioteca 

2.2 Uso del cuaderno Jupyter

2.2.1 Introducción al cuaderno Jupyter

2.2.2 Por qué utilizar Jupyter Notebook

2.2.3 Introducción a la operación simple

2.2.4 función de rebajas

3. Matplotlib en detalle

3.1 Hola Mundo de Matplotlib

3.1.1 ¿Qué es Matplotlib?

3.1.2 ¿Por qué aprender Matplotlib?

3.1.3 Realizar un dibujo simple de Matplotlib

3.1.4 Conocer la estructura de la imagen Matplotlib (ampliar, comprender)

3.1.5 Estructura de tres capas de Matplotlib (ampliar, comprender)

3.2 Gráfico de líneas (trazado) y funciones básicas de dibujo

3.2.1 Dibujo de gráfico de líneas y guardado de imágenes

3.2.2 Mejorar el gráfico de líneas original 1 (capa de visualización auxiliar)

3.2.3 Agregar visualización de cuadrícula

3.2.4 Agregar información de descripción

3.2.5 Múltiples parcelas

3.2.6 Establecer estilo gráfico

3.2.7 Visualización de sistemas de coordenadas múltiples: plt.subplots (método de dibujo orientado a objetos)

3.2.8 Escenarios de aplicación de gráficos de líneas

3.3 Dibujo gráfico común

3.3.1 Tipos y significados de gráficos comunes

3.3.2 Dibujo de diagrama de dispersión

3.3.3 Dibujo de histograma

4.numpy

4.1 Ventajas de numpy

4.1.1 Introducción a números

4.1.2 Introducción a ndarray 

4.1.3 Comparación de la eficiencia operativa entre ndarray y la lista nativa de Python

4.1.4 Ventajas de la narración

4.2 Matriz-ndarray N-dimensional

4.2.1 Propiedades de ndarray

4.2.2 La forma de ndarray

4.2.3 Tipos de ndarrays

4.3 Operación Básica

4.3.1 Método de generación de matrices

4.3.2 Indexación y corte de matrices

4.3.3 Modificación de forma

4.3.4 Modificación de tipo

4.3.5 Deduplicación de matrices

4.4 operaciones de ndarray

4.4.1 Operaciones lógicas

4.4.2 Función de juicio general

4.4.3 np.where (operador ternario)

4.4.4 Cálculo estadístico

4.5 Matemáticas: Matrices

4.5.1 Matrices y vectores

4.5.2 Suma y multiplicación escalar

4.5.3 Multiplicación matriz-vector

4.5.4 Multiplicación de matrices

4.5.5 Propiedades de la multiplicación de matrices

4.5.6 Invertir y transponer

4.6 Operaciones entre matrices

4.6.1 Operaciones con matrices y números

4.6.2 Operaciones de matriz a matriz: mecanismo de transmisión

4.6.3 API de multiplicación de matrices

5.pandas

5.1 Introducción a los pandas

5.1.1 Introducción a los pandas

5.1.2 ¿Por qué utilizar Pandas?

5.1.3 Caso

5.1.4 Marco de datos

5.2 Operación de datos básicos

5.2.1 Operaciones de índice

5.2.2 Operación de asignación

5.2.3 Clasificación

5.3 Operación de marco de datos

5.3.1 Operaciones aritméticas

5.3.2 Operaciones lógicas

5.3.3 Cálculo estadístico

5.3.4 Función de estadística acumulativa

5.3.5 Funciones personalizadas

5.4 Dibujo de pandas

5.5 Lectura y almacenamiento de archivos

5.5.1 CSV

5.5.2 HDF5

5.5.3 JSON

5.5.4 Expansión

5.6 Procesamiento avanzado: procesamiento de valores faltantes

5.6.1 Cómo lidiar con nan

5.6.2 Valor no faltante nan, con marca predeterminada

5.7 Procesamiento avanzado: discretización de datos

5.7.1 Por qué la discretización

5.7.2 ¿Qué es la discretización de datos?

5.7.3 Operación de paquetes de datos

5.7.4 Empaquetar datos en codificación one-hot

5.8 Procesamiento avanzado: fusión de datos

5.8.1 pd.concat realiza la fusión de datos

5.8.2 pd.merge realiza la fusión de datos

5.9 Procesamiento avanzado: tabla cruzada y tabla dinámica

5.9.1 ¿Cuáles son las funciones de la tabla cruzada y la tabla dinámica?

5.9.2 Utilice tabla cruzada (tabla cruzada) para realizar la figura anterior

5.9.3 Caso: exploración de la relación entre acciones y días de la semana

5.9.4 Implementación usando pivot_table (tabla dinámica)

5.10 Procesamiento avanzado: agrupación y agregación

5.10.1 Qué son la agrupación y la agregación

5.10.2 API de grupo

5.10.3 Datos de la tienda minorista Starbucks


1. Descripción general del aprendizaje automático

 

1.1 Descripción general de la inteligencia artificial

1.1.1 escenarios de uso de IA

1.1.2 Pequeño caso de inteligencia artificial

https://quickdraw.withgoogle.com

https://pjreddie.com/darknet/yolo/

https://deepdreamgenerator.com/

1.2 La historia del desarrollo de la inteligencia artificial.

                 

1.2.1 Prueba de Turing

1.2.2 Historia del desarrollo

1.2.3 Resumen

1.3 Principales ramas de la inteligencia artificial

1.3.1 Inteligencia artificial, aprendizaje automático y aprendizaje profundo

1.3.2 Introducción de ramas principales

                 


1.3.3 Tres elementos esenciales para el desarrollo de la inteligencia artificial

1.3.4 Expansión: Comparación de GPU y CPU

La CPU es buena para el procesamiento de IO, la GPU es buena para el cálculo.

1.4 Flujo de trabajo de aprendizaje automático

1.4.1 ¿Qué es el aprendizaje automático?

1.4.2 Flujo de trabajo de aprendizaje automático

1.4.3 Introducción a los conjuntos de datos obtenidos

        ​​​​​​ 

1.4.4 Procesamiento de datos básicos

Es decir, el logaritmo se procesa con valores faltantes, eliminando valores atípicos, etc.

1.4.5 Ingeniería de características

(1) ¿Qué es la ingeniería de características?

(2) ¿Por qué necesitamos ingeniería de funciones?

(3) La ingeniería de funciones incluye contenido.

  • extracción de características
  • preprocesamiento de características
  • reducción de dimensionalidad de características

 Extracción de características:

Preprocesamiento de funciones:

Reducción de dimensionalidad de características:

1.4.6 Conceptos de aprendizaje automático y evaluación de modelos

Aprendizaje automático: elija el algoritmo adecuado para entrenar el modelo.

Evaluación del modelo: evalúa el modelo entrenado.

1.5 Clasificación de algoritmos de aprendizaje automático

1.5.1 Aprendizaje supervisado

Definición:  los datos de entrada se componen de valores de características de entrada y valores objetivo.
        - la salida de la función puede ser cada valor sucesivo (llamado regresión );

        - o la salida es un número finito de valores discretos (llamado clasificación ).

(1) Problema de regresión 

Por ejemplo: predecir los precios de la vivienda y ajustar una curva continua basada en el conjunto de muestras.

(2) Problema de clasificación

Por ejemplo: al juzgar benigno o maligno según las características del tumor, el resultado es "benigno" o "maligno", que es discreto.

1.5.2 Aprendizaje no supervisado

Definición: Los datos de entrada se componen de valores de características de entrada.
        Los datos de entrada no están etiquetados y no hay resultados definitivos. Se desconoce la categoría de los datos de la muestra y es necesario clasificar el conjunto de muestras de acuerdo con la similitud entre las muestras ( agrupación ), tratando de minimizar la brecha dentro de la clase y maximizar la brecha entre clases.

Ejemplo:

1.5.3 Aprendizaje semisupervisado

Definición: el conjunto de entrenamiento contiene datos de muestra etiquetados y datos de muestra no etiquetados.
Ejemplo:

1.5.4 Aprendizaje por refuerzo

Aprendizaje por refuerzo: la esencia es el problema de tomar decisiones, es decir, tomar decisiones automáticamente y poder tomar decisiones continuas.

El objetivo del aprendizaje por refuerzo es obtener la mayor cantidad de recompensas acumulativas.
Ejemplo:

Aprendizaje supervisado versus aprendizaje por refuerzo:

1.5.5 Resumen

1.6 Evaluación del modelo

        La evaluación del modelo es una parte integral del proceso de desarrollo del modelo. Ayuda a descubrir el mejor modelo para representar los datos y qué tan bien funcionará el modelo seleccionado en el futuro. Según los diferentes valores objetivo del conjunto de datos, la evaluación del modelo se puede dividir en evaluación del modelo de clasificación y evaluación del modelo de regresión. 

1.6.1 Evaluación del modelo de clasificación

  • Precisión: la relación entre el número de predicciones correctas y el número total de muestras.
  • Precisión: La proporción de predicciones correctas que son positivas respecto de todas las predicciones que son positivas .
  • Recuerde: la proporción de todas las muestras positivas que se predicen correctamente como positivas .
  • Puntuación F1: se utiliza principalmente para evaluar la solidez del modelo.
  • Indicador AUC: se utiliza principalmente para evaluar la situación de desequilibrio de la muestra.

1.6.2 Evaluación del modelo de regresión

1.6.3 Montaje

La evaluación del modelo se utiliza para evaluar el desempeño del modelo entrenado, y su desempeño se puede dividir aproximadamente en dos categorías: sobreajuste y desajuste.

Durante el proceso de capacitación, puede encontrar los siguientes problemas:
        los datos de capacitación están bien entrenados y el error no es grande. ¿Por qué hay problemas en el conjunto de prueba? Cuando esto le sucede a un algoritmo en un conjunto de datos, puede haber un problema de ajuste.

(1) Desacondicionamiento 

(2) Sobreajuste

Sobreajuste (sobreajuste): el modelo de aprendizaje automático integrado o el modelo de aprendizaje profundo funciona demasiado bien en las muestras de entrenamiento, lo que resulta en un rendimiento deficiente en el conjunto de datos de verificación y el conjunto de datos de prueba.

1.7 Introducción a la plataforma Azure

Azure Machine Learning ("AML") es un servicio de aprendizaje automático basado en web lanzado por Microsoft en su nube pública Azure. El aprendizaje automático es una rama de la inteligencia artificial. Identificar. Este enfoque permite utilizar datos históricos para predecir eventos y comportamientos futuros. de una manera que es significativamente superior a las formas tradicionales de inteligencia de salida.


El objetivo de Microsoft: simplificar el proceso de uso del aprendizaje automático para una aplicación fácil y generalizada por parte de desarrolladores, analistas de negocios y científicos de datos.


El servicio tiene como objetivo "combinar el poder del aprendizaje automático con la simplicidad de la computación en la nube".


Actualmente, AML brinda servicios en la plataforma de servicios en la nube Global Azure de Microsoft y los usuarios pueden solicitar una prueba gratuita a través del sitio: https://studio.azureml.net/.

URL de la base de datos de aprendizaje automático de la UCI: http://archive.ics.uci.edu/ml/
 

1.8 Introducción al aprendizaje profundo 【Comprender】

1.8.1 Aprendizaje profundo: Introducción a las redes neuronales

Enlace de demostración de aprendizaje profundo: http://playground.tensorflow.org

1.8.2 De qué es responsable cada capa de aprendizaje profundo

Aumente el número de capas: identifique objetos, capas de órganos, capas moleculares y capas atómicas a través de conceptos más abstractos.

Aumentar el número de nodos: aumentar los tipos de sustancias en una misma capa.

2. Instalación y uso del entorno básico de aprendizaje automático

2.1 Instalación de la biblioteca 

Bibliotecas como Matplotlib, Numpy y Pandas se utilizarán en la etapa básica del aprendizaje automático.
Nota:
        Durante el proceso de instalación de cada paquete, intente especificar una versión estable para la instalación.

2.2 Uso del cuaderno Jupyter

2.2.1 Introducción al cuaderno Jupyter

El proyecto Jupyter tiene como objetivo desarrollar software de código abierto, estándares abiertos y servicios para informática interactiva en docenas de lenguajes de programación. 

2.2.2 Por qué utilizar Jupyter Notebook

Resumen: Jupyter Notebook tiene más ventajas que Pycharm en dibujo y visualización de datos.

2.2.3 Introducción a la operación simple

Ingrese jupyter notebook en cmd para abrirlo.


2.2.4 función de rebajas

esc+m 

3. Matplotlib en detalle

3.1 Hola Mundo de Matplotlib

3.1.1 ¿Qué es Matplotlib?

  • se dedica al desarrollo de gráficos 2D (incluidos gráficos 3D)
  • Es súper fácil de usar
  • Enfoque incremental e interactivo para la visualización de datos.

3.1.2 ¿Por qué aprender Matplotlib?

        La visualización es una herramienta auxiliar clave en toda la minería de datos, que puede comprender claramente los datos para ajustar nuestro método de análisis.

  • Los datos se pueden visualizar y presentar de forma más intuitiva
  • Hacer que los datos sean más objetivos y convincentes

Por ejemplo, las dos imágenes siguientes son visualización digital y visualización gráfica:

3.1.3 Realizar un dibujo simple de Matplotlib

import matplotlib.pyplot as plt


# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)

#2.绘制图像
x=[1,2,3]
y=[4,5,6]
plt.plot(x,y)

#3.显示图像
plt.show()

resultado de la operación:

3.1.4 Conocer la estructura de la imagen Matplotlib (ampliar, comprender)

3.1.5 Estructura de tres capas de Matplotlib (ampliar, comprender)

(1) Capa de contenedor

La capa contenedora se compone principalmente de Lienzo, Figura y Ejes.


El lienzo es la capa más baja del sistema, que actúa como un tablero de dibujo durante el proceso de dibujo, es decir, una herramienta para colocar el lienzo (Figura).
La figura es la primera capa sobre el lienzo y también la primera capa de la capa de aplicación que debe ser operada por el usuario y actúa como un lienzo durante el proceso de dibujo.
Axes es la segunda capa de la capa de aplicación, que equivale a la función del área de dibujo en el lienzo durante el proceso de dibujo.

  • Figura: se refiere al gráfico completo (puede configurar el tamaño y la resolución del lienzo a través de plt.figure(), etc.)
  • Ejes (sistema de coordenadas): el área de dibujo de los datos
  • Eje (eje de coordenadas): un eje en el sistema de coordenadas, incluidos límites de tamaño, escalas y etiquetas de escala.

Las características son:

  • Una figura (imagen) puede contener múltiples ejes (sistema de coordenadas/área de dibujo), pero un eje solo puede pertenecer a una figura.
  • Un eje (sistema de coordenadas/área de dibujo) puede contener múltiples ejes (ejes de coordenadas), dos de los cuales son el sistema de coordenadas 2D y tres son el sistema de coordenadas 3D.

(2) Capa de visualización auxiliar

La capa de visualización auxiliar es el contenido de los Ejes (área de dibujo), excepto la imagen dibujada de acuerdo con los datos, que incluye principalmente la apariencia de los Ejes (color de la cara), la línea de borde (lomos), el eje de coordenadas (eje), el nombre del eje de coordenadas (etiqueta del eje). , Escala del eje (marca de verificación), etiqueta de escala del eje (etiqueta de marca), línea de cuadrícula (cuadrícula), leyenda (leyenda), título (título), etc.


La configuración de esta capa puede hacer que la visualización de la imagen sea más intuitiva y más fácil de entender para los usuarios, pero no tendrá un impacto sustancial en la imagen.

(3) Capa de imagen 

La capa de imagen se refiere a la imagen dibujada de acuerdo con los datos mediante trazado, dispersión, barra, histograma, circular y otras funciones en Axes.

Resumir:

  • El lienzo (tablero de dibujo) se encuentra en la parte inferior, generalmente fuera del alcance de los usuarios.
  • La figura (lienzo) está construida sobre el lienzo.
  • Los ejes (área de dibujo) se construyen encima de la figura.
  • Las capas de visualización auxiliares, como ejes, leyendas y capas de imágenes, se construyen sobre ejes.

3.2 Gráfico de líneas (trazado) y funciones básicas de dibujo

3.2.1 Dibujo de gráfico de líneas y guardado de imágenes

Para comprender mejor todas las funciones básicas de trazado, integramos todo el uso básico de API al trazar los cambios de temperatura del clima.

(1) módulo matplotlib.pyplot

matplotlib.pytplot contiene una serie de funciones de dibujo similares a matlab. Sus funciones actúan sobre el sistema de coordenadas actual de la figura actual.
importar matplotlib.pyplot como plt

(2) Dibujo y visualización del gráfico de líneas

Muestra el clima en Shanghai durante una semana, por ejemplo, el clima y la temperatura de lunes a domingo son los siguientes:

import matplotlib.pyplot as plt
#1.创建画布
plt.figure(figsize=(10,10))
#2.绘制折线图(图像层)
plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
#3.显示图像
plt.show()

resultado de la operación:

(3) Establecer propiedades del lienzo y guardar imágenes

plt.figure(tamaño de figura=(),dpi=)

        figsize: Especifica la longitud de la figura

        dpi: la nitidez de la imagen

plt.savefig(ruta)

Nota: plt.show() liberará el recurso de la figura; si guarda la imagen después de mostrarla, solo podrá guardar una imagen vacía. Por lo tanto, la imagen guardada debe colocarse antes del espectáculo.

3.2.2 Mejorar el gráfico de líneas original 1 (capa de visualización auxiliar)

Caso: muestra el estado de cambio de temperatura.
Requisito: Dibuje un gráfico lineal de los cambios de temperatura por minuto en una ciudad de 11:00 a 12:00 en una hora, con un rango de temperatura de 15 grados a 18 grados.

#画出温度变化图
import random
import matplotlib.pyplot as plt

#0.准备x、y坐标的数据
x=range(60)
y_shanghai=[random.uniform(10,15) for i in x]

#1.创建画布
plt.figure(figsize=(20,8),dpi=200)

#2.绘制折线图
plt.plot(x,y_shanghai)
#2.1 添加x、y轴刻度
y_ticks=range(40)
plt.yticks(y_ticks[::5])
x_ticks_label=['11点{}分'.format(i) for i in x]
plt.xticks(x[::5],x_ticks_label[::5])
#plt.xticks(x_ticks_label[::5])#报错   ==>  必须最开始传递进去的是数字


#3.显示图像
plt.show()

resultado de la operación:

Solución al problema de visualización en chino: 

 Ruta de descarga de fuentes SimHei: https://us-logger1.oss-cn-beijing.aliyuncs.com/SimHei.ttf

3.2.3 Agregar visualización de cuadrícula

Para observar más claramente el valor correspondiente del gráfico: plt.grid(True, linestyle='--', alpha= 0.5)

        Parámetros:
                estilo de línea: la forma de dibujar la cuadrícula

                alfa - transparencia

3.2.4 Agregar información de descripción

Agregue información de descripción del eje x, eje y y título.

plt.xlabel('tiempo',tamaño de fuente=20)
plt.ylabel('temperatura',tamaño de fuente=20)
plt.title('xxxxx',tamaño de fuente=20)

3.2.5 Múltiples parcelas

Requisito: Agregar un cambio de temperatura para una ciudad.
        Se recopilaron los cambios de temperatura en Beijing ese día, y la temperatura osciló entre 1 y 3 grados. Cómo agregar otro gráfico diferente en el mismo sistema de coordenadas es realmente muy simple, solo traza nuevamente, pero debes distinguir las líneas, de la siguiente manera:

y_beijing=[random.uniform(1,3) for i in x]
plt.plot(x,y_beijing,color='b',linestyle='-.',label='北京')
#显示图例
plt.legend(loc='best')

3.2.6 Establecer estilo gráfico

Mostrar leyenda: plt.legend(loc='best')

Nota: Si solo configurar la etiqueta en plt.plot() finalmente no puede mostrar la leyenda, también debe mostrar la leyenda a través de plt.legend().

3.2.7 Visualización de sistemas de coordenadas múltiples: plt.subplots (método de dibujo orientado a objetos)

matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw) crea una figura con múltiples ejes (sistemas de coordenadas/áreas de trazado).

Nota: plt.functionname() es equivalente al método de dibujo orientado a procesos, y axes.set_methodname() es equivalente al método de dibujo orientado a objetos.

#画出温度变化图
import random
import matplotlib.pyplot as plt

#0.准备x、y坐标的数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_beijing=[random.uniform(1,14) for i in x]

#1.创建画布
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)

#2.绘制折线图
axes[0].plot(x,y_shanghai,color='r',linestyle='--',label='上海')
axes[1].plot(x,y_beijing,color='g',linestyle='-.',label='北京')

#2.1 添加x、y轴刻度
x_ticks_label=['11点{}分'.format(i) for i in x]
y_ticks=range(40)
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])

#2.2 添加网格
axes[0].grid(True,linestyle='--',alpha=1)
axes[1].grid(True,linestyle='--',alpha=1)


#2.3 添加描述
axes[0].set_xlabel('时间',fontsize=25)
axes[0].set_ylabel('温度',fontsize=25)
axes[0].set_title('上海',fontsize=25)
axes[1].set_xlabel('时间',fontsize=25)
axes[1].set_ylabel('温度',fontsize=25)
axes[1].set_title('北京',fontsize=25)


#2.4显示图例
axes[0].legend(loc='best')
axes[1].legend(loc='best')

#3.显示图像
plt.show()

resultado de ejecución:

3.2.8 Escenarios de aplicación de gráficos de líneas

  • Mostrar el número de usuarios activos diarios de los productos de la empresa (diferentes regiones)
  • Muestra el número de descargas de aplicaciones por día.
  • Muestra los cambios en la cantidad de clics de los usuarios a lo largo del tiempo después del lanzamiento de las nuevas funciones del producto.
  • Expansión: dibuja varias imágenes de funciones matemáticas.

Nota: Además de dibujar gráficos de líneas, plt.plot() también se puede utilizar para dibujar varias imágenes de funciones matemáticas.

import random
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['axes.unicode_minus']=False #解决负号显示问题

#0.准备数据
x=np.linspace(-10,10,1000)#[-10,10]1000个数据
y=np.sin(x)

#1.创建画布
plt.figure(figsize=(20,8),dpi=100)

#2.绘制函数图像
plt.plot(x,y)
#2.1显示网格
plt.grid()

#3.显示图像
plt.show()

resultado de la operación:

3.3 Dibujo gráfico común

https://matplotlib.org/index.html

3.3.1 Tipos y significados de gráficos comunes

Matplotlib puede dibujar gráficos de líneas , diagramas de dispersión, histogramas, histogramas y gráficos circulares.
Necesitamos conocer el significado de diferentes gráficos estadísticos para decidir qué gráfico estadístico elegir para presentar nuestros datos.

(1) Gráfico de líneas 

Gráfico de líneas: un gráfico estadístico que expresa el aumento o disminución de la cantidad estadística con el aumento o caída de la línea discontinua.
Características: Puede mostrar la tendencia cambiante de los datos y reflejar la situación cambiante de las cosas. (cambiar)
api: plt.plot(x, y)

(2) Diagrama de dispersión

Diagrama de dispersión: utilice dos conjuntos de datos para formar múltiples puntos de coordenadas, examine la distribución de los puntos de coordenadas, juzgue si existe una determinada relación entre dos variables o resuma el patrón de distribución de los puntos de coordenadas.
Características: juzgar si existe una tendencia de correlación cuantitativa entre variables y mostrar valores atípicos (reglas de distribución).

api: plt.scatter(x, y)

(3) Histograma

Gráfico de columnas: los datos organizados en columnas o filas de una hoja de trabajo se pueden trazar en un gráfico de columnas.
Características: dibuje incluso datos discretos, puede ver el tamaño de cada dato de un vistazo y comparar las diferencias entre los datos. (Estadísticas/Comparación)
api: plt.bar(x, ancho, align='center', **kwargs)

(4) Histograma

Histograma: situación en la que la distribución de datos está representada por una serie de franjas verticales o segmentos de línea de altura desigual. Generalmente, el eje horizontal representa el rango de datos y el eje vertical representa la distribución.
Características: Dibuje datos continuos para mostrar la distribución de uno o más conjuntos de datos (estadísticas)
API: matplotlib.pyplot.hist(x, bins=None)

(5) gráfico circular

Gráfico circular: se utiliza para representar la proporción de diferentes categorías y comparar varias categorías según el tamaño del arco.

Características: Proporción de datos clasificados (proporción)
api: plt.pie(x, etiquetas=,autopct=,colors)

3.3.2 Dibujo de diagrama de dispersión

Demanda: Explore la relación entre el área de la vivienda y el precio de la vivienda.

import matplotlib.pyplot as plt

#房屋面积数据
x=[225.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,207.83,342.75,147.9,53.06,224.72,29.51,21.61,483.21,245.25,399.25,343.35]
#房屋价格数据
y=[196.63,203.88,210.75,372.74,202.41,247.61,24.9,239.34,140.32,104.15,176.84,288.23,128.79,49.64,191.74,33.1,30.74,400.02,205.35,330.64,283.45]

plt.figure(figsize=(20,8),dpi=100)
plt.scatter(x,y)
plt.show()

resultado:

3.3.3 Dibujo de histograma

movie_name=['雷神3∶诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
x=range(len(movie_name))
y=[73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
plt.figure(figsize=(20,8),dpi=100)
plt.bar(x,y,width=0.5,color=['b','r','g','y','c','m','y','k','c','g','b'])
plt.xticks(x,movie_name,fontsize=15)
plt.grid()
plt.title('某月电影票房统计',fontsize=20)
plt.show()

resultado:

4.numpy

4.1 Ventajas de numpy

  

4.1.1 Introducción a números

  • Numpy (Numerical Python) es una biblioteca informática científica de Python de código abierto para el procesamiento rápido de matrices de cualquier dimensión.
  • Numpy admite operaciones matriciales y de matrices comunes. Para la misma tarea de computación numérica, usar Numpy es mucho más conciso que usar Python directamente.
  • Numpy maneja matrices multidimensionales utilizando el objeto ndarray , que es un contenedor rápido y flexible para datos de gran tamaño.

4.1.2 Introducción a ndarray 

NumPy proporciona un tipo de matriz N-dimensional ndarray que describe colecciones de "elementos" del mismo tipo .

4.1.3 Comparación de la eficiencia operativa entre ndarray y la lista nativa de Python

Las matrices unidimensionales se pueden almacenar usando listas de Python y las matrices multidimensionales se pueden realizar mediante listas anidadas, entonces, ¿por qué necesita usar el ndarray de Numpy? 

Aquí experimentamos los beneficios de ndarray ejecutando un fragmento de código:

import random,time
import numpy as np
a=[]
for i in range(10000):
    a.append(random.random())
%time sum1=sum(a)

b=np.array(a)
%time sum2=np.sum(b)

        A partir de esto, podemos ver que la velocidad de cálculo de ndarray es mucho más rápida, lo que ahorra tiempo.
        La característica más importante del aprendizaje automático es una gran cantidad de cálculo de datos, por lo que si no hay una solución rápida, es posible que Python no pueda lograr buenos resultados en el campo del aprendizaje automático.

4.1.4 Ventajas de la narración

(1) Estilo de bloque de memoria

¿Cuál es la diferencia entre ndarray y la lista nativa de Python? Vea una imagen:

        En la figura, podemos ver que cuando ndarray almacena datos, las direcciones de los datos y los datos son continuas, lo que hace que sea más rápido operar elementos de la matriz en lotes.
        Esto se debe a que los tipos de todos los elementos en ndarray son los mismos, mientras que los tipos de elementos en las listas de Python son arbitrarios, por lo que ndarray puede almacenar elementos continuamente en la memoria, mientras que las listas nativas de Python solo pueden encontrar el siguiente direccionando el ndarray de Numpy es inferior a La lista nativa de Python en términos de rendimiento general, pero en informática científica, ndarray de Numpy puede guardar muchas declaraciones de bucle y el uso del código es mucho más simple que la lista nativa de Python. 

(2) ndarray admite operaciones paralelizadas (operaciones vectorizadas)

(3) La eficiencia es mucho mayor que la del código Python puro

La capa inferior de Numpy está escrita en lenguaje C y el GIL (Global Interpreter Lock) está desbloqueado internamente. Su velocidad de operación en matrices no está limitada por el intérprete de Python, por lo que su eficiencia es mucho mayor que la del código Python puro.

4.2 Matriz-ndarray N-dimensional

4.2.1 Propiedades de ndarray

Las propiedades de la matriz reflejan información inherente a la propia matriz.

4.2.2 La forma de ndarray

4.2.3 Tipos de ndarrays

dtype es el tipo numpy.dtype, primero observe qué tipos están disponibles para las matrices:

Nota: Si no se especifica, el número entero por defecto es int64 y el decimal por defecto es float64.

4.3 Operación Básica

4.3.1 Método de generación de matrices

(1) Generar una matriz de 0 y 1 

(2) Generado a partir de una matriz existente

Método de generación: una matriz es una copia profunda y no se afecta entre sí; una matriz es una copia superficial y apunta a la misma área espacial.

(3) Generar una matriz de rango fijo

  • Genere secuencias igualmente espaciadas: np.linspace (inicio, parada, número, punto final)

  • Otros son:

        numpy.arange (inicio, parada, paso, tipo d)

        numpy.logspace(inicio,parada,num)

(4) Generar una matriz aleatoria 

Usando el módulo: np.random

Distribuidos equitativamente:

  • np.random.rand(d0, d1, ..., dn) devuelve un conjunto de números distribuidos uniformemente en [0.0, 1.0).

  • np.random.uniform(bajo=0.0, alto=1.0, tamaño=Ninguno)
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['axes.unicode_minus']=False #解决负号显示问题

x1=np.random.uniform(-1,1,10000000)
plt.figure(figsize=(10,3),dpi=100)
plt.hist(x=x1,bins=1000)
plt.show()

resultado de la operación:

  • np.random.randint(low, high=Ninguno, size=Ninguno, dtype='I')
    Muestra aleatoriamente de una distribución uniforme para generar un número entero o una matriz de enteros N-dimensional, el rango de números: si alto no es Ninguno, Tome un número entero aleatorio entre [bajo, alto); de lo contrario, tome un número entero aleatorio entre [0, bajo).

Distribución normal:

  •  np.aleatorio.randn(d0, d1, ...,dn)

        Función: Devuelve uno o más valores de muestra de la distribución normal estándar.

  • np.random.normal(loc=0.0, escala=1.0, tamaño=Ninguno)
x2=np.random.normal(1.75,1,100000000)
plt.figure(figsize=(20,8),dpi=100)
plt.hist(x2,1000)
plt.show()

  • np.random.standard_normal(size=None)
    devuelve una matriz de la distribución normal estándar de la forma especificada.

Caso: genere aleatoriamente datos de ganancias del día de negociación de 2 semanas para 8 acciones. 

stock_change = np.random.normal(0, 1,(8,10))

4.3.2 Indexación y corte de matrices

¿Cómo indexar matrices unidimensionales, bidimensionales y tridimensionales?

4.3.3 Modificación de forma

  • ndarray.reshape(forma[, orden])
    Devuelve un nuevo resultado, sin modificar el resultado original.

  • ndarray.resize(new_shape[, refcheck])
    modifica la matriz original.
  • Transposición de la matriz ndarray.T
    Intercambia las filas y columnas de la matriz.

4.3.4 Modificación de tipo

  • ndarray.astype(tipo)
  • ndarray.tostring([orden]) y ndarray.tobytes([orden])

4.3.5 Deduplicación de matrices

  • ndarray.unique

4.4 operaciones de ndarray

4.4.1 Operaciones lógicas

4.4.2 Función de juicio general

  • np.arr()
  • np.cualquier()

4.4.3 np.where (operador ternario)

Se pueden realizar cálculos más complejos utilizando np.where.

  • np.donde()
  • La lógica compuesta debe usarse en combinación con np.logic_and y np.logic_or

4.4.4 Cálculo estadístico

En el campo de la minería de datos/aprendizaje automático, el valor de los indicadores estadísticos también es una forma de analizar problemas.

Los indicadores comúnmente utilizados son los siguientes:

  • min(a[, eje, fuera, keepdims])
  • max(a[, eje, fuera, keepdims])
  • mediana (a [, eje, fuera, sobrescribir_entrada, mantenerdims]) número mediano
  • media (a, eje, tipo d, fuera, keepdims]) media
  • std (a[, eje, dtype, out, ddof, keepdims]) desviación estándar
  • var(a[, eje, dtype, out, ddof, keepdims]) varianza
  • np.argmax(a,axis=) subíndice máximo
  • np.argmin(a,axis=) subíndice mínimo

Al realizar estadísticas, el valor del eje del eje no es seguro y los valores de diferentes ejes API en Numpy son diferentes. Aquí, el eje = 0 representa una columna y el eje = 1 representa una fila para las estadísticas.

4.5 Matemáticas: Matrices

4.5.1 Matrices y vectores

(1) Matriz

(2) vectores

4.5.2 Suma y multiplicación escalar

4.5.3 Multiplicación matriz-vector

4.5.4 Multiplicación de matrices

4.5.5 Propiedades de la multiplicación de matrices

4.5.6 Invertir y transponer

4.6 Operaciones entre matrices

4.6.1 Operaciones con matrices y números

4.6.2 Operaciones de matriz a matriz: mecanismo de transmisión

        La premisa de ejecutar la transmisión es que los dos ndarrays realizan operaciones de elementos. La función del mecanismo de transmisión es facilitar las operaciones matemáticas en ndarrays de diferentes formas (la estructura de datos central de la biblioteca numpy).
        Al operar dos matrices, numpy comparará sus formas (tuplas) una por una. Solo en los siguientes casos dos matrices podrán realizar operaciones de matriz a matriz.

  • Las dimensiones son iguales.
  • forma (uno de los lugares correspondientes es 1)

 

4.6.3 API de multiplicación de matrices

  • multiplicación de matrices np.matmul
  • np.punto producto escalar
  • Nota: No hay diferencia entre los dos al realizar la multiplicación de matrices; sin embargo, el punto admite la multiplicación de matrices y digital.

5.pandas

5.1 Introducción a los pandas

5.1.1 Introducción a los pandas

  • Biblioteca desarrollada por WesMcKinney en 2008
  • Una biblioteca de Python de código abierto dedicada a la minería de datos.
  • Basado en Numpy, aproveche el alto rendimiento del módulo Numpy en informática
  • Basado en matplotlib, es fácil hacer dibujos.
  • Estructura de datos única

5.1.2 ¿Por qué utilizar Pandas?

Numpy ha podido ayudarnos a procesar datos y puede combinarse con matplotlib para resolver algunos problemas, como la visualización de datos, entonces, ¿cuál es el propósito del aprendizaje de pandas?

  • Conveniente capacidad de procesamiento de datos
  • Archivos fáciles de leer
  • Encapsula el dibujo y cálculo de Matplotlib y Numpy.

5.1.3 Caso

5.1.4 Marco de datos

(1) Estructura del marco de datos

Los objetos DataFrame tienen índices de fila y columna.

  • Índice de fila, que indica diferentes filas, índice horizontal, llamado índice, eje 0, eje = 0
  • Índice de columna, columna con diferentes nombres de tabla, índice vertical, llamadas columnas, 1 eje, eje = 1

(2) Propiedad de marco de datos

  • forma.objeto
  • object.index      Lista de índices de filas del DataFrame
  • object.columns    Lista de índices de columnas del DataFrame
  • Object.values       ​​​​obtiene directamente el valor de la matriz
  • objeto.T               transponer
  • Object.head(5)    muestra el contenido de las primeras 5 líneas
    . Si no se agregan parámetros, el valor predeterminado es 5 líneas. Complete el parámetro N para mostrar las primeras N líneas
  • Object.tail(5)       muestra el contenido de las últimas 5 líneas
    . Si no se agregan parámetros, el valor predeterminado es 5 líneas. Complete el parámetro N para mostrar las siguientes N líneas

(3) Configuración del índice del marco de datos

1. Modifique los valores del índice de filas y columnas:

Nota: Las siguientes modificaciones son incorrectas.
        

2. Restablecer el índice:

  • reset_index(drop=False)
    : establece un nuevo índice de subíndice.
    -drop: el valor predeterminado es Falso, no elimina el índice original, si es Verdadero, elimina el valor del índice original.

  • set_index(keys, drop=True)
    -
    claves: nombre de índice de columna o lista de nombres de índice de columna.
    -drop: booleano, predeterminado Verdadero. Como nuevo índice, elimine la columna original.

3. Configure un nuevo caso índice:

  • crear
  • establecer un nuevo índice por mes
  • Establezca múltiples índices en año y mes ==> De hecho, esto se convierte en una matriz tridimensional.

    Nota: A través de la configuración de ahora, el DataFrame se convierte en un DataFrame con Multilndex.

5.2 Operación de datos básicos

Para comprender mejor estas operaciones básicas, leeremos datos bursátiles reales. Con respecto a las operaciones de archivos, las presentaremos más adelante, aquí solo usamos la API primero.

5.2.1 Operaciones de índice

En Numpy, ya hemos hablado sobre el uso de secuencias de selección de índice y selección de sectores. Pandas también admite operaciones similares. También puede usar nombres de columnas, nombres de filas o incluso una combinación.

(1) Utilice el índice de filas y columnas directamente (primero la columna, luego la fila) 

(2) Utilice índices en combinación con loc o iloc

(3) Utilice ix para combinar índices

5.2.2 Operación de asignación

5.2.3 Clasificación

Hay dos formas de clasificación, una para clasificación de índice y otra para clasificación de contenido.

  • Utilice df.sort_values(by=, ascending=)
    -clave única o varias claves para ordenar, valor predeterminado ascendente-ascending
    =False: descendente
    -ascending=True: ascendente
    -nota: mediante este parámetro se pueden aceptar múltiples valores, se le da prioridad al primero Una clasificación de índice, si es la misma, de acuerdo con lo siguiente
  • Utilice df.sort_index para ordenar el índice.
    El índice de fechas de esta acción originalmente era de mayor a menor, y ahora está reordenado de menor a mayor:
  • Cuando se utiliza series.sort_values(ascending=True) para ordenar
    series, solo hay una columna y no se requieren parámetros:
  • Ordenar con series.sort_index()            es lo mismo que df

5.3 Operación de marco de datos

 

5.3.1 Operaciones aritméticas

Utilice directamente el método add, sub... También puede utilizar el símbolo +-...

  • añadir otro)
  • sub(otro)

5.3.2 Operaciones lógicas

(1) Operadores lógicos <, >, |, &

  • Por ejemplo, filtrar datos de fecha con p_change > 2

  • Complete uno o más juicios lógicos, filtre p_change> 2 y abra> 15

(2) Función de operación lógica

  • consulta(expr)
    - expr: cadena de consulta
  • isin(valores)

5.3.3 Cálculo estadístico

(1) describir()

(2) Función de estadísticas

Numpy se ha introducido en detalle, aquí demostramos min (valor mínimo), max (valor máximo), media (valor promedio), mediana (mediana), var (varianza), std (desviación estándar), modo (modo) resultado:

Al realizar estadísticas en una sola función, el eje de coordenadas sigue siendo "columnas" (eje = 0, predeterminado) de forma predeterminada. Si desea "indexar" la fila, debe especificarla (eje = 1).

  • máximo minimo()
  • estándar()、var()
     
  • mediana()

  • idxmax(), idxmin()   obtienen el subíndice del valor máximo/mínimo

5.3.4 Función de estadística acumulativa

Las funciones anteriores pueden operar en series y marcos de datos.

5.3.5 Funciones personalizadas

  • aplicar(func, eje=0)
    func: función personalizada
    eje=0: el valor predeterminado es columna, eje=1 es operación de fila

Ejemplo: ​​Defina un par de columnas, la función del valor máximo - el valor mínimo

5.4 Dibujo de pandas

pandas.DataFrame.plot

5.5 Lectura y almacenamiento de archivos

La mayoría de nuestros datos existen en archivos, por lo que pandas admite operaciones IO complejas. La API de pandas admite muchos formatos de archivos, como CSV, SQL, XLS, JSON y HDF5.
Nota: Los archivos HDF5 y CSV son los más utilizados.

5.5.1 CSV

(1) leer_csv

pandas.read_csv(filepath_or_buffer,sep =',' )

  • filepath_or_buffer: ruta del archivo
  • usecols: especifica el nombre de la columna a leer, en forma de lista

(2)a_csv

5.5.2 HDF5

(1)read_hdf y to_hdf

5.5.3 JSON

JSON es un formato de intercambio de datos que usamos comúnmente, que a menudo se usa en interacciones front-end y back-end, y este formato también se seleccionará al almacenar. Entonces necesitamos saber cómo Pandas lee y almacena el formato JSON.

(1) leer_json

 

(2)a_json

5.5.4 Expansión

Se da preferencia al uso del almacenamiento de archivos HDF5:

  • HDF5 admite la compresión al almacenar, el método utilizado es blosc, que es el más rápido y es compatible con pandas de forma predeterminada.
  • El uso de la compresión puede mejorar la utilización del disco y ahorrar espacio.
  • HDF5 también es multiplataforma y se puede migrar fácilmente a Hadoop

5.6 Procesamiento avanzado: procesamiento de valores faltantes

5.6.1 Cómo lidiar con nan

 

 

5.6.2 Valor no faltante nan, con marca predeterminada

Los datos son así:

Análisis de procesamiento de ideas:

  • 1. Primero reemplace '?' con np.nan
    df.replace(to_replace=, value=)
            -to_replace: valor antes del reemplazo
            -value: valor después del reemplazo
  • 2. En el procesamiento de valores faltantes.

5.7 Procesamiento avanzado: discretización de datos

 

 

5.7.1 Por qué la discretización

El propósito de la discretización de atributos continuos es simplificar la estructura de datos, y se pueden utilizar técnicas de discretización de datos para reducir el número de valores de atributos continuos dados. Los métodos de discretización se utilizan a menudo como herramientas para la extracción de datos.

5.7.2 ¿Qué es la discretización de datos?

La discretización de atributos continuos consiste en dividir el rango de valores de los atributos continuos en varios intervalos discretos y, finalmente, utilizar diferentes símbolos o valores enteros para representar los valores de los atributos que se encuentran en cada subintervalo.
Existen muchos métodos de discretización y este utiliza una de las formas más sencillas de operar:

  • Los datos de altura de los pueblos primitivos: 165, 174, 160, 180, 159, 163, 192, 184.
  • Supongamos que se divide en varios intervalos según la altura: 150~165, 165~180, 180~195

De esta manera, dividimos los datos en tres intervalos, que puedo marcar como corto, medio y alto, y finalmente los procesamos en una matriz de "variable ficticia":

5.7.3 Operación de paquetes de datos

Herramientas utilizadas:

  • pd.qcut(data, bins):
    ​​​​​​​​Agrupación de datos La agrupación de datos generalmente se usa junto con value_counts para contar el número de cada grupo
  • series.value_counts():
    tiempos
     

Agrupación de intervalos personalizados:

  • pd.cut(datos, contenedores
     )

5.7.4 Empaquetar datos en codificación one-hot

Genere una columna booleana para cada categoría y solo una de estas columnas puede tomar un valor de 1 para esta muestra. También se denomina codificación one-hot.

Alias: variable ficticia, codificación única activa
Convierta la tabla de la izquierda en la figura siguiente al formulario de la derecha:

pandas.get_dummies(datos, prefijo=Ninguno)

  • datos: tipo matriz, serie o marco de datos
  • prefijo: nombre del grupo

5.8  Procesamiento avanzado: fusión de datos

Si sus datos constan de varias tablas, a veces es necesario fusionar diferentes contenidos para su análisis. 

 

5.8.1 pd.concat realiza la fusión de datos

pd.concat([data1, data2], axis=1)
        -Fusionar por fila o columna, eje=0 es el índice de la columna, eje=1 es el índice de la fila.
        Por ejemplo, fusionamos la codificación one-hot recién procesada con la datos originales:
        

         

5.8.2 pd.merge realiza la fusión de datos

pd.merge(izquierda, derecha, how='inner', on=Ninguno, left_on=Ninguno, right_on=Ninguno)

  • Se puede especificar que se fusione de acuerdo con los pares clave-valor comunes de dos conjuntos de datos o izquierda y derecha respectivamente.
  • izquierda: un objeto DataFrame
  • derecha: otro objeto DataFrame
  • on:Columnas (nombres) a las que unirse. Debe encontrarse en los objetos DataFrame izquierdo y derecho.
  • left_on=Ninguno, right_on=Ninguno: especifique las teclas izquierda y derecha

 

5.9 Procesamiento avanzado: tabla cruzada y tabla dinámica

 

5.9.1 ¿Cuáles son las funciones de la tabla cruzada y la tabla dinámica?

5.9.2 Utilice tabla cruzada (tabla cruzada) para realizar la figura anterior

Tabla cruzada: la tabla cruzada se utiliza para calcular el número de grupos de una columna de datos para otra columna de datos (encontrar la relación entre dos columnas)

  • pd.crosstab(valor1, valor2)
  • Marco de datos.pivot_table([], índice=[])

5.9.3 Caso: exploración de la relación entre acciones y días de la semana

 

Pero vemos que el recuento es sólo el número de días buenos y malos de cada semana, y no obtenemos la proporción. ¿Cómo hacerlo?

  • Suma el número total de días de cada lunes, etc., y usa la operación de división para encontrar la razón.

Visualización: 

 

5.9.4 Implementación usando pivot_table (tabla dinámica)

5.10 Procesamiento avanzado: agrupación y agregación

La agrupación y agregación suele ser una forma de analizar datos y, por lo general, se utiliza junto con algunas funciones estadísticas para ver la agrupación de datos.
Piénselo, de hecho, la tabla cruzada y la tabla dinámica ahora también tienen la función de agrupar, por lo que es una forma de agrupación, ¡pero principalmente calculan el número de veces o calculan la proporción!

5.10.1 Qué son la agrupación y la agregación

La agrupación sin agregación no tiene significado, por lo que la agrupación y la agregación son generalmente inseparables. 

5.10.2 API de grupo

DataFrame.groupby(clave, as_index=False)

  • clave: datos de columnas divididas, pueden ser múltiples

Caso: Datos de precios de diferentes bolígrafos de diferentes colores
        : agrupación, agrupación por colores, agregación de precios

5.10.3 Datos de la tienda minorista Starbucks

​​​​​​​

​​​​​​​

Agrupar según múltiples grupos: supongamos que unimos provincias y ciudades para agruparnos.

Supongo que te gusta

Origin blog.csdn.net/m0_58086930/article/details/126097452
Recomendado
Clasificación