Python_day22

DAY 22 復習日

復習日

仔細回顧一下之前21天的內容,沒跟上進度的同學補一下進度。

作業:

自行學習參考如何使用kaggle平臺,寫下使用注意點,并對下述比賽提交代碼

kaggle泰坦里克號人員生還預測

一、Kaggle 基礎使用步驟

  1. 注冊與登錄

    • 訪問 Kaggle 官網?,通過 Google 賬號或郵箱注冊。
    • 驗證郵箱后完成賬戶激活。
  2. 熟悉界面

    • Competitions(競賽):參與數據科學競賽,贏取獎金或提升技能。
    • Datasets(數據集):搜索或上傳公開數據集。
    • Notebooks(代碼筆記本):基于 Jupyter Notebook 的在線編程環境,支持 Python/R。
    • Discussions(論壇):與社區交流問題或分享經驗。
  3. 創建/運行 Notebook

    • 點擊 New Notebook 創建代碼環境,支持 GPU/TPU 加速。
    • 掛載數據集:通過 Add Data 添加數據集到 Notebook。
  4. 提交競賽結果

    • 在競賽頁面下載數據,訓練模型后生成預測結果文件(如 CSV)。
    • 通過競賽頁面的 Submit Predictions 上傳結果,查看排名。

二、使用注意點

1. 數據隱私與合規
  • 避免敏感數據:上傳數據集時,確保不包含個人信息或受版權保護的內容。
  • 競賽數據保密:禁止在競賽期間將數據集分享到外部平臺。
2. 資源限制
  • GPU/TPU 使用:免費賬戶每周有約 30 小時的 GPU 和 20 小時的 TPU 配額,超限后需等待重置。
  • 會話時長:Notebook 無操作 20 分鐘后會自動停止,需手動重啟。
  • 存儲限制:每個 Notebook 最大存儲 20GB(含數據集)。
3. 代碼與 Notebook 優化
  • 依賴安裝:在 Notebook 中通過 !pip install 安裝庫時,建議在代碼開頭一次性安裝。
  • 開啟 GPU:在 Notebook 設置中手動啟用 GPU/TPU,否則默認使用 CPU。
  • 數據路徑:掛載數據集后,數據路徑通常為 /kaggle/input/[數據集名稱]/
  • 版本保存:定期點擊 Save Version 備份代碼,避免丟失進度。
4. 競賽注意事項
  • 規則閱讀:仔細閱讀競賽規則,避免因提交格式錯誤或違規被取消資格。
  • 團隊合作:允許組隊參賽,但需在提交前合并團隊。
  • 公平性:禁止多賬號刷分或使用非公開數據。
5. 社區互動
  • 提問技巧:在論壇提問時,提供清晰的背景、代碼錯誤信息和嘗試過的解決方法。
  • 引用來源:使用他人代碼或數據時,注明來源并遵守許可證(如 CC0、MIT 等)。
6. 性能與效率
  • 大數據處理:使用 pandas 時優先選擇分塊讀取(chunksize)或高效格式(如 parquet)。
  • 內存管理:避免在 Notebook 中加載超大數據,可使用 dtype 優化或 del 釋放內存。
  • 緩存中間結果:將預處理后的數據保存為文件,減少重復計算。

三、其他實用技巧

  • 學習資源:利用 Kaggle Learn(短期免費課程)和公開 Notebook 學習模型構建技巧。
  • Kaggle API:通過命令行工具批量下載數據集或提交結果(需生成 API Token)。
  • 參與社區活動:關注 Kernels(優質代碼)、Datasets 和 Discussions 的 Trending 內容,學習最新方法。

常見問題解決

  • 數據集加載失敗:檢查路徑是否正確,或通過 ls /kaggle/input 查看已掛載數據。
  • GPU 未生效:在 Notebook 設置中確認已開啟 GPU,并檢查是否安裝了 GPU 版本的庫(如 tensorflow-gpu)。
  • 內存不足:減少批量大小(batch size)或使用更輕量級的模型。

Kaggle 的比賽如何運作

  1. 加入比賽
    閱讀挑戰賽描述,接受比賽規則并訪問比賽數據集。
  2. 開始工作
    下載數據,在本地或 Kaggle Notebooks(我們的免設置、可自定義的 Jupyter Notebooks 環境,帶有免費 GPU)上構建模型,并生成預測文件。
  3. 提交?將您的預測作為提交
    上傳到 Kaggle 并獲得準確率分數。
  4. 查看排行榜
    查看您的模型在我們的排行榜上與其他 Kaggler 的排名。
  5. 提高你的分數
    查看論壇,找到來自其他競爭對手的大量教程和見解。

本次挑戰——泰坦尼克號 - 從災難中學習機器學習

泰坦尼克號的沉沒是歷史上最臭名昭著的沉船事件之一。

1912 年 4 月 15 日,在她的處女航中,被廣泛認為“永不沉沒”的 RMS 泰坦尼克號在與冰山相撞后沉沒。不幸的是,船上的每個人都沒有足夠的救生艇,導致 1502 名乘客和船員中有 2224 人死亡。

雖然生存下來有一些運氣因素,但似乎某些群體比其他人更有可能生存下來。

在本次挑戰賽中,我們要求您構建一個預測模型,使用乘客數據(即姓名、年齡、性別、社會經濟階層等)回答“什么樣的人更有可能生存”這個問題。

我將在本次比賽中使用哪些數據?

在本次比賽中,您將可以訪問兩個類似的數據集,其中包括乘客信息,如姓名、年齡、性別、社會經濟階層等。一個數據集的標題為,另一個數據集的標題為 。train.csvtest.csv

Train.csv將包含機上乘客子集(準確地說是 891 人)的詳細信息,重要的是,將揭示他們是否幸存,也稱為“基本事實”。

該數據集包含類似的信息,但沒有透露每位乘客的 “真實情況”。預測這些結果是你的工作。test.csv

使用您在數據中找到的模式,預測機上其他 418 名乘客(在 中找到)是否幸存下來。train.csvtest.csv

查看?“Data” 選項卡以進一步探索數據集。一旦您認為您已經創建了一個有競爭力的模型,請將其提交給 Kaggle,以查看您的模型在我們的排行榜上與其他 Kaggler 的排名。

數據集描述

概述

數據已分為兩組:

  • 訓練集 (train.csv)
  • 測試集 (test.csv)

訓練集應用于構建機器學習模型。對于訓練集,我們提供每位乘客的結果(也稱為“真實值”)。您的模型將基于乘客的性別和艙位等“特征”。您還可以使用特征工程來創建新特征。

應該使用測試集來查看模型在看不見的數據上的表現。對于測試集,我們不會提供每位乘客的 Ground Truth。預測這些結果是你的工作。對于測試集中的每個乘客,使用您訓練的模型來預測他們是否在泰坦尼克號沉沒后幸存下來。

我們還包括?gender_submission.csv,這是一組假設所有且只有女性乘客幸存的預測,作為提交文件應該是什么樣子的示例。

數據字典

變量定義鑰匙
生存生存0 = 否,1 = 是
p類機票艙位1 = 第 1 個,2 = 第 2 個,3 = 第 3 個
年齡年齡(歲)
國際生物安全指數# 泰坦尼克號上的兄弟姐妹/配偶
帕奇# 泰坦尼克號上的父母/孩子
票號
票價乘客票價
艙位號
登船登船港口C = 瑟堡,Q = 皇后鎮,S = 南安普敦

變量注釋

pclass:社會經濟地位 (SES)
的代理 1st = 上
2nd = 中
3rd = 下

年齡:如果年齡小于 1,則年齡為分數。如果年齡是估計的,是不是以 xx.5

sibsp?的形式:數據集是這樣定義家庭關系的......
兄弟姐妹 = 兄弟、姐妹、繼兄弟、繼姐妹
配偶 = 丈夫、妻子(情婦和未婚夫被忽略)

parch:數據集以這種方式定義家庭關系......
父母 = 母親,父親
孩子 = 女兒、兒子、繼女、繼子
有些孩子只與保姆一起旅行,因此他們 parch=0。

具體步驟

總覽

[加載數據] → [預處理] → [特征工程] → [訓練模型] ?
? ? ? ? ? ? ? ? ? ? ?↓ ? ? ? ? ? ? ?↑ ?
? ? ? ? ? ? ?[獲取已訓練預處理器] → [提取特征名稱] → [合并分析]

具體代碼

1. 環境準備

# ========== 1. 環境準備 ==========
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split, GridSearchCV, StratifiedKFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import OneHotEncoder, RobustScaler
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from imblearn.over_sampling import SMOTE
from imblearn.pipeline import make_pipeline as imb_make_pipeline
import warnings
warnings.filterwarnings('ignore')

2. 數據加載與清洗

# ========== 2. 數據加載與清洗 ==========
def load_data(path):"""加載并初步處理數據"""df = pd.read_csv(path)# 刪除無關特征 [改進1:增加特征刪除說明]df.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1, inplace=True)return dftrain = load_data('train.csv')
test = load_data('test.csv')

3. 數據預處理管道

# ========== 3. 數據預處理管道 ==========
# [改進2:增加魯棒縮放器]
cat_features = ['Sex', 'Embarked']
num_features = ['Pclass', 'Age', 'SibSp', 'Parch', 'Fare']preprocessor = ColumnTransformer(transformers=[('num', Pipeline(steps=[('imputer', SimpleImputer(strategy='median')),('scaler', RobustScaler())  # 新增特征縮放]), num_features),('cat', Pipeline(steps=[('imputer', SimpleImputer(strategy='most_frequent')),('encoder', OneHotEncoder(handle_unknown='ignore'))]), cat_features)])

?4. 特征工程增強

# ========== 4. 特征工程增強 ==========
def feature_engineering(df):"""自定義特征工程 [改進3:增加新特征]"""# 基礎特征df['FamilySize'] = df['SibSp'] + df['Parch'] + 1df['IsAlone'] = (df['FamilySize'] == 1).astype(int)# 新增票價分段特征df['FareCategory'] = pd.cut(df['Fare'],bins=[0, 10, 50, 100, 600],labels=[0, 1, 2, 3]).astype(float)# 新增年齡分段特征df['AgeGroup'] = pd.cut(df['Age'],bins=[0, 12, 18, 60, 100],labels=['Child', 'Teen', 'Adult', 'Elderly']).astype(object)return dftrain = feature_engineering(train)
test = feature_engineering(test)

?5. 數據集劃分策略優化

# ========== 5. 數據集劃分策略優化 ==========
# [改進4:使用分層抽樣]
X = train.drop('Survived', axis=1)
y = train['Survived']
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, stratify=y,  # 新增分層抽樣random_state=42
)

6. 構建增強管道

# ========== 6. 構建增強管道 ==========
# [改進5:優化網格搜索參數]
pipeline = imb_make_pipeline(preprocessor,SMOTE(random_state=42),RandomForestClassifier(random_state=42)
)param_grid = {'randomforestclassifier__n_estimators': [100, 200, 300],  # 擴展參數范圍'randomforestclassifier__max_depth': [5, 7, 9, None],'randomforestclassifier__min_samples_split': [2, 3, 5],'randomforestclassifier__max_features': ['sqrt', 'log2'],  # 新增參數'smote__k_neighbors': [3, 5]  # 優化SMOTE參數
}

?7. 模型訓練與調參優化

# ========== 7. 模型訓練與調參優化 ==========
# [改進6:使用分層交叉驗證]
grid_search = GridSearchCV(estimator=pipeline,param_grid=param_grid,scoring='f1',cv=StratifiedKFold(n_splits=5, shuffle=True, random_state=42),  # 優化交叉驗證n_jobs=-1,verbose=1  # 新增訓練過程顯示
)grid_search.fit(X_train, y_train)

8. 模型評估增強

# ========== 8. 模型評估增強 ==========
best_model = grid_search.best_estimator_
val_pred = best_model.predict(X_val)print("\n=== 最優參數 ===")
print(grid_search.best_params_)print("\n=== 驗證集評估 ===")
print(f"準確率: {accuracy_score(y_val, val_pred):.2f}")
print(f"精確率: {precision_score(y_val, val_pred):.2f}") 
print(f"召回率: {recall_score(y_val, val_pred):.2f}")
print(f"F1分數: {f1_score(y_val, val_pred):.2f}")

9. 測試集處理

# ========== 9. 測試集處理 ==========
# [改進7:確保測試集處理一致性]
test_passenger_ids = pd.read_csv('test.csv')['PassengerId']
test_pred = best_model.predict(test)

10. 結果保存與特征分析

# ========== 10. 結果保存與特征分析 ==========
submission = pd.DataFrame({'PassengerId': test_passenger_ids,'Survived': test_pred
})
submission.to_csv('titanic_submission.csv', index=False)# 特征重要性分析(修正版)
try:# 獲取訓練好的預處理器fitted_preprocessor = best_model.named_steps['columntransformer']# 數值特征(包含新增特征)num_feats = num_features + ['FamilySize', 'IsAlone', 'FareCategory']# 分類特征編碼后的名稱cat_pipeline = fitted_preprocessor.named_transformers_['cat']encoded_cat_feats = cat_pipeline.named_steps['encoder'].get_feature_names_out(cat_features)# 合并所有特征名稱all_feature_names = np.concatenate([num_feats, encoded_cat_feats])# 獲取重要性importances = best_model.named_steps['randomforestclassifier'].feature_importances_# 創建DataFrameimportance_df = pd.DataFrame({'Feature': all_feature_names,'Importance': importances}).sort_values('Importance', ascending=False)print("\n=== 特征重要性 Top 10 ===")print(importance_df.head(10))except Exception as e:print(f"特征分析失敗: {str(e)}")print("可能原因:")print("- sklearn版本過低(需>=1.0),請升級:pip install --upgrade scikit-learn")print("- 預處理器未正確訓練")print("\n=== 提交文件已生成 ===")

最終提交

您的提交應為包含 418 行和標題的 CSV 文件。您可以上傳 zip/gz/7z 存檔。

@浙大疏錦行

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

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

相關文章

【軟件測試】基于項目驅動的功能測試報告(持續更新)

目錄 一、項目的介紹 1.1 項目背景 二、測試目標 2.1 用戶服務模塊 2.1.1 用戶注冊模塊 2.1.1.1 測試點 2.1.1.2 邊界值分析法(等價類+邊界值) 2.1.1.2.1 有效等價類 2.1.1.2.2 無效等價類 2.1.1.2.3 邊界值 2.1.1.2.4 測試用例設計 2.1.2 用戶登錄 2.1.2.1 測試…

QT中多線程的實現

采用官方推薦的 QObject::moveToThread 方式實現(相比繼承 QThread 更靈活),包含耗時任務執行、主線程通信、線程安全退出等核心功能。 環境說明 Qt 版本:Qt 5.15 或 Qt 6(兼容)項目類型:GUI …

從知識圖譜到精準決策:基于MCP的招投標貨物比對溯源系統實踐

前言 從最初對人工智能的懵懂認知,到逐漸踏入Prompt工程的世界,我們一路探索,從私有化部署的實際場景,到對DeepSeek技術的全面解讀,再逐步深入到NL2SQL、知識圖譜構建、RAG知識庫設計,以及ChatBI這些高階應…

maven如何搭建自己的私服(LINUX版)?

環境準備 安裝 JDK :確保系統已安裝 JDK 8 或更高版本。可以通過以下命令安裝 JDK: 安裝 OpenJDK :sudo apt update && sudo apt install openjdk-11-jdk 安裝 Oracle JDK :需要添加第三方倉庫,例如 WebUpd8 …

armv7 backtrace

ref: ARM Cortex-M3/M4/M7 Hardfault異常分析_arm hardfault-CSDN博客

探索 C++23 的 views::cartesian_product

文章目錄 一、背景與動機二、基本概念與語法三、使用示例四、特點與優勢五、性能與優化六、與 P2374R4 的關系七、編譯器支持八、總結 C23 為我們帶來了一系列令人興奮的新特性,其中 views::cartesian_product 是一個非常實用且強大的功能,它允許我們輕…

SHAP分析!Transformer-BiLSTM組合模型SHAP分析,模型可解釋不在發愁!

SHAP分析!Transformer-BiLSTM組合模型SHAP分析,模型可解釋不在發愁! 目錄 SHAP分析!Transformer-BiLSTM組合模型SHAP分析,模型可解釋不在發愁!效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 基于SH…

牛客周賽 Round 92-題解

牛客周賽 Round 92-題解 A-小紅的簽到題 code #include<iostream> #include<string> using namespace std; string s; int main() {int n;cin >> n;cout << "a_";for (int i 0; i < n - 2; i )cout << b;return 0; }B-小紅的模…

Java設計模式之建造者模式:從入門到精通

1. 建造者模式概述 1.1 定義與核心概念 **建造者模式(Builder Pattern)**是一種創建型設計模式,它將復雜對象的構建過程與其表示分離,使得同樣的構建過程可以創建不同的表示。 專業術語解釋表: 術語解釋產品(Product)最終要構建的復雜對象建造者(Builder)定義創建產品各個…

各類有關NBA數據統計數據集大合集

這些數據我已上傳大家在CSDN上直接搜索就可以&#xff01; 一、【2022-2023 NBA球員統計】數據集 關鍵詞: 籃球 描述: 語境 該數據集每場比賽包含2022-2023常規賽NBA球員統計數據。 請注意&#xff0c;由團隊更改產生了重復的球員名稱。 * [2021-2022 NBA播放器統計]&#…

3、食品包裝控制系統 - /自動化與控制組件/food-packaging-control

76個工業組件庫示例匯總 食品包裝線控制系統 這是一個用于食品包裝線控制系統的自定義組件&#xff0c;提供了食品包裝生產線的可視化監控與控制界面。組件采用工業風格設計&#xff0c;包含生產流程控制、實時數據監控和邏輯編程三個主要功能區域。 功能特點 工業風格UI設…

NPDP.新產品開發職業認證知識體系NPDP.BOK

第一章 新產品開發戰略 1.2 戰略及其層級--公司-經營--創新--新產品開發組合-新產品開發項目 “(戰略能夠)定義與傳播一個組織的獨特定位&#xff0c;說明應當如何整合組織的資源、技能與能力以獲取競爭優勢。”(波特&#xff0c;2008) “基于行業定位、機遇和資源,企業為實…

器件(八)—芯片封裝中的開爾文源極

首先再次回顧一下MOS到底怎么導通的 在如上的結構中&#xff0c;柵極加壓&#xff0c;讓N和P-base間形成導電溝道&#xff0c;Vds間加正電壓&#xff0c;流到N里的電子依靠這個電壓一路飄洋過海&#xff0c;通過Gate給它開辟的溝道&#xff0c;從N到P-base&#xff0c;再從P-ba…

客服系統重構詳細計劃

# 客服系統重構詳細計劃 ## 第一階段&#xff1a;系統分析與準備工作 ### 1. 代碼審查和分析 (1-2周) - 全面分析現有代碼結構 - 識別代碼中的問題和瓶頸 - 理解當前系統的業務邏輯 - 確定可重用的組件 - 制作系統功能清單 ### 2. 技術棧升級準備 (1周) - 升級PHP版本到7…

UNet網絡 圖像分割模型學習

UNet 由Ronneberger等人于2015年提出&#xff0c;專門針對醫學圖像分割任務&#xff0c;解決了早期卷積網絡在小樣本數據下的效率問題和細節丟失難題。 一 核心創新 1.1對稱編碼器-解碼器結構 實現上下文信息與高分辨率細節的雙向融合 如圖所示&#xff1a;編碼器進行了4步&…

【造包工具】【Xcap】精講Xcap構造分片包(IPv4、ipv6、4G\5G等pcap均可),圖解超贊超詳細!!!

1. 歡迎大家訂閱和關注:精講網絡通信協議(OSI、TCP、IP、UDP、ARP、ICMP、DHCP、HTTP、MQTT、SSL等)知識點,專欄會持續更新中.....敬請期待! 目錄 前言 1. XCap工具概念介紹 2. Xcap環境說明 2.1 新建報文組 2.2 導入數據包 2.3 查看報文組 2.4 復制刪除報文組 3.…

Qt 界面優化(繪圖)

目錄 1. 繪圖基本概念2. 繪制各種形狀2.1 繪制線段2.2 繪制矩形2.3 繪制圓形2.4 繪制文本2.5 設置畫筆2.6 設置畫刷 3. 繪制圖片3.1 繪制簡單圖片3.2 平移圖片3.3 縮放圖片3.4 旋轉圖片 4. 其他設置4.1 移動畫家位置4.2 保存/加載畫家的狀態 5. 特殊的繪圖設備5.1 QPixmap5.2 Q…

【計算機視覺】優化MVSNet可微分代價體以提高深度估計精度的關鍵技術

優化MVSNet可微分代價體以提高深度估計精度的關鍵技術 1. 代價體基礎理論與分析1.1 標準代價體構建1.2 關鍵問題診斷 2. 特征表示優化2.1 多尺度特征融合2.2 注意力增強匹配 3. 代價體構建優化3.1 自適應深度假設采樣3.2 可微分聚合操作改進 4. 正則化與優化策略4.1 多尺度代價…

Python中,async和with結合使用,有什么好處?

在Python的異步編程中&#xff0c;async和with的結合使用&#xff08;即async with&#xff09;為開發者提供了一種優雅且高效的資源管理模式。這種組合不僅簡化了異步代碼的編寫&#xff0c;還顯著提升了程序的健壯性和可維護性。以下是其核心優勢及典型應用場景的分析&#x…

【金倉數據庫征文】金倉數據庫:創新驅動,引領數據庫行業新未來

一、引言 在數字化轉型的時代洪流中&#xff0c;數據已躍升為企業的核心資產&#xff0c;宛如企業運營與發展的 “數字命脈”。從企業日常運營的精細化管理&#xff0c;到戰略決策的高瞻遠矚制定&#xff1b;從客戶關系管理的深度耕耘&#xff0c;到供應鏈優化的全面協同&…