1. Bayes ingenuos
(1) Contenido principal
(2) Hipótesis de Bayes ingenua
(3) Derivación de ingenuos Bayes
(4) Ejemplos de aplicación de Naive Bayes
El proceso de análisis se muestra a continuación:
Pensamiento:
2. Ejemplo de código
# ! / usr / bin / python # - * - codificación: utf-8 - * - import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from sklearn.preprocessing import StandardScaler from sklearn.naive_bayes import GaussianNB, MultinomialNB from sklearn .pipeline import Pipeline from sklearn.neighbours import KNeighboursclassifier def iris_type (s): it = {b ' Iris-setosa ' : 0, b ' Iris-versicolor ': 1, b ' Iris-virginica ' : 2 } devuélvalo [s] si __name__ == " __main__ " : data = np.loadtxt ( ' 8.iris.data ' , dtype = float, delimiter = ' , ' , convertidores = {4 : iris_type}) print (data) x, y = np.split (data, (4,), axis = 1 ) x = x [:,: 2 ] print (x) print (y) gnb = Pipeline ([ ( 'sc ' , StandardScaler ()), ( ' clf ' , GaussianNB ()))) gnb.fit (x, y.ravel ()) # gnb = MultinomialNB (). fit (x, y.ravel ()) # gnb KNeighborsClassifier = (. N_NEIGHBORS = 5) .fit (X, y.ravel ()) # dibujo N, M = 500, 500 # cuántos valores de cada muestreo horizontal y vertical x1_min, x1_max = x [:, 0 ] .min (), x [:, 0] .max () # rango de la columna 0 x2_min, x2_max = x [:, 1] .min (), x [:, 1] .max () # rango de la columna 1 t1 = np .linspace (x1_min, x1_max, N) t2 = np.linspace (x2_min, x2_max, M) x1, x2Np.meshgrid = (T1, T2) # genera los puntos de cuadrícula de muestreo x_test np.stack = ((x1.flat, x2.flat), Axis =. 1) # ensayo del punto de # sentido, pero otras dos dimensiones para raspar # x3 = np.ones (x1.size) * np.average (x [:, 2]) # x4 = np.ones (x1.size) * np.average (x [:, 3]) # x_test = np. pila ((x1.flat, x2.flat, x3 , x4), eje = 1) # de punto de prueba mpl.rcParams [ ' font.sans serif- ' ] = [U ' simhei ' ] mpl.rcParams [ ' axes.unicode_minus ' ] = Falso cm_light = mpl.colors.ListedColormap ([ ' # 77E0A0' ' FF8080 # ' ' # A0A0FF ' ]) cm_dark = mpl.colors.ListedColormap ([ ' G ' ' R ^ ' ' B ' ]) y_hat = gnb.predict () x_test # valor de predicción y_hat = y_hat. los remodelar (x1.shape) # hacen la misma forma de la entrada plt.figure (facecolor = ' W ' ) plt.pcolormesh (X1, X2, y_hat, CMap = cm_light) # predicho indicación del valor plt.scatter (X [:, 0], X [:., 1], C = np.squeeze (Y), edgecolors = ' K ' , S = 50, = cm_dark CMap) # muestras reveló plt.xlabel (u ' Calyx length ' , fontsize = 14 ) plt.ylabel (u ' Calyx width ' , fontsize = 14 ) plt.xlim (x1_min, x1_max) plt.ylim (x2_min, x2_max) plt.title (u ' GaussianNB para datos de iris Resultado de clasificación ' , tamaño de fuente = 18 ) plt.grid (True) plt.show () # resultado de predicción en el conjunto de entrenamiento y_hat = gnb.predict (x) y = y.reshape (-1 ) resultado = y_hat == y print (y_hat) print (resultado) acc = np.mean (resultado) print ( ' 准确 度:% .2f %% ' % (100 * acc))
Imagen del efecto: