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://www.pswp.cn/news/906339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906339.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906339.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025年護網行動藍隊防御全解析:構建智能動態防御體系

2025年,隨著網絡攻擊手段的智能化、混合化升級,護網行動中的藍隊防御已從傳統的被動防護轉向“動態感知、智能研判、主動反制”的立體化模式。如何在攻防不對稱的對抗中實現“看得見、防得住、溯得清”?本文將結合前沿技術與實戰經驗&#xf…

React Contxt詳解

React Contxt詳解 React 的 Context API 是用于跨組件層級傳遞數據的解決方案,尤其適合解決「prop drilling」(多層組件手動傳遞 props)的問題。以下是關于 Context 的詳細解析: 文章目錄 React Contxt詳解一、Context 核心概念二…

使用 lock4j-redis-template-spring-boot-starter 實現 Redis 分布式鎖

在分布式系統中,多個服務實例可能同時訪問和修改共享資源,從而導致數據不一致的問題。為了解決這個問題,分布式鎖成為了關鍵技術之一。本文將介紹如何使用 lock4j-redis-template-spring-boot-starter 來實現 Redis 分布式鎖,從而…

Vue響應式系統演進與實現解析

一、Vue 2 響應式實現詳解 1. 核心代碼實現 // 依賴收集器(觀察者模式) class Dep {constructor() {this.subscribers new Set();}depend() {if (activeEffect) {this.subscribers.add(activeEffect);}}notify() {this.subscribers.forEach(effect &g…

Mujoco 學習系列(一)安裝與部署

這個系列文章用來記錄 Google DeepMind 發布的 Mujoco 仿真平臺的使用過程,Mujoco 是具身智能領域中非常知名的仿真平臺,以簡單易用的API和精準的物理引擎而著稱(PS:原來Google能寫好API文檔啊),也是我平時…

Ai學習之openai api

一、什么是openai api 大家對特斯拉的馬斯克應該是不陌生的,openai 就是馬斯克投資的一家研究人工智能的公司,它就致力于推動人工智能技術的發展,目標是確保人工智能對人類有益,并實現安全且通用的人工智能。 此后,O…

leetcode 合并區間 java

用 ArrayList<int[]> merged new ArrayList<>();來定義數組的list將數組進行排序 Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));如果前面的末尾>后面的初始&#xff0c;那么新的currentInterval的末尾這兩個數組末尾的最大值&#xff0c;即…

std::vector<>.emplace_back

emplace_back() 詳解&#xff1a;C 就地構造的效率革命 emplace_back() 是 C11 引入的容器成員函數&#xff0c;用于在容器尾部就地構造&#xff08;而非拷貝或移動&#xff09;元素。這一特性顯著提升了復雜對象的插入效率&#xff0c;尤其適用于構造代價較高的類型。 一、核…

Dify實戰案例《AI面試官》更新,支持語音交互+智能知識庫+隨機題庫+敏感詞過濾等...

大模型應用課又更新了&#xff0c;除了之前已經完結的兩門課&#xff08;視頻圖文&#xff09;&#xff1a; 《Spring AI 從入門到精通》《LangChain4j 從入門到精通》 還有目前正在更新的 《Dify 從入門到實戰》 本周也迎來了一大波內容更新&#xff0c;其中就包括今天要介紹…

AGI大模型(29):LangChain Model模型

1 LangChain支持的模型有三大類 大語言模型(LLM) ,也叫Text Model,這些模型將文本字符串作為輸入,并返回文本字符串作為輸出。聊天模型(Chat Model),主要代表Open AI的ChatGPT系列模型。這些模型通常由語言模型支持,但它們的API更加結構化。具體來說,這些模型將聊天消…

動態IP技術在跨境電商中的創新應用與戰略價值解析

在全球化4.0時代&#xff0c;跨境電商正經歷從"流量紅利"向"技術紅利"的深度轉型。動態IP技術作為網絡基礎設施的關鍵組件&#xff0c;正在重塑跨境貿易的運營邏輯。本文將從技術架構、應用場景、創新實踐三個維度&#xff0c;揭示動態IP如何成為跨境電商突…

android雙屏之副屏待機顯示圖片

摘要&#xff1a;android原生有雙屏的機制&#xff0c;但需要芯片廠商適配框架后在底層實現。本文在基于芯發8766已實現底層適配的基礎上&#xff0c;僅針對上層Launcher部分對系統進行改造&#xff0c;從而實現在開機后副屏顯示一張待機圖片。 副屏布局 由于僅顯示一張圖片&…

STM32之中斷

一、提高程序實時性的架構方案 輪詢式 指的是在程序運行時&#xff0c;首先對所有的硬件進行初始化&#xff0c;然后在主程序中寫一個死循環&#xff0c;需要運行的功能按照順序進行執行&#xff0c;輪詢系統是一種簡單可靠的方式&#xff0c;一般適用于在只需要按照順序執行…

LLM應用開發平臺資料

課程和代碼資料 放下面了&#xff0c;自取&#xff1a; https://pan.quark.cn/s/57a9d22d61e9

硬盤健康檢測與性能測試的實踐指南

在日常使用 Windows 系統的過程中&#xff0c;我們常常需要借助各種工具來優化性能、排查問題或管理文件。針對windows工具箱進行實測解析&#xff0c;發現它整合了多種實用功能&#xff0c;能夠幫助用戶更高效地管理計算機。 以下為測試發現的功能特性&#xff1a; 硬件信息查…

正則表達式進階(三):遞歸模式與條件匹配的藝術

在正則表達式的高級應用中&#xff0c;遞歸模式和條件匹配是處理復雜嵌套結構和動態模式的利器。它們突破了傳統正則表達式的線性匹配局限&#xff0c;能夠應對嵌套括號、HTML標簽、上下文依賴等復雜場景。本文將詳細介紹遞歸模式&#xff08;(?>...)、 (?R) 等&#xff0…

從零開始創建React項目及制作頁面

一、React 介紹 React 是一個由 Meta&#xff08;原Facebook&#xff09; 開發和維護的 開源JavaScript庫&#xff0c;主要用于構建用戶界面&#xff08;User Interface, UI&#xff09;。它是前端開發中最流行的工具之一&#xff0c;廣泛應用于單頁應用程序&#xff08;SPA&a…

【前端部署】通過 Nginx 讓局域網用戶訪問你的純前端應用

在日常前端開發中&#xff0c;我們常常需要快速將本地的應用展示給局域網內的同事或測試人員&#xff0c;而傳統的共享方式往往效率不高。本文將指導你輕松地將你的純前端應用&#xff08;無論是 Vue, React, Angular 或原生項目&#xff09;部署到本地&#xff0c;并配置局域網…

【Python裝飾器深潛】從語法糖到元編程的藝術

目錄 ?? 前言??? 技術背景與價值?? 當前技術痛點??? 解決方案概述?? 目標讀者說明?? 一、技術原理剖析?? 核心概念圖解?? 核心作用講解?? 關鍵技術模塊說明?? 技術選型對比??? 二、實戰演示?? 環境配置要求?? 核心代碼實現案例1:基礎計時裝飾器案…

mbed驅動st7789屏幕-硬件選擇及連接(1)

目錄 1.整體介紹 2. 硬件選擇 2.1 mbed L432KC 2.2 ST7789 240*240 1.3寸 3. mbed與st7789的硬件連接 4. 總結 1.整體介紹 我們在使用單片機做一些項目的時候,交互性是最重要的因素。那么對于使用者而言,交互最直接的體現無非就是視覺感知,那么我們希望將項目通過視覺…