【AutoGluon_04】从HeidiSql数据库读取数据并用autogluon训练好的模型运行

from autogluon.tabular import TabularDataset, TabularPredictor
import datetime
import pymysql
import pandas as pd
import autogluon as ag

predictorBS = TabularPredictor.load("bugStateModel")
predictor14 = TabularPredictor.load("day14_model")
predictor30 = TabularPredictor.load("day30_model")

上面三个是用autogluon已经训练好的模型。如何训练模型?->点击此处,查看博客

【AutoGluon_04】从HeidiSql数据库读取数据并用autogluon训练好的模型运行_第1张图片
python连接heidisql数据库:

# 定义查询函数
def SQLQuery(strsql):
    try:
        db = pymysql.connect(host='......',
                             user='.......',
                             password='......',
                             database='.......',
                             charset='utf8',  # mysql字符格式
                             cursorclass=pymysql.cursors.DictCursor)
        cursor = db.cursor()
        cursor.execute(strsql)
        results = cursor.fetchall()
        return results

    except pymysql.Error as err:
        print(err)

    finally:
        cursor.close()
        db.close()


# 定义SQL命令函数(create、insert、delete、update)
def SQLCommand(sql):
    try:
        db = pymysql.connect(host='........',
                             user='........',
                             password='..........',
                             database='.........',
                             charset='utf8',  # mysql字符格式
                             cursorclass=pymysql.cursors.DictCursor)
        cursor = db.cursor()
        cursor.execute(sql);
        # 事务提交
        db.commit()
        return True;

    except pymysql.Error as err:
        print(err)

    finally:
        cursor.close()
        db.close()

查询数据库中的数据,并转换成dataframe的形式:

strsql = """select ID,product,User
            from info 
            where bugState = 'NEW'
        """
results = SQLQuery(strsql)
bug_yc = pd.DataFrame(results)

用训练好的模型进行预测:

test_data = TabularDataset(bug_yc)
D14_pred = predictor14.predict(test_data)
D30_pred = predictor30.predict(test_data)
BS_pred = predictorBS.predict(test_data)
# 进行预测
D30_pred_proba = predictor30.predict_proba(test_data)
D14_pred_proba = predictor14.predict_proba(test_data)
BS_pred_proba = predictorBS.predict_proba(test_data)

将数据合并
在这里插入图片描述

# 构建数据库连接,将merged_df写回数据库
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://user:password@host:端口号/database", encoding='utf-8', echo=True)
con = engine.connect()  # 创建连接
merged_df.to_sql(name='info', con=con, if_exists='replace', index=False)

其中上面代码当中的user、password、host、端口号、database(数据库名称) 需要更改为HeidiSQL对应名称。

注意,这里如果直接使用if_exists='replace'的话,会将修改后的python的数据直接替换sql当中的整张表,因此不能直接使用replace。而是先将修改的数据与原始数据进行合并,之后再写回数据库。

在这里插入图片描述

【AutoGluon_04】从HeidiSql数据库读取数据并用autogluon训练好的模型运行_第2张图片

你可能感兴趣的:(【Phthon】,数据库)