0% encontró este documento útil (0 votos)
46 vistas10 páginas

Taller de Clasificación de Perros con IA

El documento presenta un código de Python para crear un clasificador de árboles de decisión para predecir la raza de perros con base en tres características. Se entrena el modelo con datos de ejemplo y se evalúa su rendimiento en conjuntos de entrenamiento y prueba.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
46 vistas10 páginas

Taller de Clasificación de Perros con IA

El documento presenta un código de Python para crear un clasificador de árboles de decisión para predecir la raza de perros con base en tres características. Se entrena el modelo con datos de ejemplo y se evalúa su rendimiento en conjuntos de entrenamiento y prueba.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

TALLER 1 IA

Este código crea una base de datos de perros con tres características y la divide en
conjuntos de entrenamiento y prueba. Luego, entrena un clasificador de árbol de
decisiones y muestra el score del entrenamiento y de testeo. También grafica el
árbol de decisiones. Ahora, ¿te gustaría que implementemos la opción de probar el
modelo con datos ingresados por el usuario?

import numpy as np
from sklearn.model_selection import train_test_split
from [Link] import DecisionTreeClassifier
from sklearn import metrics
import [Link] as plt
from sklearn import tree

# Crear una base de datos de clasificación de perros


# Características: tamaño, color y raza
# 1: Pequeño, 2: Mediano, 3: Grande
# 1: Blanco, 2: Negro, 3: Marrón
# 1: Labrador, 2: Bulldog, 3: Pastor Alemán

data = [Link]([
[1, 1, 1], # Pequeño, Blanco, Labrador
[2, 2, 2], # Mediano, Negro, Bulldog
[3, 3, 3], # Grande, Marrón, Pastor Alemán
# Agrega más datos aquí
])

# Etiquetas de clasificación
labels = [Link]([1, 2, 3]) # Por ejemplo, 1: Labrador, 2: Bulldog,
3: Pastor Alemán

# Dividir los datos en conjuntos de entrenamiento y prueba


X_train, X_test, y_train, y_test = train_test_split(data, labels,
test_size=0.2, random_state=42)

# Entrenar el algoritmo de árbol de decisiones


clf = DecisionTreeClassifier()
[Link](X_train, y_train)

# Calcular el score del entrenamiento y de testeo


train_score = [Link](X_train, y_train)
test_score = [Link](X_test, y_test)

print("Score del entrenamiento:", train_score)


print("Score de testeo:", test_score)
# Graficar el árbol de decisiones
[Link](figsize=(10, 6))
tree.plot_tree(clf, filled=True, feature_names=["Tamaño", "Color",
"Raza"])
[Link]()

import pandas as pd
from sklearn.model_selection import train_test_split
from [Link] import DecisionTreeClassifier
from [Link] import accuracy_score
from [Link] import Image
from graphviz import Source
import [Link] as plt
import numpy as np
Usa el código con precaución.
content_copy

2. Carga del conjunto de datos:

Se asume que el conjunto de datos de clasificación de perros con 3 características


está disponible en un archivo CSV llamado "[Link]" en la unidad de Google
Drive. Se carga el conjunto de datos en un DataFrame de Pandas:

Python
from [Link] import files
uploaded = [Link]()

datos = pd.read_csv(next(iter([Link]())))
Usa el código con precaución.
content_copy

3. Preprocesamiento de datos:

Se verifica que no existan valores faltantes en las características:

Python
if [Link]().sum().any():
print("Existen valores faltantes en el conjunto de datos. Debe
preprocesarlos antes de continuar.")
exit()
Usa el código con precaución.
content_copy

4. Separación de características y etiquetas:

Se separan las características (columnas de entrada) y las etiquetas (columna de


salida) del DataFrame:
Python
X = datos[["caracteristica1", "caracteristica2", "caracteristica3"]]
y = datos["raza"]
Usa el código con precaución.
content_copy

5. División en conjuntos de entrenamiento y prueba:

Se divide el conjunto de datos en dos subconjuntos: entrenamiento (80%) y


prueba (20%). El conjunto de entrenamiento se utilizará para entrenar el modelo,
mientras que el conjunto de prueba se utilizará para evaluarlo:

Python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)
Usa el código con precaución.
content_copy

6. Creación e entrenamiento del modelo de árbol de decisiones:

Se crea un objeto DecisionTreeClassifier y se entrena con el conjunto de


entrenamiento:

Python
modelo = DecisionTreeClassifier()
[Link](X_train, y_train)
Usa el código con precaución.
content_copy

7. Evaluación del modelo:

Se evalúa el rendimiento del modelo en el conjunto de prueba utilizando la métrica


accuracy_score:

Python
score_entrenamiento = accuracy_score(y_train, [Link](X_train))
score_prueba = accuracy_score(y_test, [Link](X_test))

print("Score de entrenamiento:", score_entrenamiento)


print("Score de prueba:", score_prueba)
Usa el código con precaución.
content_copy

8. Visualización del árbol de decisiones:

Se utiliza la librería graphviz para visualizar el árbol de decisiones entrenado:

Python
from [Link] import export_graphviz
tree_data = export_graphviz(modelo, filled=True)
Source(tree_data).view()
Usa el código con precaución.
content_copy

9. Identificación de la característica más relevante:

Se utiliza la función feature_importance_ del modelo para identificar la


característica que tiene mayor peso en la clasificación:

Python
importancias = modelo.feature_importances_
caracteristica_mas_relevante = [Link][[Link](importancias)]

print("Característica más relevante:", caracteristica_mas_relevante)


Usa el código con precaución.
content_copy

10. Predicción de la raza de un nuevo perro:

Se crea una función para predecir la raza de un perro nuevo ingresando sus
características manualmente:

Python
def predecir_raza(caracteristica1, caracteristica2, caracteristica3):
nuevo_perro = [Link]({
"caracteristica1": [caracteristica1],
"caracteristica2": [caracteristica2],
"caracteristica3": [caracteristica3]
})
prediccion = [Link](nuevo_perro)
return prediccion[0]

Usa el código con precaución.


content_copy

11. Implementación de la opción de testeo:

Python
while True:
caracteristica1 = input("Ingrese la característica 1 del perro (o 'q'
para salir): ")
if

DOGS
# datadogs arbol desicion fit testeo graficas
import numpy as np
# de Sk importo arbol desicion y clasificacion
from sklearn import tree
from [Link] import DecisionTreeClassifier
# de sk importo train_test_split para entrenar y validar el modelo
from sklearn.model_selection import train_test_split
# de sk importo graphvis para visualizar
from [Link] import export_graphviz
import graphviz
import [Link] as plt
# datos sobre peso, ladra (F o T) y talla
datadogs = [[0, 0, 20], [1, 0, 21], [2, 0, 22], [3, 0, 23], [4, 0, 24],
[5, 1, 25], [6, 1, 26], [7, 1, 27], [8, 1, 28], [9, 1, 29], [10, 1, 30],
[11, 1, 31], [12, 1, 32], [13, 0, 33], [14, 1, 34], [15, 1, 35], [16, 1,
36], [17,0,37], [18,0,38], [19,0,39], [20,0,20]]
target = [0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0]
clasificacion = [Link]()
outfit = [Link](datadogs,target)
[Link](datadogs,target)
# se genera comparacion de testeo y modelo de seleccion
x_entrenamiento,x_test,y_entrenamiento,y_test =
train_test_split(datadogs,target)
model_selection = [Link]()
model_selection.fit(x_entrenamiento, y_entrenamiento)
# data fit score
model_selection.score(x_test, y_test)
# arbol desicion clasificacion y fit
tree1 = DecisionTreeClassifier()
[Link](x_entrenamiento,y_entrenamiento)
[Link](x_test,y_test)

# grafica [Link] para datos

class_names = datadogs.target_names

# Reemplazar 'datadogs.target_names' con el nombre real de tus clases

feature_names = datadogs.feature_names # Reemplaza 'datadogs.feature_names' con el nombre


real de tus características
export_graphviz(tree1, out_file="[Link]", class_names=['0', '1'], feature_names=['feature1',
'feature2', 'feature3'], impurity=True, node_ids=True, filled=True)

# with funcion que se utiliza en python para abrir archivos valores textos ficheros

with open("[Link]") as archivo: # abrir el archivo se llama con with esto genera un temporal
para lectura

dot_graph = [Link]() # los datos se guardan en la variable creada

# esta es una linea diferente

[Link](dot_graph) # se llama la herramienta para graficar y al archivo

Pero tengo un problema con el siguiente código

# caracteristicas mas importantes

caract = ['0', '1'].[Link][1]

# se llama la biblioteca matplot

[Link](range(caract),tree1.feature_importances_) # se genera un grafico de barras

[Link]([Link](caract),datasets_breast_cancer.feature_names)

[Link]("valor de importancia de los datos")

[Link]("caracteristicas")

# datadogs arbol desicion fit testeo graficas

import numpy as np

# de Sk importo arbol desicion y clasificacion

from sklearn import tree

from [Link] import DecisionTreeClassifier

# de sk importo train_test_split para entrenar y validar el modelo

from sklearn.model_selection import train_test_split

# de sk importo graphvis para visualizar

from [Link] import export_graphviz

import graphviz

import [Link] as plt

import numpy as np

# datos sobre peso, ladra (F o T) y talla


datadogs = [[0, 0, 20], [1, 0, 21], [2, 0, 22], [3, 0, 23], [4, 0, 24], [5, 1, 25], [6, 1, 26], [7, 1, 27], [8, 1,
28], [9, 1, 29], [10, 1, 30], [11, 1, 31], [12, 1, 32], [13, 0, 33], [14, 1, 34], [15, 1, 35], [16, 1, 36],
[17,0,37], [18,0,38], [19,0,39], [20,0,20]]

# target de fit

target = [0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0]

# fit el clasificador

# ahora traemos el algoritmo con e que vamos a trabajar, desde tree importamos desde sklearn

from sklearn import tree

clasificacion = [Link]()

# fit es el entrenamiento y se hara sobre dos variables, el outfit es la salida a entrenar

outfit = [Link](datadogs,target)

# score es el porcentaje de aprendizaje

[Link](datadogs,target)

# evaluar modelo de prediccion

respuesta = [Link]([[0,0,20]])

print(respuesta)

# condicional respuesta

if respuesta [0] ==1:

print("es perro")

else:

print("no es perro")

# se genera comparacion de testeo y modelo de seleccion

x_entrenamiento,x_test,y_entrenamiento,y_test = train_test_split(datadogs,target)

model_selection = [Link]()

model_selection.fit(x_entrenamiento, y_entrenamiento)

# data fit score


model_selection.score(x_test, y_test)

# arbol desicion clasificacion y fit

tree1 = DecisionTreeClassifier()

[Link](x_entrenamiento,y_entrenamiento)

[Link](x_test,y_test)

[Link](x_entrenamiento,y_entrenamiento)

# grafica [Link] para datos colocar * primera en mayuscula

export_graphviz(tree1,out_file="[Link]",class_names=datadogs.target_names,feature_names=
datadogs.feature_names,impurity=True,node_ids=True,filled=True)

# Entrenar el clasificador

tree1 = DecisionTreeClassifier()

[Link](datadogs, target)

# Calcular la precisión del modelo

score = [Link](datadogs, target)

print("Precisión del modelo:", score)

# grafica [Link] para datos colocar * primera en mayuscula

class_names=model_selection.classes_

export_graphviz(tree1,out_file="[Link]",class_names=datadogs.target_names,feature_names=
datadogs.feature_names,impurity=True,node_ids=True,filled=True)

# caracteristicas mas importante

caract = [Link][1]
# se llama la biblioteca matplot

[Link](range(caract),tree1.feature_importances_) # se genera un grafico de barras

[Link]([Link](caract),datadogs.feature_names)

[Link]("valor de importancia de los datos")

[Link]("caracteristicas")

class_names = model_selection.classes_

export_graphviz(tree1,out_file="[Link]",class_names=datadogs.target_names,feature_names=
datadogs.feature_names,impurity=True,node_ids=True,filled=True)

Parece que estoy teniendo un problema con el código para graficar mi modelo de árbol de
decisione con mis propios datos, pero hay algunos errores que necesito corregir, necesito
que me graficar las variables class_names y feature_names

# datadogs arbol desicion fit testeo graficas import numpy as np # de Sk importo arbol
desicion y clasificacion from sklearn import tree from [Link] import
DecisionTreeClassifier # de sk importo train_test_split para entrenar y validar el modelo
from sklearn.model_selection import train_test_split # de sk importo graphvis para
visualizar from [Link] import export_graphviz import graphviz import
[Link] as plt import numpy as np # datos sobre peso, ladra (F o T) y talla
datadogs = [[0, 0, 20], [1, 0, 21], [2, 0, 22], [3, 0, 23], [4, 0, 24], [5, 1, 25], [6, 1, 26], [7, 1, 27],
[8, 1, 28], [9, 1, 29], [10, 1, 30], [11, 1, 31], [12, 1, 32], [13, 0, 33], [14, 1, 34], [15, 1, 35], [16, 1,
36], [17,0,37], [18,0,38], [19,0,39], [20,0,20]] # target de fit target =
[0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0] # fit el clasificador # ahora traemos el algoritmo con
e que vamos a trabajar, desde tree importamos desde sklearn from sklearn import tree
clasificacion = [Link]() # fit es el entrenamiento y se hara sobre dos
variables, el outfit es la salida a entrenar outfit = [Link](datadogs,target) # score es
el porcentaje de aprendizaje [Link](datadogs,target) # evaluar modelo de prediccion
respuesta = [Link]([[0,0,20]]) print(respuesta) # condicional respuesta if respuesta
[0] ==1: print("es perro") else: print("no es perro") # se genera comparacion de testeo y
modelo de seleccion x_entrenamiento,x_test,y_entrenamiento,y_test =
train_test_split(datadogs,target) model_selection = [Link]()
model_selection.fit(x_entrenamiento, y_entrenamiento) # data fit score
model_selection.score(x_test, y_test) # arbol desicion clasificacion y fit tree1 =
DecisionTreeClassifier() [Link](x_entrenamiento,y_entrenamiento)
[Link](x_test,y_test) [Link](x_entrenamiento,y_entrenamiento)

# 8a variable crear class_names y feature_names


class_names = ['No es perro', 'Es perro']

feature_names = ['Peso', 'Ladra', 'Talla']

export_graphviz(tree1,out_file="[Link]",class_names=datadogs.target_names,feature_names=
datadogs.feature_names,impurity=True,node_ids=True,filled=True)

DOGS

[Link]
bgSts9xh1XhX#scrollTo=89w0sfAWcL6d

CANCER

[Link]
1KiafyDxOykgxXebyGgikCN2OsRUFTMlE#scrollTo=3KOD5zPV81kL

También podría gustarte