Programando con chatGPT
Recientemente, descubrí ChatGPT , un bot de chat desarrollado por OpenAI que es capaz de responder a los usuarios de una manera notablemente humana. chatGPT no solo puede dar respuestas usando texto, sino que también puede pedirle que escriba código. De hecho, una conocida me dijo recientemente que usó chatGPT para hacer algunos de sus deberes para su maestría en ciencia de datos urbanos, tanto para escribir ensayos como para escribir código.
Como alguien que pasa la mayor parte de sus horas de trabajo programando, tener un bot de chat escribiendo código para mí suena increíblemente emocionante (¡piense en todas las horas que podría ahorrar!) y un poco aterrador (¿significa esto que me quedaré sin trabajo en unos años?) . Decidí probar las capacidades de codificación de chat GPT, específicamente para el análisis de datos espaciales con Python. Este artículo muestra algunos primeros resultados y mis primeros pensamientos.
Para este artículo, le pedí a Chat GPT que hiciera una tarea típica que tengo que hacer a menudo: convertir un polígono (podría tener la forma de un país, una ciudad o un municipio) en una cuadrícula de celdas donde las estadísticas se pudieran agregar fácilmente.
Antes de comenzar, ¿qué es Chat GPT en realidad? Le hice esta pregunta al propio chatbot, y esta es su respuesta:
GPT (abreviatura de "Transformador de preentrenamiento generativo") es un tipo de modelo de lenguaje desarrollado por OpenAI. Es una red neuronal entrenada para generar texto similar al humano al predecir la siguiente palabra en una secuencia dado un gran conjunto de datos de ejemplos. Chat GPT hace referencia al uso de este modelo en aplicaciones de chat, donde se puede utilizar para generar respuestas a los mensajes de los usuarios en tiempo real. Está diseñado para poder mantener una conversación entendiendo el contexto de la conversación y generando respuestas apropiadas.
¡Empecemos!
Primero, le pedí a Chat GPT, "hacer una cuadrícula de geodataframe dentro de un polígono", y esta fue su respuesta:
import geopandas as gpd
# create a polygon
polygon = gpd.GeoDataFrame({'geometry': gpd.GeoSeries([Polygon([(0,0), (0,1), (1,1), (1,0)])])})
# create a grid of geodataframe within the polygon
grid = gpd.gridify(polygon, cell_size=0.1, geometry='Polygon')
# plot the grid
grid.plot()
Sin embargo, hay otro módulo de python llamado gridify, por lo que tal vez el chatbot se confundió con eso, vea el enlace aquí . También olvidó importar el shapelyatributo Polygonantes de usarlo, pero eso fue solo un problema menor.
Lo interesante del chat GPT es que puedes tener una conversación continua con él, y recordará tus interacciones anteriores. Así que hice una pregunta de seguimiento para intentar obtener un código que funcionara. Así que pregunté: "Probé este código pero obtuve el error "el módulo 'geopandas' no tiene el atributo 'gridify'". ¿puedes arreglarme esto?”, y esta fue su respuesta:
Si bien el bot afirmó que shapelytiene el atributo gridify, descubrí que no era cierto cuando ejecuté el código. shapelytampoco tiene el atributo gridify.
Así que hice otra pregunta de seguimiento: "Probé el código pero recibí el mensaje de error "No hay ningún módulo llamado 'shapely.gridify'". ¿Alguna otra opción?
Luego, el bot procedió a decirme con confianza que gridify ES parte de la shapelybiblioteca, pero que se eliminó en versiones más nuevas; que yo sepa, eso tampoco es cierto.
El código que escribió produjo... un bucle cuadrado, que está lejos de lo que estaba buscando. La verdad es que me pareció bastante divertido.
Segundo intento: ¡funcionó!
Mi primera conversación con el chat GPT claramente no iba muy bien, así que decidí comenzar de nuevo y hacer mi pregunta más claramente. Le pregunté, "código python para generar una cuadrícula de celdas como un geodataframe", y aquí está su respuesta:
import geopandas as gpd
from shapely.geometry import Polygon
# Define the bounds of the grid
min_x, min_y = 0, 0
max_x, max_y = 10, 10
# Define the size of the cells in the grid
cell_width, cell_height = 1, 1
# Define the projection to use
crs = "EPSG:4326" # WGS84
# Initialize an empty list to store the grid cells
grid_cells = []
# Iterate over the bounds of the grid and create a Polygon object for each cell
for x in range(min_x, max_x, cell_width):
for y in range(min_y, max_y, cell_height):
# Define the coordinates of the cell
cell_coords = [(x, y), (x+cell_width, y), (x+cell_width, y+cell_height), (x, y+cell_height)]
# Create the Polygon object
cell = Polygon(cell_coords)
# Add the Polygon to the list
grid_cells.append(cell)
# Create the GeoDataFrame
gdf = gpd.GeoDataFrame(geometry=grid_cells, crs=crs)
# Visualize the grid
gdf.plot()
Entonces, chat GPT es capaz de escribir código simple en Python para la ciencia de datos espaciales, siempre que se le dé una pregunta clara y bien escrita.
Pensamientos finales
Este breve experimento con chatGPT destaca dos cosas interesantes sobre el chatbot y quizás la IA en general.
En primer lugar, podemos ver que la IA puede generar artefactos que pueden parecer legítimos a primera vista, pero que resultan ser incorrectos con una investigación más profunda. Un ejemplo común son las imágenes de caras generadas por IA , donde las caras pueden parecer realistas a primera vista, pero resultan tener extrañas anomalías cuando se miran más de cerca.
Al escribir nuestro código, chat GPT hizo algo similar al crear un geopandasmódulo llamado gpd.gridify(): un módulo que parece tener sentido, pero que en realidad no existe.
En segundo lugar, el propósito de chatGPT (y quizás de otros bots de IA) no es presentar información precisa, sino lo que parece ser información precisa. De acuerdo con la página de preguntas frecuentes de chatGPT , el modelo está entrenado para imitar el habla humana tanto como sea posible, y no para brindarnos la verdad.
Es por eso que afirma con tanta confianza que gridifyes parte de la geopandasbiblioteca y, cuando se prueba lo contrario, afirma que gridifyes parte de shapelyla biblioteca. Ninguna de estas afirmaciones es cierta, pero tal vez ese no sea el punto de chatGPT.
¿Que sigue?
Definitivamente estoy muy entusiasmado con las capacidades de chatGPT y lo usaré para trabajar en otras tareas de codificación más difíciles en el futuro.
También descubrí que es bastante útil para generar ideas: pedí ideas para proyectos de ciencia de datos para la sustentabilidad + ciencia de datos espaciales, y aunque no produjo ideas que fueran novedosas para mí, proporcionó una muy buena visión general de la sustentabilidad. / mundo de la ciencia de datos espaciales, que me imagino podría ser bastante útil para alguien nuevo en el campo.
Aquí está la respuesta de chatGPT cuando le pedí ideas de proyectos:
- Planificación de transporte sostenible: desarrolle una herramienta que ayude a los planificadores a optimizar las redes de transporte público para reducir las emisiones de gases de efecto invernadero y mejorar la accesibilidad. Esto podría implicar el análisis de patrones de demanda de viajes, la integración con fuentes de datos de transporte público y la implementación de algoritmos para el diseño y enrutamiento de redes.
- Planificación sostenible del uso de la tierra: desarrolle una herramienta que ayude a los planificadores a optimizar los patrones de uso de la tierra para minimizar los impactos ambientales y mejorar la sostenibilidad. Esto podría implicar el análisis de patrones de uso y cobertura de la tierra, la integración con fuentes de datos de uso de la tierra y la implementación de algoritmos para la asignación y optimización del uso de la tierra.
- Evaluación de impacto ambiental: desarrollar una herramienta que ayude a las organizaciones a evaluar los impactos ambientales de sus operaciones o proyectos. Esto podría implicar la integración con fuentes de datos sobre indicadores ambientales, como la calidad del aire y el agua, y la implementación de algoritmos para la evaluación y predicción del impacto.
- Selección de sitios de energía renovable: Desarrolle una herramienta que ayude a las organizaciones a identificar sitios adecuados para la generación de energía renovable, como parques solares o eólicos. Esto podría implicar el análisis de patrones de insolación solar, la velocidad del viento y otros factores relevantes, y la integración con fuentes de datos sobre el uso del suelo y la topografía.
- Optimización de la cadena de suministro sostenible: Desarrolle una herramienta que ayude a las organizaciones a optimizar sus cadenas de suministro para minimizar los impactos ambientales y mejorar la sostenibilidad. Esto podría implicar el análisis de patrones de flujos de materiales y energía, la integración con fuentes de datos de la cadena de suministro y la implementación de algoritmos para la optimización y la evaluación de riesgos.
Agradecimientos
Me gustaría agradecer a mis amigos Alexey Ilyshkin y Alexis Oh por compartir conmigo sus opiniones sobre chatGPT e IA. Nuestras cubiertas se integraron en la sección de 'pensamientos finales' de este artículo.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































