零起点Python机器学习快速入门-8-5-批量调用机器学习

零起点Python机器学习快速入门-8-5-批量调用机器学习

编程文章jaq1232025-05-09 6:12:289A+A-

主要实现了对联合循环电厂(CCPP)数据集使用多种机器学习模型进行批量训练、预测和评估的功能。具体步骤如下:

  1. 数据读取:定义了文件路径前缀fsr0,通过调用zai.ai_dat_rd函数,从相应路径读取 CCPP 数据集的训练集和测试集的特征及目标变量数据,并对目标变量进行了缩放和取整处理。
  2. 模型批量处理:定义了两个模型标识列表mxlst1和mxlst2,分别包含不同数量和种类的模型标识。调用zai.mx_funlst函数,分别传入mxlst1和mxlst2以及训练集和测试集数据,对列表中的每个模型标识,调用mx_fun010函数进行模型的训练、预测和评估,并记录每个模型处理的时间。
  3. 函数定义:ai_dat_rd函数用于读取数据集文件,对目标变量进行处理,并可选择打印数据集尾部数据,最后返回处理后的数据集。mx_funlst函数用于遍历模型标识列表,对每个模型标识调用mx_fun010函数进行相关操作,并记录时间。

通过以上步骤,代码实现了对多种机器学习模型在 CCPP 数据集上的性能评估,方便比较不同模型的效果和处理时间。

import os,sys,re
# 导入os模块用于进行操作系统相关的操作,如文件和目录的处理;sys模块用于访问Python解释器的一些变量和函数;re模块用于正则表达式操作,常用于字符串的匹配、替换等。
import arrow,bs4
# 导入arrow模块用于方便地处理日期和时间相关的任务;bs4是BeautifulSoup库,用于解析HTML和XML文档,以便提取其中的数据。
import pandas as pd
# 导入pandas库,使用别名pd,主要用于数据处理和分析,如数据的读取、清洗、转换、存储等。

import requests
# 导入requests库,用于发送HTTP请求,获取网页内容,是进行网络数据采集的常用工具。
from bs4 import BeautifulSoup 
# 从bs4库中导入BeautifulSoup类,用于对获取到的HTML或XML文档进行解析,以提取所需信息。

#
import zsys
# 导入自定义模块zsys,可能包含一些与系统相关的工具函数或配置信息。
import ztools as zt
# 导入自定义模块ztools并使用别名zt,可能包含一些通用的工具函数,用于辅助代码的执行。
import ztools_str as zstr
# 导入自定义模块ztools_str并使用别名zstr,可能包含一些字符串处理相关的工具函数。
import ztools_web as zweb
# 导入自定义模块ztools_web并使用别名zweb,可能包含一些与网络操作相关的工具函数。
import ztools_data as zdat
# 导入自定义模块ztools_data并使用别名zdat,可能包含一些数据处理相关的工具函数。
import ztop_ai as zai
# 导入自定义模块ztop_ai并使用别名zai,可能包含一些人工智能相关的工具函数,如机器学习模型的训练和评估函数。
import zpd_talib as zta
# 导入自定义模块zpd_talib并使用别名zta,可能包含一些与pandas和talib(技术分析库)相关的工具函数。
#
import tfb_sys as tfsys
# 导入自定义模块tfb_sys并使用别名tfsys,可能包含一些与tfb系统相关的工具函数或配置信息。
import tfb_tools as tft
# 导入自定义模块tfb_tools并使用别名tft,可能包含一些tfb相关的工具函数。
import tfb_strategy as tfsty
# 导入自定义模块tfb_strategy并使用别名tfsty,可能包含一些tfb策略相关的函数。
import tfb_backtest as tfbt
# 导入自定义模块tfb_backtest并使用别名tfbt,可能包含一些tfb回测相关的函数。

#
#-----------------------


#1 
mxlst1=['line','knn','bayes']
# 定义一个列表mxlst1,包含三个字符串,可能表示三种不同的机器学习模型的标识。
mxlst2=['line','log','bayes','knn','forest','dtree','svm','mlp','mlpreg']   
# 定义一个列表mxlst2,包含九个字符串,可能表示九种不同的机器学习模型的标识。
#'gbdt','svmcr'

fsr0='dat/ccpp_'
# 定义文件路径前缀,用于后续读取数据集文件。
print('#1',fsr0)
x_train, x_test, y_train, y_test=zai.ai_dat_rd(fsr0)
# 调用zai模块中的ai_dat_rd函数,传入文件路径前缀fsr0,读取训练集和测试集的特征及目标变量数据,并将其分别赋值给x_train, x_test, y_train, y_test。

#2
print('\n#2,mxlst1')
# 打印提示信息,表示开始处理mxlst1中的模型。
zai.mx_funlst(mxlst1,x_train, x_test, y_train, y_test)    
# 调用zai模块中的mx_funlst函数,传入mxlst1和训练集、测试集的数据,对mxlst1中的每个模型进行训练、预测和评估。

#3
print('\n#3,mxlst2')
# 打印提示信息,表示开始处理mxlst2中的模型。
zai.mx_funlst(mxlst2,x_train, x_test, y_train, y_test)    
# 调用zai模块中的mx_funlst函数,传入mxlst2和训练集、测试集的数据,对mxlst2中的每个模型进行训练、预测和评估。

  
#-----------------------    
print('\nok!')
 #数据读取函数,新版本名称为ai_f_datRd     
def ai_dat_rd(fsr0,k0=1,fgPr=False):    
    # 定义函数ai_dat_rd,用于读取数据集文件。
    # 参数fsr0:文件路径前缀。
    # 参数k0:用于对目标变量进行缩放的系数,默认为1。
    # 参数fgPr:是否打印数据集尾部数据的标志,默认为False。

    #1
    fss=fsr0+'xtrain.csv';x_train=pd.read_csv(fss,index_col=False);print(fss)
    # 构建训练集特征数据的文件路径,读取该文件并赋值给x_train,不将第一列作为索引,并打印文件路径。
    fss=fsr0+'xtest.csv';x_test=pd.read_csv(fss,index_col=False);print(fss)
    # 构建测试集特征数据的文件路径,读取该文件并赋值给x_test,不将第一列作为索引,并打印文件路径。
    fss=fsr0+'ytrain.csv';y_train=pd.read_csv(fss,index_col=False);print(fss)
    # 构建训练集目标变量数据的文件路径,读取该文件并赋值给y_train,不将第一列作为索引,并打印文件路径。
    fss=fsr0+'ytest.csv';y_test=pd.read_csv(fss,index_col=False);print(fss)
    # 构建测试集目标变量数据的文件路径,读取该文件并赋值给y_test,不将第一列作为索引,并打印文件路径。

    #2
    ysgn=y_train.columns[0];#print('y',ysgn)
    # 获取训练集目标变量的列名。
    y_train[ysgn]=round(y_train[ysgn]*k0).astype(int)
    # 将训练集目标变量乘以缩放系数k0,四舍五入后转换为整数类型。
    y_test[ysgn]=round(y_test[ysgn]*k0).astype(int)
    # 将测试集目标变量乘以缩放系数k0,四舍五入后转换为整数类型。

    #3
    if fgPr:
        # 如果fgPr为True
        print('\nx_train');print(x_train.tail())
        # 打印训练集特征数据的最后几行。
        print('\nx_test');print(x_test.tail())
        # 打印测试集特征数据的最后几行。
        print('\ny_train');print(y_train.tail())
        # 打印训练集目标变量数据的最后几行。
        print('\ny_test');print(y_test.tail())        
        # 打印测试集目标变量数据的最后几行。

    #4
    return  x_train, x_test, y_train, y_test       
    # 返回读取并处理后的训练集和测试集的特征及目标变量数据。

        #极宽机器学习批量调用函数    
def mx_funlst(funlst,x_train, x_test, y_train, y_test,yk0=5,fgInt=False):
    # 定义函数mx_funlst,用于批量调用不同的机器学习模型进行训练、预测和评估。
    # 参数funlst:包含模型标识字符串的列表。
    # 参数x_train:训练集的特征数据。
    # 参数x_test:测试集的特征数据。
    # 参数y_train:训练集的目标变量数据。
    # 参数y_test:测试集的目标变量数据。
    # 参数yk0:误差阈值,用于计算准确率时判断误差是否在可接受范围内,默认为5。
    # 参数fgInt:是否对预测结果进行取整操作的标志,默认为False。

    for funsgn in funlst:
        # 遍历funlst列表中的每个模型标识
        print('\n',funsgn)
        # 打印当前模型标识
        tim0=arrow.now()
        # 记录当前时间
        mx_fun010(funsgn,x_train, x_test, y_train, y_test,yk0,fgInt)
        # 调用mx_fun010函数,传入模型标识、训练集和测试集数据、误差阈值等参数,进行模型的训练、预测和评估。
        zt.timNSec('',tim0,True)
        # 调用zt模块中的timNSec函数,计算从记录时间到当前的时间差并打印。
runfile('D:/zwPython/zwrk/4_零起点Python机器学习快速入门/zai405_mx_02.py', wdir='D:/zwPython/zwrk/4_零起点Python机器学习快速入门')
Reloaded modules: zsys, cpuinfo, ztools, ztools_str, ztools_web, ztools_data, ztop_ai, zpd_talib, tfb_sys, tfb_tools, tfb_strategy, tfb_backtest
#1 dat/ccpp_
dat/ccpp_xtrain.csv
dat/ccpp_xtest.csv
dat/ccpp_ytrain.csv
dat/ccpp_ytest.csv

#2,mxlst1

 line
@mx:mx_sum,kok:99.96%
0.01 s, 20:52:17 ,t0, 20:52:17

 knn
@mx:mx_sum,kok:99.50%
0.08 s, 20:52:17 ,t0, 20:52:17

 bayes
@mx:mx_sum,kok:99.83%
0.02 s, 20:52:17 ,t0, 20:52:17

#3,mxlst2

 line
@mx:mx_sum,kok:99.96%
0.01 s, 20:52:17 ,t0, 20:52:17

 log
D:\zwPython\zwrk\4_零起点Python机器学习快速入门\ztop_ai.py:187: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  mx.fit(train_x, train_y)
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\sklearn\utils\validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\sklearn\utils\validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
  extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\sklearn\utils\validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
D:\zwPython\zwrk\4_零起点Python机器学习快速入门\ztop_ai.py:187: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  mx.fit(train_x, train_y)
D:\zwPython\zwrk\4_零起点Python机器学习快速入门\ztop_ai.py:197: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().
  mx.fit(train_x, train_y)
@mx:mx_sum,kok:99.46%
2.62 s, 20:52:19 ,t0, 20:52:17

 bayes
@mx:mx_sum,kok:99.83%
0.02 s, 20:52:19 ,t0, 20:52:19

 knn
@mx:mx_sum,kok:99.50%
0.07 s, 20:52:19 ,t0, 20:52:19

 forest
@mx:mx_sum,kok:99.83%
0.21 s, 20:52:20 ,t0, 20:52:19

 dtree
@mx:mx_sum,kok:99.71%
0.06 s, 20:52:20 ,t0, 20:52:20

 svm
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\sklearn\utils\validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
@mx:mx_sum,kok:58.65%
7.85 s, 20:52:28 ,t0, 20:52:20

 mlp
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py:934: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
@mx:mx_sum,kok:99.96%
6.61 s, 20:52:34 ,t0, 20:52:28

 mlpreg
d:\zwpython\py37\python-3.7.6.amd64\lib\site-packages\sklearn\neural_network\_multilayer_perceptron.py:1342: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
@mx:mx_sum,kok:99.96%
2.38 s, 20:52:37 ,t0, 20:52:34

ok!
点击这里复制本文地址 以上内容由jaq123整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

苍茫编程网 © All Rights Reserved.  蜀ICP备2024111239号-21