机器学习进阶必备||10 个高效 Python 工具包完全指南

文摘   2024-11-18 07:12   北京  

1. 数据质量管理——CleanLab

  • GitHub: https://github.com/cleanlab/cleanlab
  • 功能: 自动检测和清理数据集中的问题
  • 特点: 特别适合机器学习数据集的标签和数据质量检查
  • 优势: 自动化程度高,可以节省大量手动检查数据的时间
  • 安装: pip install cleanlab
  • 代码示例
from cleanlab.classification import CleanLearning
from sklearn.linear_model import LogisticRegression

# 初始化清洗器
cl = CleanLearning(clf=LogisticRegression())
# 训练并识别问题数据
cl.fit(X_train, y_train)
# 查找标签问题
issues = cl.find_label_issues()

# 高级用法
# 获取置信度矩阵
confident_joint = cl.confident_joint
# 获取噪声标签的概率
label_quality_scores = cl.get_label_quality_scores()

2. 快速模型评估—— LazyPredict

  • PyPI: https://pypi.org/project/lazypredict/
  • 功能: 同时训练和评估多个机器学习模型
  • 特点: 支持回归和分类任务
  • 优势: 只需几行代码就能比较多个模型的性能
  • 安装: `pip install lazypredict
  • 代码示例:`
from lazypredict.Supervised import LazyRegressor, LazyClassifier

# 回归任务
reg = LazyRegressor(verbose=0, ignore_warnings=True)
models_train, predictions_train = reg.fit(X_train, X_test, y_train, y_test)

# 分类任务
clf = LazyClassifier(verbose=0, ignore_warnings=True)
models_train, predictions_train = clf.fit(X_train, X_test, y_train, y_test)

# 查看模型性能比较
print(models_train)

3. 智能数据可视化——Lux

  • GitHub: https://github.com/lux-org/lux
  • 功能: 快速数据可视化和分析
  • 特点: 提供简单高效的数据探索方式
  • 优势: 自动推荐合适的可视化方式
  • 安装: pip install lux-api
  • 代码示例
import lux
import pandas as pd

# 基础使用
df = pd.read_csv("dataset.csv")
df.visualize() # 自动生成可视化建议

# 高级用法
# 指定感兴趣的变量
df.intent = ["column_A""column_B"]
# 设置可视化偏好
df.set_intent_as_vis(["Correlation""Distribution"])

4. 智能导入工具——PyForest

  • PyPI: https://pypi.org/project/pyforest/
  • 功能: 一键导入数据科学相关的库
  • 特点: 节省编写导入语句的时间
  • 优势: 包含了常用的数据科学库
  • 安装: pip install pyforest
  • 代码示例
from pyforest import *

# 使用时自动导入
df = pd.read_csv("data.csv")  # pandas自动导入
plt.plot([123])  # matplotlib自动导入

# 查看已导入的模块
active_imports()

5. 交互式数据分析——PivotTableJS

  • PyPI: https://pypi.org/project/pivottablejs/
  • 官网:https://pivottable.js.org/examples/
  • 功能: 在Jupyter Notebook中交互式分析数据
  • 特点: 无需编写代码即可进行数据透视分析
  • 优势: 适合非技术人员使用
  • 安装: pip install pivottablejs
  • 代码示例
from pivottablejs import pivot_ui

# 创建交互式数据透视表
pivot_ui(df)

# 自定义配置
pivot_ui(df, 
         rows=['category'], 
         cols=['year'],
         aggregatorName='Sum',
         vals=['value'])

6. 教学可视化工具——Drawdata

  • PyPI: https://pypi.org/project/drawdata/
  • 功能: 在Jupyter Notebook中绘制2D数据集
  • 特点: 可视化学习机器学习算法的行为
  • 优势: 特别适合教学和理解算法原理
  • 安装: pip install drawdata
  • 代码示例
import drawdata
import pandas as pd

# 创建交互式绘图界面
df = drawdata.get_data()

# 导出绘制的数据
df.to_csv('drawn_data.csv')

7. 代码质量工具——Black

  • PyPI: https://pypi.org/project/black/
  • 功能: Python代码格式化工具
  • 特点: 统一的代码格式规范
  • 优势: 提高代码可读性,被广泛使用
  • 安装: pip install black
  • 代码示例
# 命令行使用
# black your_script.py
# 或在Python中使用
import black

# 格式化代码字符串
formatted_code = black.format_str(source_code, mode=black.FileMode())

# 格式化整个项目
# black .

# 检查模式(不实际修改文件)
# black --check .

8. 低代码机器学习——PyCaret

  • GitHub: https://github.com/pycaret/pycaret
  • 官网:https://www.pycaret.org/
  • 功能: 低代码机器学习库
  • 特点: 自动化机器学习工作流程
  • 优势: 降低机器学习项目的开发难度
  • 安装: pip install pycaret
  • 代码示例
from pycaret.classification import *

# 设置实验
exp = setup(data, target='target_column')

# 比较所有模型
best_model = compare_models()

# 创建模型
model = create_model('rf')  # 随机森林

# 调优模型
tuned_model = tune_model(model)

# 预测
predictions = predict_model(best_model, data=test_data)

# 保存模型
save_model(model, 'model_name')

9. 深度学习框架——PyTorch-Lightning

  • 文档: https://lightning.ai/docs/pytorch/stable/
  • 功能: PyTorch的高级封装
  • 特点: 简化模型训练流程,减少样板代码
  • 优势: 让研究人员更专注于创新而不是编写基础代码
  • 安装: pip install pytorch-lightning
  • 代码示例
import pytorch_lightning as pl
import torch.nn.functional as F

class MyModel(pl.LightningModule):
    def __init__(self):
        super().__init__()
        self.layer = nn.Linear(28*2810)
        
    def training_step(self, batch, batch_idx):
        x, y = batch
        y_hat = self(x)
        loss = F.cross_entropy(y_hat, y)
        self.log('train_loss', loss)
        return loss
        
    def configure_optimizers(self):
        return torch.optim.Adam(self.parameters(), lr=0.001)

# 训练模型
trainer = pl.Trainer(max_epochs=10, gpus=1)
trainer.fit(model, train_loader, val_loader)

10. Web应用开发——Streamlit

  • 官网: https://streamlit.io
  • 功能: 创建数据科学web应用
  • 特点: 简单易用的界面创建工具
  • 优势: 快速部署机器学习模型和数据可视化
  • 安装: pip install streamlit
  • 代码示例
import streamlit as st
import pandas as pd
import plotly.express as px

st.title("数据分析仪表板")

# 侧边栏配置
with st.sidebar:
    st.header("配置")
    option = st.selectbox("选择图表类型", ["散点图""折线图""柱状图"])

# 文件上传
uploaded_file = st.file_uploader("选择CSV文件")
if uploaded_file:
    df = pd.read_csv(uploaded_file)
    st.dataframe(df)
    
    # 数据统计
    st.write("数据统计摘要")
    st.write(df.describe())
    
    # 创建可视化
    if option == "散点图":
        fig = px.scatter(df, x='column1', y='column2')
    elif option == "折线图":
        fig = px.line(df, x='column1', y='column2')
    else:
        fig = px.bar(df, x='column1', y='column2')
        
    st.plotly_chart(fig)
    
    # 下载处理后的数据
    st.download_button(
        label="下载处理后的数据",
        data=df.to_csv(index=False),
        file_name='processed_data.csv',
        mime='text/csv'
    )

使用建议

  1. 入门阶段:

  • 从PyCaret和Streamlit开始
  • 使用LazyPredict快速了解不同模型效果
  • 利用Lux进行初步数据探索
  • 通过Drawdata加深对算法的理解
  • 进阶阶段:

    • 使用CleanLab提高数据质量
    • 用PyTorch-Lightning优化深度学习工作流
    • 探索Lux进行高级数据可视化
    • 使用Black维护代码质量
    • 深入研究各工具的高级特性
  • 团队协作:

    • 使用Black保持代码风格一致
    • 用Streamlit展示项目成果
    • 采用PivotTableJS进行团队数据分析
    • 使用PyForest简化环境管理
    • 建立统一的代码规范和工作流程
  • 项目部署:

    • Streamlit用于快速部署原型
    • PyTorch-Lightning用于模型生产部署
    • PyCaret用于快速实验和模型选择
    • 注意性能优化和扩展性考虑

    最佳实践

    1. 工具组合

    • 数据预处理:CleanLab + PyCaret
    • 模型开发:PyTorch-Lightning + LazyPredict
    • 可视化展示:Streamlit + Lux
    • 代码质量:Black + PyForest
  • 开发流程

    • 数据探索阶段:Lux + PivotTableJS
    • 模型实验阶段:LazyPredict + PyCaret
    • 产品化阶段:PyTorch-Lightning + Streamlit
    • 维护阶段:Black + 自动化测试
  • 技能提升

    • 循序渐进学习各工具
    • 关注工具更新和新特性
    • 参与社区讨论和贡献

    这些Python工具的组合使用不仅能提高个人工作效率,还能促进团队协作和项目质量。随着数据科学领域的快速发展,这些工具也在不断进化,建议持续关注它们的更新和新功能,以便更好地应用到实际工作中。选择合适的工具组合,建立高效的工作流程,将极大地提升数据科学项目的开发效率和质量。

    参考:https://x.com/akshay_pachaar/status/1855230462932942871

    ⬆️关注:领取Python、机器学习资料包⬆️


    Python相关好书推荐

    内容简介


    本书以数值分析原理为纲, 以算法设计为本, 基于Python 语言, 详细介绍了原理分析到 “自编码” 算法设计与应用的过程和思想, 旨在提升学生的数值计算和实践编码能力, 其数值算法设计思想可迁移到机器学习和深度学习,为学术深造和应用研究奠定科学计算和自编码基础. 本书共包含数值分析的12 个领域, 教师可以根据不同的学习对象和教学目的选择相应的章节. 书中计算方法均结合数学原理独立设计算法, 并结合经典数值算例辅助学习和理解, 且配备了实验题目, 使理论与实践、学习与提升相辅相成.


    本书可作为普通高等院校理工科专业的实验实践配套教材, 也可作为计算数学领域的研究生教学用书.


    本书作者


    王娟,女,博士,教授,硕士生导师. 国家级一流本科专业负责人,国家级一流本科课程负责人,中原领军人才,河南省高校教学名师,河南省教育厅学术技术带头人,首届全国高校青年教师教学竞赛一等奖获得者. 主持、参与完成国家基金项目4项,主持、参与省部级教学、科研项目10余项,在Neural Networks与Journal of Biological Dynamics,教育研究与实验等期刊发表论文30余篇.


    本书特色


    (1) 本书包含了普通高等院校本科生、研究生数值分析或计算方法相关教材的绝大部分算法, 从实验实践教学方面,强化学生的应用能力和创新能力, 提高学生的算法素养, 增强学生的数学实践与审美意识.


    (2)本书的核心价值是基于数学原理设计和编写算法, 即“自编码”(区别于调用库函数), 相当于把原理照进现实, 让“静态”的原理“走动”起来, 进而解决数学模型中的数值计算问题.


    (3) 本书的所有算法均采用Python语言编写, Python可以与以数学原理、数值计算为基础的学科(如机器学习) 有效结合,与当下时代的科技需求相符合.


     (4) 结合经典的数值算例辅助学习者理解和应用, 每个算法均有算例,用于验证算法的功能正确性, 以及算法的性能和求解精度等, 内容做到图文并茂,教学相长.


    (5)强化学习者的创新实践能力, 提高学生的算法设计信心, 每章均配备实验题目, 有助于把学习者的兴趣和能力引向更深的层次.


    (6)电子课件PPT,程序源代码齐备,易教易学.


    试读码


    扫描下面二维码可以抢先欣赏本书试读,试读内容包括目录和精彩章节.


    书影



    本书资源


    电子课件+程序代码


    电子课件:用书教师可以关注“科学EDU”公众号按步骤下载申请。

    程序代码下载:https://github.com/zhubai-nyt(您也可以点击原文阅读直接下载)。


    编辑推荐


    (1)这是一本基于数值分析原理和NumPy, 实现“自编码”式的算法设计的实践教材.


    (2)包含数值分析的12 个领域, 囊括了绝大部分算法, 专注于实验实践教学.


    (3)通过“自编码”学习拓展数值计算方法的思路(如验证原理、多角度分析问题等),加深对原理的认知,进而领悟数值计算的奥妙和计算之美.


    (4) 电子课件PPT,程序源代码齐备,易教易学.


    购买链接


    如果您对本书感兴趣,可以扫描如下二维码购买;您也可以点击立体封进入小程序购买,也可以点击“原文阅读”进入“科学教育”,看更多好书~

     

    欢迎关注

    科学出版社数学教育



    近期好文链接


    1. 社庆70周年活动——国规精品教材“云书展” | 数学专场

    2. 科学 * 新书 |《组合数学》

    3. 组合数学:算法科学的数学基础

    4. 给学习线性代数学子的一封信

    5. 首届全国教材建设奖作品改版,国家级规划教材升级,陈建龙教授团队最新修订 | 《线性代数(第三版)》

    6. 新书推荐||金融数学教学丛书之一、复旦北大知名教授联袂打造的《量化投资》出版啦!

    7. 向您推荐一本提供实践应用案例和代码的基础教程《金融科技大数据风控方法介绍》~

    8. 计算数学的前世今生,一文了解计算数学发展历程

    9. “万人计划”名师高夯教授:带文科生发现数学之美

    10. 您了解数论吗?这10个典型数论问题您能解答几个?

      11.数值分析:与计算机密切相连的实用性很强的计算数学课



    科学出版社数学教育
    为您提供数学教育相关教学改革、课程改革、课程设置、课程建设、优秀教材、教育信息数字化等各方面数学相关资讯,为您提供最优质的传统出版以及数字化出版服务!
     最新文章