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