Guía de inicio rápido de Python para personas que aprenden inteligencia artificial | por Shaw Talebi | septiembre de 2024

Muchas computadoras vienen con Python preinstalado. Para ver si tu máquina lo tiene, ve a la Terminal (Mac/Linux) o al Símbolo del sistema (Windows) y simplemente ingresa “python”.

Uso de Python en la terminal. Imagen del autor.

Si no ve una pantalla como ésta, puede descargar Python manualmente (Ventanas/ Impermeable). Alternativamente, se puede instalar Anacondaun sistema de paquetes Python popular para IA y ciencia de datos. Si tiene problemas de instalación, ¡Pídele ayuda a tu asistente de IA favorito!

Con Python ejecutándose, ahora podemos comenzar a escribir código. Recomiendo ejecutar los ejemplos en su computadora a medida que avanzamos.También puedes descargar todo el código de ejemplo desde Repositorio de GitHub.

Cadenas y números

A tipo de datos (o simplemente “tipo”) es una forma de clasificar datos para que puedan procesarse de manera apropiada y eficiente en una computadora.

Los tipos se definen mediante un conjunto posible de valores y operaciones. Por ejemplo, instrumentos de cuerda son secuencias de caracteres arbitrarios (es decir, texto) que se puede manipular de maneras específicas. Pruebe las siguientes cadenas en su instancia de Python de línea de comandos.

"this is a string"
>> 'this is a string'
'so is this:-1*!@&04"(*&^}":>?'
>> 'so is this:-1*!@&04"(*&^}":>?'
"""and
this is
too!!11!"""
>> 'and\n this is\n too!!11!'
"we can even " + "add strings together"
>> 'we can even add strings together'

Aunque las cadenas se pueden sumar entre sí (es decir, concatenar), no se pueden agregar a tipos de datos numéricos como int (es decir, números enteros) o flotante (es decir, números con decimales)Si intentamos eso en Python, recibiremos un mensaje de error porque las operaciones solo están definidas para tipos compatibles.

# we can't add strings to other data types (BTW this is how you write comments in Python)
"I am " + 29
>> TypeError: can only concatenate str (not "int") to str
# so we have to write 29 as a string
"I am " + "29"
>> 'I am 29'

Listas y diccionarios

Más allá de los tipos básicos de cadenas, números enteros y flotantes, Python tiene tipos para estructurar colecciones de datos más grandes.

Un tipo de este tipo es un listaun colección ordenada de valoresPodemos tener listas de cadenas, números, cadenas + números, o incluso listas de listas.

# a list of strings
["a", "b", "c"]

# a list of ints
[1, 2, 3]

# list with a string, int, and float
["a", 2, 3.14]

# a list of lists
[["a", "b"], [1, 2], [1.0, 2.0]]

Otro tipo de datos fundamental es un diccionarioque consiste en secuencias de pares clave-valor dónde Las claves son cadenas y Los valores pueden ser de cualquier tipo de datos.Esta es una excelente manera de representar datos con múltiples atributos.

# a dictionary
{"Name":"Shaw"}

# a dictionary with multiple key-value pairs
{"Name":"Shaw", "Age":29, "Interests":["AI", "Music", "Bread"]}

# a list of dictionaries
[{"Name":"Shaw", "Age":29, "Interests":["AI", "Music", "Bread"]},
{"Name":"Ify", "Age":27, "Interests":["Marketing", "YouTube", "Shopping"]}]

# a nested dictionary
{"User":{"Name":"Shaw", "Age":29, "Interests":["AI", "Music", "Bread"]},
"Last_login":"2024-09-06",
"Membership_Tier":"Free"}

Hasta ahora hemos visto algunos tipos de datos y operaciones básicas de Python. Sin embargo, todavía nos falta una característica esencial: las variables.

Variables proporcionar una representación abstracta de una instancia de tipo de datos subyacentePor ejemplo, podría crear una variable llamada nombre_usuario, que representa una cadena que contiene mi nombre, “Shaw”. Esto nos permite escribir programas flexibles que no se limitan a valores específicos.

# creating a variable and printing it
user_name = "Shaw"
print(user_name)

#>> Shaw

Podemos hacer lo mismo con otros tipos de datos, por ejemplo, enteros y listas.

# defining more variables and printing them as a formatted string. 
user_age = 29
user_interests = ["AI", "Music", "Bread"]

print(f"{user_name} is {user_age} years old. His interests include {user_interests}.")

#>> Shaw is 29 years old. His interests include ['AI', 'Music', 'Bread'].

Ahora que nuestros fragmentos de código de ejemplo son cada vez más largos, veamos cómo crear nuestro primer script. Así es como lo hacemos escribir y ejecutar programas más sofisticados desde la línea de comandos.

Para ello, crea una nueva carpeta en tu ordenador. La llamaré mía. Guía de inicio rápido de Python. Si tienes un favorito IDE (por ejemplo, el entorno de desarrollo integrado)Utilízalo para abrir esta nueva carpeta y crear un nuevo archivo Python, por ejemplo, my-script.py. Allí, podemos escribir el programa ceremonial “Hola, mundo”.

# ceremonial first program
print("Hello, world!")

Si no tienes un IDE (no recomendado), puedes usar un editor de texto básico (por ejemplo, Text Edit de Apple o el Bloc de notas de Windows). En esos casos, puedes Abra el editor de texto y guarde un nuevo archivo de texto usando la extensión .py en lugar de .txt. Nota: Si usa TextEditor en Mac, es posible que necesite poner la aplicación en modo de texto simple a través de Formato > Convertir en texto simple.

Luego podemos ejecutar este script usando la Terminal (Mac/Linux) o el Símbolo del sistema (Windows) navegando a la carpeta con nuestro nuevo archivo Python y ejecutando el siguiente comando.

python my-script.py

¡Felicitaciones! Ejecutaste tu primer script de Python. No dudes en Expande este programa copiando y pegando los siguientes ejemplos de código y volviendo a ejecutar el script. para ver sus resultados.

Dos funcionalidades fundamentales de Python (o cualquier otro lenguaje de programación) son los bucles y las condiciones.

Bucles Permítanos ejecutar un fragmento particular de código varias vecesEl más popular es el bucle forque ejecuta el mismo código mientras itera sobre una variable.

# a simple for loop iterating over a sequence of numbers
for i in range(5):
print(i) # print ith element

# for loop iterating over a list
user_interests = ["AI", "Music", "Bread"]

for interest in user_interests:
print(interest) # print each item in list

# for loop iterating over items in a dictionary
user_dict = {"Name":"Shaw", "Age":29, "Interests":["AI", "Music", "Bread"]}

for key in user_dict.keys():
print(key, "=", user_dict[key]) # print each key and corresponding value

La otra función principal es condicionescomo las declaraciones if-else, que Permítanos programar la lógicaPor ejemplo, podríamos querer comprobar si el usuario es adulto o evaluar su sabiduría.

# check if user is 18 or older
if user_dict["Age"] >= 18:
print("User is an adult")

# check if user is 1000 or older, if not print they have much to learn
if user_dict["Age"] >= 1000:
print("User is wise")
else:
print("User has much to learn")

Es común que Utilice condicionales dentro de bucles for aplicar diferentes operaciones en función de condiciones específicas, como por ejemplo contar el número de usuarios interesados ​​en el pan.

# count the number of users interested in bread
user_list = [{"Name":"Shaw", "Age":29, "Interests":["AI", "Music", "Bread"]},
{"Name":"Ify", "Age":27, "Interests":["Marketing", "YouTube", "Shopping"]}]
count = 0 # intialize count

for user in user_list:
if "Bread" in user["Interests"]:
count = count + 1 # update count

print(count, "user(s) interested in Bread")

Funciones son Operaciones que podemos realizar en tipos de datos específicos.

Ya hemos visto una función básica imprimir()que se define para cualquier tipo de datos. Sin embargo, existen otras funciones útiles que vale la pena conocer.

# print(), a function we've used several times already
for key in user_dict.keys():
print(key, ":", user_dict[key])

# type(), getting the data type of a variable
for key in user_dict.keys():
print(key, ":", type(user_dict[key]))

# len(), getting the length of a variable
for key in user_dict.keys():
print(key, ":", len(user_dict[key]))
# TypeError: object of type 'int' has no len()

Vemos que, a diferencia de imprimir() y tipo(), largo() no está definido para todos los tipos de datos, por lo que genera un error cuando se aplica a un int. Hay varios otros funciones específicas del tipo como esto.

# string methods
# --------------
# make string all lowercase
print(user_dict["Name"].lower())

# make string all uppercase
print(user_dict["Name"].upper())

# split string into list based on a specific character sequence
print(user_dict["Name"].split("ha"))

# replace a character sequence with another
print(user_dict["Name"].replace("w", "whin"))

# list methods
# ------------
# add an element to the end of a list
user_dict["Interests"].append("Entrepreneurship")
print(user_dict["Interests"])

# remove a specific element from a list
user_dict["Interests"].pop(0)
print(user_dict["Interests"])

# insert an element into a specific place in a list
user_dict["Interests"].insert(1, "AI")
print(user_dict["Interests"])

# dict methods
# ------------
# accessing dict keys
print(user_dict.keys())

# accessing dict values
print(user_dict.values())

# accessing dict items
print(user_dict.items())

# removing a key
user_dict.pop("Name")
print(user_dict.items())

# adding a key
user_dict["Name"] = "Shaw"
print(user_dict.items())

Si bien las funciones principales de Python son útiles, el verdadero poder proviene de la creación funciones definidas por el usuario a realizar operaciones personalizadasAdemás, las funciones personalizadas nos permiten escribir código mucho más limpio. Por ejemplo, aquí se muestran algunos de los fragmentos de código anteriores reempaquetados como funciones definidas por el usuario.

# define a custom function
def user_description(user_dict):
"""
Function to return a sentence (string) describing input user
"""
return f'{user_dict["Name"]} is {user_dict["Age"]} years old and is interested in {user_dict["Interests"][0]}.'

# print user description
description = user_description(user_dict)
print(description)

# print description for a new user!
new_user_dict = {"Name":"Ify", "Age":27, "Interests":["Marketing", "YouTube", "Shopping"]}
print(user_description(new_user_dict))

# define another custom function
def interested_user_count(user_list, topic):
"""
Function to count number of users interested in an arbitrary topic
"""
count = 0

for user in user_list:
if topic in user["Interests"]:
count = count + 1

return count

# define user list and topic
user_list = [user_dict, new_user_dict]
topic = "Shopping"

# compute interested user count and print it
count = interested_user_count(user_list, topic)
print(f"{count} user(s) interested in {topic}")

Si bien podríamos implementar un programa arbitrario usando Python básico, esto puede consumir muchísimo tiempo para algunos casos de uso. Uno de los beneficios clave de Python es su Una comunidad de desarrolladores vibrante y un ecosistema sólido de paquetes de softwareCasi todo lo que quieras implementar con el núcleo de Python (probablemente) ya existe como biblioteca de código abierto.

Podemos instalar dichos paquetes usando El administrador de paquetes nativo de Python, pipPara instalar nuevos paquetes, ejecutamos comandos pip desde la línea de comandos. Aquí se explica cómo podemos instalar Numeroso, Una biblioteca esencial de ciencia de datos que implementa objetos y operaciones matemáticas básicas.

pip install numpy

Después de instalar numpy, podemos importarlo a un nuevo script de Python y usar algunos de sus tipos de datos y funciones.

import numpy as np

# create a "vector"
v = np.array([1, 3, 6])
print(v)

# multiply a "vector"
print(2*v)

# create a matrix
X = np.array([v, 2*v, v/2])
print(X)

# matrix multiplication
print(X*v)

El comando pip anterior agregó numpy a nuestro entorno Python base. Como alternativa, es una buena práctica crear los llamados entornos virtualesEstos son colecciones de bibliotecas de Python que se pueden intercambiar fácilmente para diferentes proyectos.

A continuación se explica cómo crear un nuevo entorno virtual llamado mi-env.

python -m venv my-env

Luego podremos activarlo.

# mac/linux
source my-env/bin/activate

# windows
.\my-env\Scripts\activate.bat

Finalmente, podemos instalar nuevas librerías, como numpy, usando pip.

pip install pip

Nota: Si estás usando Anaconda, consulta esto Hoja de trucos práctica para crear un nuevo entorno conda.

En IA y ciencia de datos se utilizan habitualmente otras bibliotecas. Aquí se muestra una Descripción general no exhaustiva de algunos útiles para crear proyectos de IA.

Una descripción general no exhaustiva de las bibliotecas de Python para la ciencia de datos y la inteligencia artificial. Imagen del autor.

Ahora que conocemos los conceptos básicos de Python, veamos cómo podemos usarlo para implementar un proyecto de IA simple. Aquí, utilizaré la API de OpenAI para crear un resumidor de artículos de investigación y un extractor de palabras clave.

Al igual que todos los demás fragmentos de esta guía, el código de ejemplo está disponible en Repositorio de GitHub.