零起点学习Python机器学习,可以按照以下步骤进行:
### 1. 环境搭建
- "安装Python":下载并安装Python,推荐使用Python 3.6或更高版本。
- "安装Jupyter Notebook":Jupyter Notebook是一个交互式计算环境,非常适合学习机器学习。
- "安装必要的库":使用pip安装以下库:`numpy`, `pandas`, `matplotlib`, `scikit-learn`, `tensorflow` 或 `pytorch`。
### 2. Python基础
- "变量和类型":学习Python中的变量、数据类型(如整数、浮点数、字符串、布尔值等)。
- "控制流":掌握条件语句(if-else)、循环(for、while)等。
- "函数":了解如何定义和调用函数。
- "列表、字典、元组":熟悉Python中的数据结构。
### 3. 机器学习基础
- "理解机器学习":学习机器学习的基本概念,如监督学习、无监督学习、强化学习等。
- "数据预处理":学习如何处理和清洗数据,包括缺失值处理、异常值处理、特征工程等。
- "模型选择":了解常见的机器学习模型,如线性回归、逻辑回归、决策树、支持向量机、神经网络等。
### 4. 使用scikit-learn
- "安装scikit-learn":
相关内容:
程序实现了一个完整的机器学习模型训练、保存、加载和评估流程,主要功能包括:
- 数据准备:通过自定义函数ai_dat_rd从特定路径前缀加载训练集和测试集定义特征列('AT','V','AP','RH')和目标列('PE')
- 模型训练:使用支持向量机(SVM)算法进行训练通过joblib将训练好的模型保存到指定路径('tmp/ccpp_svm.pkl')
- 模型加载与预测:从文件加载已保存的模型对测试集数据进行预测,存储真实值和预测结果
- 评估与输出:计算预测准确率支持调试模式,可将预测结果保存为CSV文件记录并显示各阶段执行时间
程序采用模块化设计,核心功能通过自定义函数ai_f_mxWr(模型训练保存)和mx_fun8mx(预测评估)实现,便于扩展其他算法。整体流程体现了机器学习从训练到部署的完整生命周期管理。
# 导入必要的库
import arrow # 时间处理
import pandas as pd # 数据处理
import sklearn # 机器学习库
from sklearn import datasets, linear_model # 数据集和线性模型
# 导入数据集划分工具(新版本路径)
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression # 线性回归
from sklearn import metrics # 评估指标
# 用于模型持久化(已弃用,建议使用joblib直接导入)
from sklearn.externals import joblib
from sklearn.model_selection import cross_val_predict # 交叉验证预测
# 导入自定义模块
import zsys # 系统配置
import ztools as zt # 通用工具
import ztools_str as zstr # 字符串处理
import ztools_web as zweb # 网页操作
import ztools_data as zdat # 数据处理
import zpd_talib as zta # pandas和talib工具
import ztop_ai as zai # 人工智能
# 主程序部分
# 1. 数据准备
fsr0 = 'dat/ccpp_' # 数据文件路径前缀
print('#1', fsr0)
xlst, ysgn = , 'PE' # 特征列和目标列
# 调用自定义函数读取训练测试数据
x_train, x_test, y_train, y_test = zai.ai_dat_rd(fsr0)
# 设置模型参数
funSgn, ftg = 'svm', 'tmp/ccpp_svm.pkl' # 算法名称(SVM)和模型保存路径
# 2. 模型训练与保存
print('
#2,mx_svm.wr')
tim0 = arrow.now() # 记录开始时间
# 调用自定义函数训练并保存SVM模型
zai.ai_f_mxWr(ftg, funSgn, x_train, y_train)
tn = zt.timNSec('', tim0, True) # 计算并打印耗时
# 3. 模型加载
tim0 = arrow.now()
print('
#3,mx_svm.rd')
mx = joblib.load(ftg) # 从文件加载模型
tn = zt.timNSec('', tim0, True) # 计算并打印耗时
# 4. 模型评估
print('
#4,mx_svm')
tim0 = arrow.now()
# 调用自定义函数评估模型性能
zai.mx_fun8mx(mx, x_test, y_test)
tn = zt.timNSec('', tim0, True) # 计算并打印耗时
# 完成提示
print('
ok!')
# 自定义函数:训练并保存模型
def ai_f_mxWr(ftg, funSgn, x_train, y_train):
# 1. 获取模型训练函数
mx_fun = mxfunSgn # 从字典获取对应算法
# 2. 训练模型
mx = mx_fun(x_train.values, y_train.values) # 训练模型
# 3. 保存模型到文件
joblib.dump(mx, ftg) # 持久化模型
# 自定义函数:使用模型进行预测和评估
def mx_fun8mx(mx, x_test, y_test, yk0=5, fgInt=False, fgDebug=False):
# 1. 复制测试集数据
df9 = x_test.copy() # 创建测试数据副本
# 2. 进行预测
y_pred = mx.predict(x_test.values) # 使用模型预测
# 存储真实值和预测值
df9, df9 = y_test, y_pred
# 3. 整数处理(如果需要)
if fgInt:
df9 = df9 # 备份预测值
df9 = round(df9).astype(int) # 四舍五入为整数
# 4. 计算准确率
dacc = ai_acc_xed(df9, yk0, fgDebug) # 调用评估函数
# 5. 调试输出(如果需要)
if fgDebug:
# 保存预测结果到CSV
df9.to_csv('tmp/df9_pred.csv', index=False)
# 6. 返回结果
return dacc, df9 # 返回准确率和预测数据
runfile('D:/zwPython/zwrk/4_机器学习/zai407_mx_04.py', wdir='D:/zwPython/zwrk/4_机器学习')
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,mx_svm.wr
d:zwpythonpy37python-3.7.6.amd64libsite-packagessklearnutilsvalidation.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)
21.07 s, 10:39:18 ,t0, 10:38:57
#3,mx_svm.rd
0.01 s, 10:39:18 ,t0, 10:39:18
#4,mx_svm
2.01 s, 10:39:20 ,t0, 10:39:18
ok!