python打卡day23@浙大疏錦行

知識回顧:

1.??轉化器和估計器的概念

2.??管道工程

3.??ColumnTransformer和Pipeline類

作業:

整理下全部邏輯的先后順序,看看能不能制作出適合所有機器學習的通用pipeline

一、導入數據庫

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import time # 導入 time 庫
import warnings
warnings.filterwarnings("ignore")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

?二、導入pipeline

from sklearn.pipeline import Pipeline 
from sklearn.compose import ColumnTransformer 
from sklearn.preprocessing import OrdinalEncoder, OneHotEncoder, StandardScaler 
from sklearn.impute import SimpleImputer 
from sklearn.ensemble import RandomForestClassifier 
from sklearn.metrics import classification_report, confusion_matrix 
data = pd.read_csv('heart.csv')
print("原始數據加載完成,形狀為:", data.shape)
y = data['target'] # 標簽
X = data.drop(['target'], axis=1) 
print("\n特征和標簽分離完成。")
print("特征 X 的形狀:", X.shape)
print("標簽 y 的形狀:", y.shape)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 
print("\n數據集劃分完成 (預處理之前)。")
print("X_train 形狀:", X_train.shape)
print("X_test 形狀:", X_test.shape)
print("y_train 形狀:", y_train.shape)
print("y_test 形狀:", y_test.shape)
object_cols = X.select_dtypes(include=['object']).columns.tolist()
numeric_cols = X.select_dtypes(exclude=['object']).columns.tolist()
ordinal_features = ['cp',  'restecg',  'slope', 'ca', 'thal']ordinal_categories = [[0, 1, 2, 3], # Home Ownership 的順序 (對應1, 2, 3, 4)[0, 1, 2], # Years in current job 的順序 (對應1-11)[0, 1, 2], # Term 的順序 (對應0, 1)[0, 1, 2, 3, 4],[0, 1, 2, 3],
]

三、構建有序特征pipeline

ordinal_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OrdinalEncoder(categories=ordinal_categories, handle_unknown='use_encoded_value', unknown_value=-1)) 
])
print("有序特征處理 Pipeline 定義完成。")
nominal_features = ['sex','fbs','exang']

四、構建標稱特征pipeline

nominal_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='most_frequent')), ('onehot', OneHotEncoder(handle_unknown='ignore', sparse_output=False)) 
])
print("標稱特征處理 Pipeline 定義完成。")
continuous_features = [f for f in X.columns if f not in ordinal_features + nominal_features]
continuous_transformer = Pipeline(steps=[('imputer', SimpleImputer(strategy='most_frequent')),('scaler', StandardScaler()) 
print("連續特征處理 Pipeline 定義完成。")

五、串聯預處理器和模型

preprocessor = ColumnTransformer(transformers=[('ordinal', ordinal_transformer, ordinal_features), ('nominal', nominal_transformer, nominal_features), ('continuous', continuous_transformer, continuous_features) ],remainder='passthrough' # 如何處理沒有在上面列表中指定的列。
)
print("\nColumnTransformer (預處理器) 定義完成。")
pipeline = Pipeline(steps=[('preprocessor', preprocessor), ('classifier', RandomForestClassifier(random_state=42)) 
])
print("\n完整的 Pipeline 定義完成。")
print("\n--- 1. 默認參數隨機森林 (訓練集 -> 測試集) ---") 
start_time = time.time() 
pipeline.fit(X_train, y_train)
pipeline_pred = pipeline.predict(X_test)
end_time = time.time() 
print(f"訓練與預測耗時: {end_time - start_time:.4f} 秒") 
print("\n默認隨機森林 在測試集上的分類報告:") 
print(classification_report(y_test, pipeline_pred))
print("默認隨機森林 在測試集上的混淆矩陣:") 
print(confusion_matrix(y_test, pipeline_pred))

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

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

相關文章

Vue.js框架的優缺點

別再讓才華被埋沒,別再讓github 項目蒙塵!github star 請點擊 GitHub 在線專業服務直通車GitHub賦能精靈 - 艾米莉,立即加入這場席卷全球開發者的星光革命!若你有快速提升github Star github 加星數的需求,訪問taimili…

交易流水表的分庫分表設計

交易流水表的分庫分表設計需要結合業務特點、數據增長趨勢和查詢模式,以下是常見的分庫分表策略及實施建議: 一、分庫分表核心目標 解決性能瓶頸:應對高并發寫入和查詢壓力。數據均衡分布:避免單庫/單表數據傾斜。簡化運維&#…

操作系統學習筆記第3章 (竟成)

第 3 章 內存管理 【考綱內容】 1.內存管理基礎: 1.內存管理的基本概念:邏輯地址空間與物理地址空間;地址變換;內存共享;內存保護;內存分配與回收; 2.連續分配管理方式; 3.頁式管理&…

中科院無人機導航物流配送的智能變革!LogisticsVLN:基于無人機視覺語言導航的低空終端配送系統

作者:Xinyuan Zhang, Yonglin Tian, Fei Lin, Yue Liu, Jing Ma, Kornlia Sra Szatmry, Fei-Yue Wang 單位:中國科學院大學人工智能學院,中科院自動化研究所多模態人工智能系統國家重點實驗室,澳門科技大學創新工程學院工程科學系…

1.10-數據傳輸格式

1.10-數據傳輸格式 在對網站進行滲透測試時,使用目標服務器規定的數據傳輸格式來進行 payload 測試非常關鍵 如果不按規定格式發送數據,服務器可能直接拒絕請求或返回錯誤響應,比如: 接口要求 JSON 格式,而你用的是…

dfs 第一次加訓 詳解 下

目錄 P1706 全排列問題 思路 B3618 尋找團伙 思路 B3621 枚舉元組 思路 B3622 枚舉子集(遞歸實現指數型枚舉) 思路 B3623 枚舉排列(遞歸實現排列型枚舉) B3625 迷宮尋路 思路 P6183 [USACO10MAR] The Rock Game S 總結…

通信網絡編程——JAVA

1.計算機網絡 IP 定義與作用 :IP 地址是在網絡中用于標識設備的數字標簽,它允許網絡中的設備之間相互定位和通信。每一個設備在特定網絡環境下都有一個唯一的 IP 地址,以此來確定其在網絡中的位置。 分類 :常見的 IP 地址分為 I…

#在 CentOS 7 中手動編譯安裝軟件操作及原理

在 CentOS 7 中,手動編譯安裝軟件(即從源代碼編譯安裝)是一種高度靈活的方式,適用于需要定制化軟件功能、優化性能或安裝官方倉庫未提供的軟件版本的場景。以下是針對手動編譯安裝的詳細說明,包括原理、步驟、注意事項…

菊廠0510面試手撕題目解答

題目 輸入一個整數數組,返回該數組中最小差出現的次數。 示例1:輸入:[1,3,7,5,9,12],輸出:4,最小差為2,共出現4次; 示例2:輸入:[90,98,90,90,1,1]&#xf…

C——五子棋小游戲

前言 五子棋,又稱連珠棋,是一種雙人對弈的棋類游戲。游戲目標是在一個棋盤上,通過在橫、豎、斜線上依次放置棋子,使自己的五個棋子連成一線,即橫線、豎線或斜線,且無被對手堵住的空位,從而獲勝…

ik 分詞器 設置自定義詞典

進入 ES 的安裝目錄,進入 /elasticsearch-8.10.0/plugins/ik/config/ 文件夾目錄,打開 IKAnalyzer.cfg.xml 文件進行配置。 一、添加 自定義擴展詞典 擴展詞:就是不想哪些詞分開,讓他們成為一個詞,比如“蒙的全是對…

Linux筆記---信號(上)

1. 信號的概念 Linux下的信號機制是一種進程間通信(IPC)的方式,用于在不同進程之間傳遞信息。 信號是一種異步的信息傳遞方式,這意味著發送信號的進程只發送由信號作為載體的命令,而并不關心接收信號的進程如何處置這…

UG 二次開發- UG內部調用DLL

【1】用VS新建一個dll工程 將項目設置為x64平臺(這步很重要,否則程序無法編譯成功) 【2】添加UG頭文件目錄,屬性頁->C/C->常規->附加包含目錄 【3】添加UG庫所在目錄,屬性頁->鏈接器->常規->附加庫目…

wordcount在mapreduce的例子

1.啟動集群 2.創建項目 項目結構為&#xff1a; 3.pom.xml文件為 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://mave…

智慧城市綜合運營管理系統Axure原型

這款Axure原型的設計理念緊緊圍繞城市管理者的需求展開。它旨在打破傳統城市管理中信息孤島的局面&#xff0c;通過統一標準接入各類業務系統&#xff0c;實現城市運營管理信息資源的全面整合與共享。以城市管理者為中心&#xff0c;為其提供一個直觀、便捷、高效的協同服務平臺…

Go語言:json 作用和語法

在 Go 語言中&#xff0c;JSON 字段&#xff08;也稱為 JSON Tag&#xff09;是附加在結構體字段上的元數據&#xff0c;用于控制該字段在 JSON 編碼&#xff08;序列化&#xff09;和解碼&#xff08;反序列化&#xff09; 時的行為。它的語法是&#xff1a; type StructName…

MATLAB復制Excel數據到指定區域

Matlab中如何將Excel表中的265-528行F-AA列數據復制到1-263行AE-AZ中 版本&#xff1a;MatlabR2018b clc; clear; %舊Excel文件名 oldFile ; %新Excel文件名 newFile ; % 工作表名稱&#xff08;舊表和新表一致&#xff09; sheetName Sheet1; % 舊文件中待復制的數據范…

vue3+flask+sqlite前后端項目實戰

基礎環境安裝 pycharm 下載地址&#xff1a; https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows vscode 下載地址 https://code.visualstudio.com/docs/?dvwin64user python 下載地址 https://www.python.org/downloads/windows/ Node.js&#xff08;含npm…

Java 內存模型(JMM)與內存屏障:原理、實踐與性能權衡

Java 內存模型&#xff08;JMM&#xff09;與內存屏障&#xff1a;原理、實踐與性能權衡 在多線程高并發時代&#xff0c;Java 內存模型&#xff08;JMM&#xff09; 及其背后的內存屏障機制&#xff0c;是保障并發程序正確性與性能的基石。本文將系統梳理 JMM 的核心原理、內…

動手學深度學習12.3.自動并行-筆記練習(PyTorch)

以下內容為結合李沐老師的課程和教材補充的學習筆記&#xff0c;以及對課后練習的一些思考&#xff0c;自留回顧&#xff0c;也供同學之人交流參考。 本節課程地址&#xff1a;無 本節教材地址&#xff1a;12.3. 自動并行 — 動手學深度學習 2.0.0 documentation 本節開源代…