Imágenes clasificador para el aprendizaje automático

Se puede aplicar un algoritmo de aprendizaje automático a un complejo conjunto de imágenes, llamada Las caras marcadas en el conjunto de datos Salvaje que contiene imágenes de personajes famosos recogidos a través de Internet. Debe descargar el conjunto de datos a través de Internet, utilizando el paquete de scikit-learn en Python. El paquete contiene principalmente fotografías de políticos conocidos.

advertencias de importación

(warnings.filterwarnings"ignorar")

de sklearn.datasets fetch_lfw_people importación

lfw_people = fetch_lfw_people (min_faces_per_person = 60,

Video: Aprendizaje automático con R y Python

cambiar el tamaño = 0,4)

X = lfw_people.data

y = lfw_people.target

target_names = [lfw_people.target_names [a] para A en Y]

N_SAMPLES, h, w = lfw_people.images.shape

de colecciones importar Contador

para el nombre, contar en Contador (target_names) .items ():

impresión ("% 20s% i" % (Nombre, recuento))

Ariel Sharon 77

Junichiro Koizumi 60

Colin Powell 236

Gerhard Schroeder 109

Tony Blair 144

Hugo Chavez 71

George W Bush 530

Donald Rumsfeld 121

Video: Neural Networks con TensorFlow para reconocimiento de imágen

Como ejemplo de la gran variedad de datos, después de dividir los ejemplos en entrenamiento y prueba, se puede visualizar una muestra de fotos de ambos conjuntos que representan Jun`ichirô Koizumi, Primer Ministro del Japón 2001-2006.

de importación sklearn.cross_validation

StratifiedShuffleSplit

tren, prueba = (lista StratifiedShuffleSplit (target_names,

n_iter = 1, test_size = 0,1, random_state = 101)) [0]

plt.subplot (1, 4, 1)

plt.axis ( `off`)

para k, m en enumerate (X [tren] [y [tren] == 6] [: 4]):

plt.subplot (1, 4, 1 + k)

si k == 0:

plt.title ( `Juego de tren`)

plt.axis ( `off`)

plt.imshow (m.reshape (50,37),

CMAP = plt.cm.gray, la interpolación = `cercano`)

plt.show ()

para k, m en enumerate (X [test] [y [ensayo] == 6] [: 4]):

plt.subplot (1, 4, 1 + k)

si k == 0:

plt.title ( `conjunto de prueba`)

plt.axis ( `off`)

plt.imshow (m.reshape (50,37),

CMAP = plt.cm.gray, la interpolación = `cercano`)

plt.show ()

la formación de aprendizaje automático conjunto
Ejemplos de los conjuntos de entrenamiento y prueba difieren en pose y expresión.

Como se puede ver, las fotos tienen algunas variaciones bastante, incluso entre las fotos de la misma persona, lo que hace difícil la tarea: la expresión, postura, luz diferente, y la calidad de la foto. Por esta razón, el ejemplo que sigue se aplica el método de autocaras, utilizando diferentes tipos de descomposiciones y reducir las grandes vector inicial de características de píxeles (1850) a un conjunto más simple de 150 características.

El ejemplo utiliza PCA, la descomposición de la varianza técnica- no negativo matriz de factorización (NMF), una técnica para descomponer las imágenes en solamente características- positivo y FastICA, un algoritmo para el Análisis de Componentes Independientes, un análisis que extrae las señales de ruido y otras señales separadas (el algoritmo tiene éxito en el manejo de problemas como el problema cóctel).

sklearn de la descomposición de importación

n_components = 50

PCA = decomposition.RandomizedPCA (

n_components = n_components,

blanquee = True) .fit (X [tren ,:])

NMF = decomposition.NMF (n_components = n_components,

init = `nndsvda`,

tol = 5e-3) .fit (X [tren ,:])

FastICA = decomposition.FastICA (n_components = n_components,

blanquee = True) .fit (X [tren ,:])

autocaras = pca.components_.reshape ((n_components, h, w))

X_dec = np.column_stack ((pca.transform (X [tren ,:]),

nmf.transform (X [tren ,:]),

fastica.transform (X [tren ,:])))

Xt_dec = np.column_stack ((pca.transform (X [prueba ,:]),

nmf.transform (X [prueba ,:]),

fastica.transform (X [prueba ,:])))

y_dec = y [tren]

yt_dec = y [ensayo]

Después de la extracción y la concatenación de las descomposiciones de imagen en una nueva formación y la prueba de conjunto de ejemplos de datos, el código se aplica una red de búsqueda de las mejores combinaciones de parámetros para una máquina de soporte vectorial clasificación para realizar una clasificación de problemas correcta.

GridSearchCV de importación sklearn.grid_search

de importación sklearn.svm SVC

param_grid = { `C`: [0,1, 1,0, 10,0, 100,0, 1000,0],

`Gamma`: [0,0001, 0,001, 0,01, 0,1],}

CLF = GridSearchCV (SVC (kernel = `rbf`), param_grid)

CLF = clf.fit (X_dec, y_dec)

impresión ("Mejores parámetros:% s" % Clf.best_params_)

Las mejores parámetros: { `gamma`: 0,01, `C`: 100,0}

Después de encontrar los mejores parámetros, el Código de los controles de precisión - El porcentaje de respuestas correctas en la prueba - y obtiene una estimación de alrededor de 0,82 (la medida puede cambiar cuando se ejecuta el código en el ordenador).

de sklearn.metrics accuracy_score importación

solución = clf.predict (Xt_dec)

impresión("precisión alcanzada:% 0.3f"

% Accuracy_score (yt_dec, solución))

precisión alcanzada: 0,815

Más interesante aún, puede pedir una matriz de confusión que muestra las clases correctas a lo largo de las filas y las predicciones en las columnas. Cuando un personaje en una fila tiene cuenta en columnas diferentes de su número de fila, el código ha atribuido erróneamente una de las fotos a otra persona. En el caso de la ex primer ministro de Japón, el ejemplo realmente obtiene una puntuación perfecta (nótese que la salida muestra un 6 en la fila 6, columna 6, y ceros en el resto de las entradas para esa fila).

de sklearn.metrics confusion_matrix importación

confusión = str (confusion_matrix (yt_dec, solución))

print ( ` `* 26 +`` .join (mapa (str, gama (8))))

Video: Neural Networks con TensorFlow para reconocimiento de imágen

print (` `* 26 + `-` * 22)

para n, (etiqueta, fila) en enumerate (

postales (lfw_people.target_names,

confusion.split ( ` n`))):

print ( `% s% 18s gt; % S`% (n, etiqueta, fila))

0 1 2 3 4 5 6 7

----------------------

0Ariel Sharon gt; [[6 0 1 0 1 0 0 0]

1Colin Powell gt; [0 22 0 2 0 0 0 0]

2 Donald Rumsfeld gt; [0 0 8 2 1 0 0 1]

3 George W Bush gt; [1 1 2 46 1 0 0 2]

Video: Train an Image Classifier with TensorFlow for Poets - Machine Learning Recipes #6

4 Gerhard Schroeder gt; [0 0 2 1 6 1 0 1]

5Hugo Chavez gt; [0 0 0 0 1 5 0 1]

6 Junichiro Koizumi gt; [0 0 0 0 0 0 6 0]

7 Tony Blair gt; [0 0 0 1 2 0 0 11]]

Artículos Relacionados