機器學習實驗三、使用決策樹算法預測泰坦尼克號幸存者

  • 實驗目的

1. 掌握特征工程,會進行特征提取與特征選擇,會進行缺失值填充。

2.?建立決策樹模型,解決實際問題。

3. 會對模型進行調試,能夠繪制并保存決策樹。

  • 實驗環境

Python 3.7.0,Sklearn ,PyCharm

  • 實驗原理

1、特征工程

特征工程、降維與超參數調優是機器學習工程應用中的三個重要問題。在優惠券核銷示例中討論過,輸入模型進行訓練的一般不是實例的屬性,而是從實例的屬性數據中提取出的特征。降維技術可以解決因為特征過多而帶來的樣本稀疏、計算量大等問題。

在訓練時,算法參數的設置對算法效果的影響很大,設置合適算法參數的過程稱為“超參數調優”。特征工程的目標是從實例的原始數據中提取出供模型訓練的合適特征。特征的提取與問題的領域知識密切相關。特征工程在機器學習過程中的位置和作用如下圖所示。特征提取是一種創造性的活動,沒有固定的規則可循。一般來說,需要先從總體上理解數據,必要時可通過可視化來幫助理解,然后運用領域知識進行分析和聯想,然后處理數據提取特征。

首先要數據預處理:

2、決策樹算法

決策樹,可以理解為:從訓練數據中學習得出一個樹狀結構的模型。決策樹屬于判別模型,既可以做分類也可以做回歸。

可分為訓練階段和分類階段:

訓練階段:從給定的訓練數據集DB,構造出一棵決策樹:class=DecisionTree(DB)

分類階段:從根開始,按照決策樹的分類屬性逐層往下劃分,直到葉節點,獲得決策結果。y= DecisionTree(x)

基尼指數:1.對于樣本集D,假設有K個分類,則樣本屬于第k類的概率為p;,則此概率分布的基尼指數定義為:

如果樣本集D按照某個屬性被劃分成獨立的兩個子集D,和Dz,其基尼指數為:

度量樣本集合純度最常用的一種指標。假定當前樣本集合D中第k類樣本所占的比例為p;(k = 1,2.. . , K),則D的信息嫡定義為:

信息增益率:

信息增益:

  • 實驗內容

泰坦尼克號的沉沒是歷史上最著名的沉船之一。1912年4月15日,在首航期間,泰坦尼克號撞上一座冰山后沉沒,2224名乘客和機組人員中有1502人遇難。這一聳人聽聞的悲劇震撼了國際社會,并導致了更好的船舶安全條例。

沉船導致生命損失的原因之一是乘客和船員沒有足夠的救生艇。雖然幸存下來的運氣有一些因素,但有些人比其他人更有可能生存,比如婦女,兒童和上層階級。

在這個挑戰中,我們要求你完成對什么樣的人可能生存的分析。特別是,我們要求你運用機器學習的工具來預測哪些乘客幸存下來的悲劇。數據描述如下:

特征

描述

特征描述

PassengerId

序號,乘客編號

乘客ID,對結果無影響

Survival

生存,是否獲救

1是存活,0是未存活

Pclass

票類別-社會地位

船艙等級,1 = Upper,2 = Middle,3= Lower

Name

乘客姓名

乘客姓名,對結果無影響

Sex

性別

male,female,女士優先,對結果有影響

Age

年齡

年齡,對結果有影響

SibSp

兄弟姐妹/配偶的數量

對結果有影響

Parch

父母/孩子的數量

對結果有影響

Ticket

票號

對結果無影響

Fare

乘客票價

和船艙等級一樣,有影響

Cabin

客艙號碼

對結果無影響

Embarked

登船港口,上船地點

C=Cherbourg, Q=Queenstown, S=Southampton

出發地點:S=英國南安普頓Southampton

途徑地點1:C=法國 瑟堡市Cherbourg

途徑地點2:Q=愛爾蘭 昆士敦Queenstown

數據內容如下:

顯然,這次事故中沒有多少乘客幸免于難。在訓練集的891名乘客中,只有342人幸存下來,只有38.4%的機組人員在空難中幸存下來。我們需要從數據中挖掘出更多的信息,看看哪些類別的乘客幸存下來,哪些沒有。

數據特征分為:連續值和離散值。

  1. 離散值:性別(男,女),登船地點(S,Q,C)
  2. 連續值:年齡,船票價格

任務一、對數據集進行特征處理

1.1源代碼

  1. 導入數據

  1. 獲取數據類型的描述統計信息

print(data.describe())

  1. 查看數據信息:

?print(data.info())

提取行與列:

提取行列中的數據:

  1. 查看是否有缺失值:

  1. 生還情況:

print(data['Survived'].value_counts())

  1. 正則表達:

  1. 對值統計:

?print(data['NewName'].value_counts()) ?

  1. 替換:

  1. 求平均年齡:

?print(data.groupby('NewName')['Age'].mean())

  1. 填充缺失值:

  1. 再次查看是否有缺失值并進行填充

?print(data.Age.isnull().sum()) ??# 0 表示沒有缺失值了。

  1. One-hot編碼:

  1. 特征協方差關系圖:

sns.heatmap(data.corr(), annot=True, cmap='gist_rainbow', linewidths=0.2, annot_kws={'size': 20}) ??

  1. 構建學習模型:測試集與訓練集

?

  1. 字符串值轉化為數字:

?

1.2實驗結果與分析

  1. 數據集詳情:

2.獲取數據類型的描述統計信息:

  1. 數據詳細信息:

  1. 前十行數據:

  1. 第一行第一列:

  1. 更詳細數據:

  1. 缺失值:

  1. 生還情況:

  1. 運用正則表達式,對值統計:

  1. 替換后:

  1. 平均年齡:

  1. 填補過程:計算出均值:港口確實填充:
  2. 編碼輸出:

  1. 學習模型:

?

任務二、構建決策模型

2.1源代碼

  1. 構建決策樹

  1. 實現決策樹的可視化

2.2實驗結果與分析

決策樹可視化結果:

精確的決策樹信息

  • 實驗總結及注意事項

實驗總結:特征工程的處理方法有數據預處理、特征提取,特征選擇和特征降維,最后構建響應模型;特征提取方面,我們的數值類型可直接使用,時間序列需轉成單獨的年月日,分類數據可用數值代替類別one-hot編碼。本次試驗中也可以使用常用的數據挖掘手段對乘客的獲救率進行預測。創建決策樹時,構建模型中需建立和測試數據集,從而進行達到評估模型的結果。

注意事項:導入數據與訓練數據集與前幾次實驗相通,本次的data明顯類型復雜許多,并且在決策樹建模過程,我們也可以通過交叉驗證的方法有待學習,最后,在這次問題的分析方面,也可以通過后面的學習進行數據分析,使用決策函數進行預測。

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

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

相關文章

從全棧開發到微服務架構:一次真實的Java面試實錄

從全棧開發到微服務架構:一次真實的Java面試實錄 面試官與應聘者介紹 面試官:李明,某互聯網大廠技術負責人,擅長Java后端、微服務及云原生架構。 應聘者:張偉,28歲,碩士學歷,擁有5年…

新的 Gmail 網絡釣魚攻擊利用 AI 提示注入來逃避檢測

網絡釣魚一直以來都是為了欺騙人們。但在這次活動中,攻擊者不僅瞄準用戶,還試圖操縱基于人工智能的防御系統。 這是我上周記錄的Gmail 網絡釣魚鏈的演變。那次攻擊活動依賴于緊迫性和重定向,但這次引入了隱藏的 AI 提示,旨在混淆…

Restful風格設計

文章目錄什么是Restful風格?RESTful API設計最佳實踐1. URL設計原則2. HTTP狀態碼的正確使用3. 統一的響應格式實際案例:用戶管理系統API總結什么是Restful風格? 我的理解是:Restful是一種基于HTTP協議的架構設計風格&#xff0c…

深入 Glide 圖像變換:自定義效果、GIF處理與組合變換

在 Android 開發中,Glide 的強大不僅在于其高效的加載和緩存能力,更在于其無與倫比的可擴展性,尤其是在圖像處理層面。當內置的 fitCenter() 和 circleCrop() 無法滿足你的設計需求時,自定義 Transformation 便是你的終極武器。本…

數據挖掘 4.8 評估泛化能力

4.8 Estimating Generalization 4.8 評估泛化能力 評估模型的泛化能力如何合理評估模型的泛化能力指導原則 (Guidelines)存在的問題 (Issues)K-fold 交叉驗證(Cross-Validation)留一交叉驗證(Leave One Out CV)(LOOCV)Stratification 分層訓練…

46.【.NET8 實戰--孢子記賬--從單體到微服務--轉向微服務】--擴展功能--集成網關--網關集成日志

本篇文章,我們一起在網關中集成日志功能,我們要在網關中記錄下游微服務出現的異常信息、請求信息以及響應信息。在微服務架構中,網關作為系統的入口,承擔著非常重要的職責。通過在網關層面集成日志功能,我們可以更好地…

使用 FastAPI 的 WebSockets 和 Elasticsearch 來構建實時應用

作者:來自 Elastic Jeffrey Rengifo 學習如何使用 FastAPI WebSockets 和 Elasticsearch 構建實時應用程序。 更多閱讀:使用 FastAPI 構建 Elasticsearch API 想要獲得 Elastic 認證嗎?看看下一次 Elasticsearch Engineer 培訓什么時候開始&…

華為云ModelArts+Dify AI:雙劍合璧使能AI應用敏捷開發

引言:AI應用開發的敏捷化轉型需求 隨著大語言模型(LLM)技術的迅猛發展,企業與開發者對AI應用開發的敏捷化轉型需求日益凸顯,亟需將大模型能力快速轉化為實際業務價值。傳統AI開發模式中,復雜的模型工程化、流程編排和部署維護工作往往需要專業技術團隊支撐,典型痛點包括…

網絡實踐——Socket編程UDP

文章目錄Socket編程UDPUDP接口的使用鋪墊socketrecvform && sendtobind字節序轉化使用(Tips)實踐部分version_1echo_serverversion_2dict_serverversion_3chat_serverSocket編程UDP 在了解了相關的網絡基礎知識后,我們不會像學系統知識一樣,先學…

GD32 波形發生器,三角波,正弦波,方波。AD9833+MCP410生成和MCU自身的DAC生成。波形,頻率,振幅可以通過按鍵和OLED調整輸出。

DIY一個簡易的信號發生器驅動板,主要是三角波和正弦波,方波。主板有兩個通道能輸出波形,CH0由AD9833MCP410AD8051放大電路組成,理論可以生成0.1-12.5MHZ的頻率信號,單電源振幅范圍是1-9V。CH1由MCU外設DAC生成的信號&a…

VS2022的MFC中關聯使用控制臺并用printf輸出調試信息

前言 MFC一般在調試的時候,可以在IDE中方便的看到調試的信息。但是,有時候運行的時候也要看調試的信息怎么辦?最好如同在Console(控制臺)程序中輸出一般的方便,可以么?可以的。 一、設置 1.1、加…

ZKmall模塊商城的推薦數據體系:從多維度采集到高效存儲的實踐

在電商領域,個性化推薦已成為提升用戶體驗與轉化效率的核心手段。ZKmall 模塊商城基于用戶行為、商品屬性與交易數據,構建了一套完整的推薦算法體系,而數據采集的全面性與存儲的高效性是該體系的基礎。本文將聚焦推薦算法的 “數據輸入端”&a…

Qt + windows+exe+msvc打包教程

目錄 1. Qt + windows+exe+msvc打包教程1 1.1. Enigma Virtual Box下載?1 1.2. Enigma Virtual Box安裝2 1.3. Qt 打包成獨立exe教程6 1.3.1. Qt項目創建6 1.3.2. Qt項目編譯13 1.3.3. Qt 項目打包 windeployqt命令14 1.3.4. Qt 項目打包 Enigma Virtual Box工具18 Q…

大語言模型應用開發——利用OpenAI函數與LangChain結合從文本構建知識圖譜搭建RAG應用全流程

概述 從文本等非結構化數據中提取結構化信息并非新鮮事物,但大語言模型(LLMs)為該領域帶來了重大變革。以往需要機器學習專家團隊策劃數據集并訓練自定義模型,如今只需訪問LLM即可實現,顯著降低了技術門檻&#xff0c…

Vue3+Spring Boot技術棧,前端提交混合表單數據(普通字段+文件字段),上傳文件,后端插入數據,將文件保存到數據庫

一、技術棧1、前端 Vue3 Element Plus TypeSprict2、后端 Spring Boot 3.2.12 Mybatis Plus3、模型特點3.1、表格展示列表數據3.2、行點擊,彈出對話框3.3、前端使用 FormData 提交混合表單數據,包含普通字段和文件字段3.4、文件對應數據庫結構類型為 …

【Qt開發】Qt的背景介紹(四)

目錄 1 -> Qt Hello World 程序 1.1 -> 使用“按鈕”實現 1.1.1 -> 純代碼方式實現 1.1.2 -> 可視化操作實現 1.2 -> 使用“標簽”實現 1.2.1 -> 純代碼方式實現 1.2.2 -> 可視化操作實現 2 -> 項目文件解析 2.1 -> .pro文件解析 2.2 -&g…

Linux驅動開發筆記(六)——pinctrl GPIO

開發板:imx6ull mini 虛擬機:VMware17 ubuntu:ubuntu20.04 視頻:第8.1講 pinctrl和gpio子系統試驗-pincrl子系統詳解_嗶哩嗶哩_bilibili 文檔:《【正點原子】I.MX6U嵌入式Linux驅動開發指南.pdf》四十五章 這一章…

SpringBoot 快速上手:從環境搭建到 HelloWorld 實戰

在 Java 開發領域,Spring 框架占據著舉足輕重的地位,但它復雜的配置曾讓不少開發者望而卻步。SpringBoot 的出現,如同為 Spring 框架裝上了 “加速器”,以 “約定大于配置” 的理念簡化了開發流程。本文將從環境準備、Maven 配置入…

圖、最小生成樹與最短路徑

目錄 并查集 并查集實現 圖 概念 圖的存儲結構 鄰接矩陣 鄰接表 無向圖 有向圖 圖的遍歷 廣度優先遍歷 深度優先遍歷 最小生成樹 Kruskal算法(克魯斯卡爾算法) Prim算法(普利姆算法) 最短路徑 單源最短路徑--Dij…

互聯網電商新生態:開源AI智能名片、鏈動2+1模式與S2B2C商城小程序的融合賦能

摘要:本文聚焦互聯網電商領域,探討在當下直播電商蓬勃發展的背景下,開源AI智能名片、鏈動21模式以及S2B2C商城小程序如何相互融合,為創業者、企業和淘寶主播IP等電商參與者帶來新的發展機遇。通過分析各要素的特點與優勢&#xff…