No soy profesional, pero tengo entendido que hacer el llamado a la predicción directamente desde Flask es mala práctica, porque consume recursos de forma innecesariamente.
por ejemplo cada vez que se ejecuta la lÃnea sc = smartcities() estás cargando un modelo nuevo el costo de esa sola lÃnea en producción es muy alto, teniendo en cuenta que entre más existoso sea tu producto (más llamadas al servicio) mayor es el costo computacional, esto lo puedes resolver sacando esta lÃnea del método y convertirlo en atributo de la clase, por otro lado llamar al método predict() del modelo no es eficiente en producción, TensorFlow recomienta usar TensorFlow Serving (Docker) o incluso en el mismo GCP puedes gestionar tus modelos sin siquiera manejar Docker, lo que es mucho más eficiente y escalable.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?