В этом руководстве мы узнаем, как создавать, обучать и запрашивать модель машинного обучения, используя библиотеку Python под названием SQLAlchemy. SQLAlchemy — самая популярная библиотека с открытым исходным кодом для работы с реляционными базами данных от Python. Это одна из библиотек ORM, предоставляющая интерфейс для использования объектно-ориентированного программирования для взаимодействия с базой данных. MindsDB — это инструмент машинного обучения с открытым исходным кодом, который предоставляет возможности прогнозирования для вашей базы данных. В этом уроке мы будем использовать набор данных Kaggle. diamond.csv предсказать цену бриллиантов.

К этому учебнику предъявляются следующие требования:

  • питон
  • SQLAlchemy
  • Установка MindsDB через pip
  • pymysql
  • Любая IDE на ваш выбор, предпочтительно код VS.

Во-первых, нам нужно загрузить наш набор данных в облачный интерфейс MindsDB, следуя этому руководству, чтобы узнать, как загрузить в интерфейс. здесьа затем вы можете скачать diamonds.csv набор данных на kaggle здесь

Теперь перейдите в рабочий каталог, затем создайте main.py файл. Чтобы создать соединение с базой данных, просто следуйте это руководство как это сделать с помощью Sqlachemy и pymysql.

Когда вы закончите, у вас должно получиться что-то вроде этого:

from sqlalchemy import create_engine

user = "teslimodumuyiwa@gmail.com"
password = "MindsDB Cloud Password"
host = "cloud.mindsdb.com"
port = 3306
database = ""

def establish_connection():
        engine =  create_engine(url=f"mysql+pymysql://{user}:{password}@{host}:{port}/{database}")
        return engine
try:
        engine = establish_connection()
        engine.connect()
        print("Connection to the database is established")
except Exception as e:
        print("Couldn't connect to the database:\n",e)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Вы также можете проверить успешность подключения, запустив файл python с терминала, используя python main.py

Подключение к SQL Alchemy выполнено успешно

Чтобы выполнить дальнейшие проверки вашего соединения, вы можете выполнить запросы к базе данных, чтобы узнать, возвращает ли она какие-либо данные.

from sqlalchemy import create_engine

user = "teslimodumuyiwa@gmail.com"
password = "Your MindsDB Cloud Password"
host = "cloud.mindsdb.com"
port = 3306
database = ""

def establish_connection():
        engine =  create_engine(url=f"mysql+pymysql://{user}:{password}@{host}:{port}/{database}")
        return engine
try:
        engine = establish_connection()
        with engine.connect() as eng:
                query = eng.execute("SELECT * FROM files.diamonds LIMIT 5;")
                for row in query:
                        print(row)
except Exception as e:
        print("Couldn't connect to the database:\n",e)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Ожидаемый результат:

Вывод таблицы запросов в терминале

Сделав это, мы теперь можем обучить наш предсказатель машинного обучения. Для этого мы будем использовать CREATE PREDICTOR синтаксис, где мы бы указали, какой запрос мы будем обучать FROM и что делать PREDICT.

Путем реализации следующего кода для прогнозирования цены нашего бриллианта:

from sqlalchemy import create_engine

user = "teslimodumuyiwa@gmail.com"
password = "Your MindsDB Cloud Password"
host = "cloud.mindsdb.com"
port = 3306
database = ""

def establish_connection():
        engine =  create_engine(url=f"mysql+pymysql://{user}:{password}@{host}:{port}/{database}")
        return engine
try:
        engine = establish_connection()
        with engine.connect() as eng:
                query = eng.execute("CREATE PREDICTOR mindsdb.diamond_price FROM files (SELECT * FROM diamonds) PREDICT price;")

except Exception as e:
        print("Couldn't connect to the database:\n",e)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Мы можем проверить статус модели с помощью приведенного ниже синтаксиса. Если запрос возвращает значение «Завершено», модель готова к использованию, в противном случае подождите, если она вернет «Обучение».

query = eng.execute("SELECT status FROM mindsdb.predictors WHERE name="diamond_price";")
                for i in query:
                        print(i)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Если обучение не завершено, вы должны распечатать это в своем терминале:

('training',)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Если обучение завершено, вы должны распечатать это в своем терминале:

('complete',)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Теперь, когда у нас есть модель прогнозирования, мы можем просто выполнить несколько простых операторов SQL-запроса, чтобы предсказать целевое значение на основе параметров функции.


Делаем один прогноз

Вы можете делать прогнозы, запрашивая предиктор, как если бы это была таблица. [SELECT](https://docs.mindsdb.com/sql/api/select/) оператор позволяет делать прогнозы для diamonds по выбранному параметру объекта.

// main.py
query = eng.execute("SELECT price, price_explain FROM mindsdb.diamond_price WHERE carat = 0.23 AND depth = 56.9;")
                for i in query:
                        print(i)
Войти в полноэкранный режим

Выйти из полноэкранного режима

Ожидаемый результат должен быть:

Одно предсказание

Теперь давайте сделаем массовые прогнозы или множественные прогнозы, чтобы предсказать price присоединив нашу таблицу к нашей модели.

bulk = text("SELECT t.price AS real_price, m.price_explain AS explained_price, t.carat,  t.cut, t.color, t.depth, t.table FROM files.diamonds AS t JOIN mindsdb.diamond_price AS m LIMIT 10;")
                query = eng.execute(bulk)
                for i in query:
                        print(i)
Войти в полноэкранный режим

Выйти из полноэкранного режима

При выполнении вы должны распечатать это в своем терминале

Массовое прогнозирование на MindsDB

Получайте удовольствие, пробуя это сами!

Поставьте лайк или оставьте комментарий, если этот урок был полезен