Notas de aprendizaje automático 18 ----- Práctica de red bayesiana

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:

 

Supongo que te gusta

Origin www.cnblogs.com/luckyplj/p/12712312.html
Recomendado
Clasificación