当前位置: 首页 > news >正文

Python训练营打卡 Day31

文件的规范拆分和写法

今日的示例代码包含2个部分

  1. notebook文件夹内的ipynb文件,介绍下今天的思路
  2. 项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法

知识点回顾:文件和项目管理

  1. 规范的文件命名

    • 重要性:就像在餐厅中,每道菜都有一个清晰明确的名字,方便厨师和顾客识别。在编程中,规范的文件命名可以帮助开发者快速识别文件的用途和内容。

    • 实践:使用有意义的文件名,避免使用模糊的名称如“document1”或“file2”。例如,将数据处理相关的文件命名为“data_processing.py”,将模型训练相关的文件命名为“model_training.py”。

  2. 规范的文件夹管理

    • 重要性:类似于餐厅中将食材、餐具、调料等分类存放,方便取用。在编程项目中,良好的文件夹管理有助于组织代码和资源,提高项目的可维护性和可读性。

    • 实践:创建合理的目录结构,如将数据集放在“data”文件夹,模型保存在“models”文件夹,源代码放在“src”文件夹等。

  3. 机器学习项目的拆分

    • 重要性:就像大型的餐饮项目需要拆分成多个部分,由不同的团队负责。机器学习项目通常较为复杂,拆分成多个模块可以提高开发效率和代码复用性。

    • 实践:将项目拆分为数据预处理、模型训练、评估、部署等模块,每个模块负责特定的功能。

  4. 编码格式和类型注解

    • 重要性:就像餐厅有统一的菜谱格式和烹饪标准,编码格式和类型注解有助于提高代码的可读性和可维护性。

    • 实践:遵循一致的编码风格指南(如PEP 8),使用类型注解明确函数参数和返回值的类型。

作业:尝试针对之前的心脏病项目ipynb,将他按照今天的示例项目整理成规范的形式,思考下哪些部分可以未来复用

项目结构初始化

mkdir -p heart-disease-project/data/{raw,processed}
mkdir -p heart-disease-project/models
mkdir -p heart-disease-project/src
touch heart-disease-project/config.py
touch heart-disease-project/README.md
touch heart-disease-project/requirements.txt

配置文件 config.py

# config.py
import os# 数据路径
RAW_DATA_PATH = os.path.join("data", "raw", "heart_disease.csv")
PROCESSED_DATA_PATH = os.path.join("data", "processed", "heart_data_processed.csv")# 模型路径
MODEL_SAVE_PATH = os.path.join("models", "heart_model.pkl")# 超参数
TEST_SIZE = 0.2
RANDOM_STATE = 42

数据处理模块 src/data_processing.py

# src/data_processing.py
import pandas as pd
from sklearn.model_selection import train_test_split
from config import RAW_DATA_PATH, PROCESSED_DATA_PATHdef load_and_preprocess_data():# 加载原始数据df = pd.read_csv(RAW_DATA_PATH)# 处理缺失值(示例:填充均值)df.fillna(df.mean(), inplace=True)# 特征与标签分离X = df.drop("target", axis=1)y = df["target"]# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 保存预处理后的数据processed_data = {"X_train": X_train,"X_test": X_test,"y_train": y_train,"y_test": y_test,}pd.to_pickle(processed_data, PROCESSED_DATA_PATH)return processed_data

模型训练模块 src/model_training.py

# src/model_training.py
import joblib
from sklearn.ensemble import RandomForestClassifier
from config import MODEL_SAVE_PATH
from src.data_processing import load_and_preprocess_datadef train_model():# 加载预处理后的数据data = pd.read_pickle(config.PROCESSED_DATA_PATH)X_train, y_train = data["X_train"], data["y_train"]# 初始化模型model = RandomForestClassifier(n_estimators=100, random_state=42)# 训练模型model.fit(X_train, y_train)# 保存模型joblib.dump(model, MODEL_SAVE_PATH)print(f"Model saved to {MODEL_SAVE_PATH}")

模型评估模块 src/evaluation.py

# src/evaluation.py
import joblib
from sklearn.metrics import classification_report, roc_auc_score
from config import MODEL_SAVE_PATH, PROCESSED_DATA_PATHdef evaluate_model():# 加载模型和数据model = joblib.load(MODEL_SAVE_PATH)data = pd.read_pickle(PROCESSED_DATA_PATH)X_test, y_test = data["X_test"], data["y_test"]# 预测结果y_pred = model.predict(X_test)y_proba = model.predict_proba(X_test)[:, 1]# 输出评估指标print("Classification Report:")print(classification_report(y_test, y_pred))print("ROC AUC Score:")print(roc_auc_score(y_test, y_proba))

工具函数 src/utils.py

# src/utils.py
import os
import loggingdef create_directory(path):"""确保目录存在"""if not os.path.exists(path):os.makedirs(path)logging.info(f"Created directory: {path}")

依赖管理 requirements.txt

# requirements.txt
pandas
scikit-learn
joblib

项目运行流程

* 准备数据
将原始数据文件 heart_disease.csv 放入 data/raw/ 目录。
* 运行数据处理python src/data_processing.py
* 训练模型python src/model_training.py
* 评估模型python src/evaluation.py

@浙大疏锦行


文章转载自:

http://Xa1ENswZ.bppmL.cn
http://tcx7Udcs.bppmL.cn
http://kK4ip9it.bppmL.cn
http://yMB7TjS4.bppmL.cn
http://jAzLmfCu.bppmL.cn
http://B6TDRMKB.bppmL.cn
http://530wvBVS.bppmL.cn
http://Ne60VHmX.bppmL.cn
http://IeTuKIOA.bppmL.cn
http://tmSBnFDx.bppmL.cn
http://BsGMvfwF.bppmL.cn
http://dg3TMNrC.bppmL.cn
http://oP8azICO.bppmL.cn
http://QDeLzDby.bppmL.cn
http://oWq8nwEU.bppmL.cn
http://6zbJwGCl.bppmL.cn
http://UvCdBkBd.bppmL.cn
http://1CTLntMh.bppmL.cn
http://bror8trV.bppmL.cn
http://zY4UdBIk.bppmL.cn
http://NAs2xoBI.bppmL.cn
http://Dyn8YlNa.bppmL.cn
http://1eZYJIiK.bppmL.cn
http://Wq2m4HRl.bppmL.cn
http://DIyFKuS5.bppmL.cn
http://BKH32SUt.bppmL.cn
http://OYbeo5xm.bppmL.cn
http://dMsVaosv.bppmL.cn
http://xvXNQTcF.bppmL.cn
http://zfYmFTZj.bppmL.cn
http://www.dtcms.com/a/201678.html

相关文章:

  • 牛客网 NC14736 双拆分数字串 题解
  • 【windows】音视频处理工具-FFmpeg(合并/分离)
  • I2C 协议的理解以及在 OLED 上的应用
  • mac上安装 Rust 开发环境
  • 数据分析_商务运营考核指标体系搭建
  • 【爬虫】12306自动化购票
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取目录大小?
  • os agent智能体软件 - 第三弹 - 纯语音交互
  • 解决npm install报错:getaddrinfo ENOTFOUND registry.nlark.com
  • 如何从不同位置将联系人导入 iPhone(完整指南)
  • 【520 特辑】用 HTML/CSS/JavaScript 打造浪漫炫酷的表白网页
  • 【HTML-3】HTML 中的水平线与换行:基础元素详解
  • 零售EDI:Belk Stores EDI需求分析
  • 使用 ARCore 和 Kotlin 开发 Android 增强现实应用入门指南
  • 安装PostgresSQL
  • 在 Kotlin 中,什么是内联函数?有什么作用?
  • 微软的 Windows Linux 子系统现已开源
  • 基于R语言的空间异质性数据分析技术
  • Django基础(二)Django 项目基础操作
  • 【缺陷】GaN和AlN中的掺杂特性
  • Spring Cloud Gateway深度解析:原理、架构与生产实践
  • 如何使用MATLAB NLP工具箱进行文本聚类
  • 使用SQLite Expert个人版VACUUM功能修复数据库
  • 国标GB28181视频EasyGBS视频监控平台搭建城市交通道路可视化管理/道路视频巡检/应急监控指挥
  • [Java实战]Spring Boot整合Sentinel:流量控制与熔断降级实战(二十九)
  • 音频应用的MediaSession冲突
  • 畅游Diffusion数字人(30):情绪化数字人视频生成
  • 若依项目集成sentinel、seata和shardingSphere
  • arcgispro双击打开没反应怎么办
  • 【华为OD- B卷 - 书籍叠放 200分(python、java、c、c++、js)】