Python 數據分析與可視化 Day 12 - 建模前準備與數據集拆分

? 今日目標

  • 掌握建模前常見準備步驟
  • 學會使用 train_test_split() 將數據劃分為訓練集和測試集
  • 理解特征(X)與標簽(y)的區分
  • 學習常見建模流程的輸入要求(格式、維度)

📘 一、建模前準備流程概覽

  1. 數據清洗(缺失值、異常值處理)?
  2. 特征工程(編碼、標準化、派生)?
  3. 數據集劃分(訓練 / 測試)?
  4. 模型選擇與訓練(下一階段)
  5. 模型評估與調參

📚 二、提取特征列與標簽列

import pandas as pddf = pd.read_csv("data/processed/students_featured.csv")# 特征列(可以自定義選擇)
X = df[["成績_標準化", "性別_女", "性別_男", "是否及格_數值"]]# 標簽列(以是否及格為預測目標)
y = df["是否及格_數值"]

📘 三、劃分訓練集與測試集

from sklearn.model_selection import train_test_split# 按 80% 訓練 / 20% 測試,隨機種子保持一致性
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42
)print("訓練集樣本數:", len(X_train))
print("測試集樣本數:", len(X_test))

📘 四、保存拆分結果(供建模使用)

X_train.to_csv("data/model/X_train.csv", index=False)
X_test.to_csv("data/model/X_test.csv", index=False)
y_train.to_csv("data/model/y_train.csv", index=False)
y_test.to_csv("data/model/y_test.csv", index=False)

📊 可選探索:類別平衡性檢查

print("訓練集是否及格分布:")
print(y_train.value_counts(normalize=True))print("測試集是否及格分布:")
print(y_test.value_counts(normalize=True))

🧪 今日練習建議

  1. 從增強后的數據中提取合適的特征列(X)和目標列(y)

  2. 使用 train_test_split 按比例劃分訓練 / 測試集

  3. 將結果分別保存到 CSV 文件

  4. 檢查樣本比例是否合理、是否存在類別不平衡問題(特別是分類任務)

    import pandas as pd
    from sklearn.model_selection import train_test_split
    import os# 1. 加載數據
    input_path = "data/processed/students_featured.csv"
    if not os.path.exists(input_path):raise FileNotFoundError("? 請先運行 feature_engineering.py 生成 students_featured.csv")df = pd.read_csv(input_path)
    print("? 已加載數據:", input_path)
    print(df)# 2. 提取特征列和標簽列
    feature_cols = ["成績_標準化", "性別_女", "性別_男", "是否及格_數值"]
    label_col = "是否及格_數值"X = df[feature_cols]
    y = df[label_col]print("\n🔍 特征維度:", X.shape)
    print("🔍 標簽維度:", y.shape)# 3. 劃分訓練集和測試集(80% / 20%)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42
    )print(f"\n📦 拆分完成:訓練集 {len(X_train)} 條,測試集 {len(X_test)} 條")# 4. 可選:檢查類別平衡性
    print("\n📊 訓練集類別分布:")
    print(y_train.value_counts(normalize=True))print("\n📊 測試集類別分布:")
    print(y_test.value_counts(normalize=True))# 5. 保存拆分結果
    os.makedirs("data/model", exist_ok=True)
    X_train.to_csv("data/model/X_train.csv", index=False)
    X_test.to_csv("data/model/X_test.csv", index=False)
    y_train.to_csv("data/model/y_train.csv", index=False)
    y_test.to_csv("data/model/y_test.csv", index=False)print("\n? 拆分后的數據已保存至 data/model/ 文件夾")
    

    運行輸出:

? 已加載數據: data/processed/students_featured.csv姓名    成績   是否及格  性別編碼   性別_女   性別_男    成績_標準化    成績_歸一化  是否及格_數值 成績等級        考試時間  考試月  考試周      考試星期
0  張三  88.0   True     1  False   True  1.166997  1.000000        12024-06-01    6   22  Saturday
1  李四  78.0   True     0   True  False  0.214346  0.655172        12024-06-01    6   22  Saturday
2  王五  59.0  False     1  False   True -1.595690  0.000000        0  不及格  2024-06-01    6   22  Saturday
3  田七  78.0   True     0   True  False  0.214346  0.655172        12024-06-01    6   22  Saturday🔍 特征維度: (4, 4)
🔍 標簽維度: (4,)📦 拆分完成:訓練集 3 條,測試集 1 條📊 訓練集類別分布:
是否及格_數值
1    0.666667
0    0.333333
📊 測試集類別分布:
是否及格_數值
1    1.0
? 拆分后的數據已保存至 data/model/ 文件夾

在這里插入圖片描述
x測試集:
在這里插入圖片描述
x訓練集:
在這里插入圖片描述
y測試集:
在這里插入圖片描述
y訓練集:
在這里插入圖片描述


🧾 今日總結

步驟工具說明
特征提取Pandas DataFrame自定義特征列
數據拆分train_test_split來自 sklearn
保存格式CSV便于后續建模使用
類別分析value_counts()檢查是否嚴重偏斜

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89768.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89768.shtml

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

相關文章

Swagger 安裝使用教程

一、Swagger 簡介 Swagger 是一套開放源代碼的 API 文檔生成工具鏈,現歸屬于 OpenAPI 規范。它支持 RESTful API 的定義、生成、測試和文檔自動化。常見的使用工具包括 Swagger UI、Swagger Editor、Swagger Codegen 以及 SpringFox(Spring 集成庫&…

【seismic unix相速度分析-頻散曲線】

介紹Seismic Unix Seismic Unix(SU)是一個開源的地震數據處理軟件包,主要用于地震數據的處理、分析和可視化。它由科羅拉多礦業學院的Center for Wave Phenomena開發,廣泛應用于學術研究和工業領域。SU提供了一系列命令行工具&am…

3.前端和后端參數不一致,后端接不到數據的解決方案

目錄 1.問題背景: (1).前端代碼: (2).后端代碼: (3).問題分析: [1]前端參數構造錯誤: [2].Api請求配置錯誤: 2.解決方案 (1).修改 role.js 中的 API 方法 (2).前端組件中的調用方式改成下面的而不是繼續拼接了 3.總結: 1.問題背景: 我在接口開發過程中,前…

SpringBoot:整合quartz實現定時任務-MisFire的處理

文章目錄 一、什么是MisFire二、MisFire發生的情況三、MisFire的補償策略四、代碼實現 一、什么是MisFire 簡單理解為:定時任務,所錯過的觸發 二、MisFire發生的情況 1、資源緊張,定時任務請求不到對應的線程。 2、調度器關閉。 3、設置定…

返回json,優雅處理轉換(如 0.85 → “85.00%“)

核心解決方案 通過 自定義序列化器 JsonSerialize 注解,實現 BigDecimal 到百分比字符串的自動轉換。 1.1 自定義序列化器代碼 java import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterx…

大語言模型LLM在訓練/推理時的padding

討論的是在訓練大型語言模型(Transformer-based models,比如GPT等)時,文本序列的填充(padding)問題,即訓練和推理時分辨填充在序列的左側(left padding)或右側&#xff0…

50 個常用 Docker 命令

1. Docker 基礎命令 查看 Docker 版本 docker --version查看 Docker 運行狀態 systemctl status docker查看 Docker 信息 docker info查看幫助信息 docker help2. 鏡像管理 拉取鏡像 docker pull <鏡像名>查看本地鏡像 docker images刪除鏡像 docker rmi <鏡…

紋理貼圖算法研究論文綜述

紋理貼圖&#xff08;Texture Mapping&#xff09;是計算機圖形學和計算機視覺中的核心技術&#xff0c;廣泛應用于三維重建、游戲渲染、虛擬現實&#xff08;VR&#xff09;、增強現實&#xff08;AR&#xff09;等領域。對其算法的研究涵蓋了紋理生成、映射、縫合、優化等多個…

關于使用cursor tunnel鏈接vscode(避免1006 issue的做法)

詳細步驟 第 1 步&#xff1a;在你的本地機器上準備好 Cursor 這一步很簡單&#xff0c;你可能已經完成了。只需確保你的本地電腦上已經安裝了 Cursor 桌面應用程序。 要做的事&#xff1a;無&#xff0c;只需確保 Cursor 已安裝。 第 2 步&#xff1a;在遠程服務器上安裝 Curs…

Redis常見性能問題和解決方案有哪些

Redis 作為高性能的內存數據庫&#xff0c;在電商等高并發場景中廣泛使用&#xff0c;但可能因配置、使用不當或環境限制出現性能問題。以下是 Redis 常見的性能問題及其解決方案&#xff0c;結合電商場景&#xff0c;用中文簡潔說明&#xff1a;### 1. **高延遲&#xff08;響…

明遠智睿RK3588:創新了高性能,讓顧慮煙消云散

在科技浪潮的推動下&#xff0c;高性能開發已經成為眾多行業發展的核心驅動力。從智能交通的車路協同&#xff0c;到醫療領域的影像診斷&#xff1b;從智能家居的智能控制&#xff0c;到工業互聯網的智能制造&#xff0c;每一個領域都對模塊的性能提出了極高的要求。然而&#…

I Data Lab

萬事開頭難&#xff0c;尤其是和 0 與 1 打交道&#xff0c;和后面的實驗相比&#xff0c;這次只能算個熱身。但是喜歡運動的都知道&#xff0c;熱身很重要&#xff01;任務目標我們先來看看 Datalab 需要我們做什么。主要是通過這次的作業來熟悉整型及浮點數的位表達形式&…

SQLite 安裝使用教程

一、SQLite 簡介 SQLite 是一個輕量級的關系型數據庫管理系統&#xff0c;嵌入式、零配置、無需安裝服務器&#xff0c;廣泛應用于移動端開發&#xff08;如 Android&#xff09;、桌面應用、小型網站等場景。 二、下載安裝 2.1 官方網站下載 訪問 SQLite 官網 下載適用于操…

Python-Word文檔、PPT、PDF以及Pillow處理圖像詳解

Python操作Word和PowerPoint文件操作Word文檔命令來安裝python-docx三方庫。pip install python-docxfrom docx import Document from docx.shared import Inches, Pt, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMEN…

高可擴展屬性建模設計:架構師的全局思考與落地方案

在復雜業務系統中&#xff0c;動態屬性擴展始終是架構設計的核心難題之一。傳統方案如寬表設計和EAV&#xff08;實體-屬性-值&#xff09;模型分別在性能與擴展性上各有優勢與劣勢&#xff0c;但也都有明顯局限。 為了兼顧性能、擴展性、維護成本&#xff0c;需要引入更靈活的…

數據結構入門:鏈表

鏈式存儲結構通過使用指針將分散的存儲單元鏈接起來&#xff0c;每個元素由數據部分和指針部分組成。 鏈式表的定義和特點 鏈式表的每個節點包含兩個部分&#xff1a; 數據域&#xff1a;存儲數據元素。指針域&#xff1a;存儲下一個節點的內存地址。 鏈式表的頭指針指向第一個…

達夢數據庫DMHS介紹及安裝部署

目錄 概述 安裝規劃 安裝步驟 上傳安裝包 更改權限 執行安裝命令 源端和目的端處理 開啟歸檔 開啟邏輯日志 創建測試表 生成測試數據 配置目的端文件 配置源端文件 啟動目的端 啟動源端 裝載數據 源端開啟cpt模塊 數據同步驗證 隨機數據驗證 概述 達夢數據實時同…

BERT 模型詳解:結構、原理解析

前言 在自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;已經成為理解類任務的標配模型。相比 GPT 更擅長文本生成&#xff0c;BERT 則在語言理解任務上展現出卓越的能力。本文…

一、bfv_basics

目錄 一、加密參數 EncryptionParameters類1. 三個重要的參數2. 參數的作用3. 同態加密方案4. 多項式模數的度 poly_modulus_degree (n)5. 密文模數 coeff_modulus (q)6. 明文模數 plain_modulus (t&#xff0c;這是 BFV 方案才有的&#xff0c;CKKS 沒有) 二、上下文 SEALCont…

AI大模型LangChain架構介紹及其在環保領域的應用

1.LangChain 概述與架構 LangChain 是一個面向大型語言模型&#xff08;LLM&#xff09;應用的開發框架&#xff0c;其核心理念是將復雜的基于語言的 AI 系統拆分為可復用的模塊&#xff0c;簡化 LLM 與數據源的集成。LangChain 官方文檔將其定義為“一個用于開發以 LLM 為驅動…