版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章
數(shù)據(jù)倉(cāng)庫(kù)概述目錄1.1什么是數(shù)據(jù)倉(cāng)庫(kù)
1.2數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)
1.3數(shù)據(jù)倉(cāng)庫(kù)的體系結(jié)構(gòu)
1.4數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器1.5多維數(shù)據(jù)模型1.6OLAP、OLTP及與數(shù)據(jù)倉(cāng)庫(kù)的關(guān)系1.7OLAP服務(wù)器1.8課后習(xí)題1.1
什么是數(shù)據(jù)倉(cāng)庫(kù)1.1什么是數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)倉(cāng)庫(kù)(DataWarehouse,DW)是一個(gè)面向主題的(SubjectOriented)、集成的(Integrated)、相對(duì)穩(wěn)定的(Non-Volatile)、反映歷史變化(TimeVariant)的數(shù)據(jù)集合,用于支持管理決策(DecisionMakingSupport)。特點(diǎn):(1)數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)面向主題的數(shù)據(jù)集合(2)數(shù)據(jù)倉(cāng)庫(kù)是集成的(3)數(shù)據(jù)倉(cāng)庫(kù)是相對(duì)穩(wěn)定的(4)數(shù)據(jù)倉(cāng)庫(kù)反映歷史變化1.2
數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)1.2數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)倉(cāng)庫(kù)的形成離不開(kāi)數(shù)據(jù)庫(kù),因此,數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)庫(kù)之間存在千絲萬(wàn)縷的聯(lián)系,也存在著很多區(qū)別。存在的聯(lián)系:(1)技術(shù)基礎(chǔ)共享(2)數(shù)據(jù)基礎(chǔ)及規(guī)范化要求(3)發(fā)展趨勢(shì)及融合1.2數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)區(qū)別:1.3
數(shù)據(jù)倉(cāng)庫(kù)的體系結(jié)構(gòu)1.3數(shù)據(jù)倉(cāng)庫(kù)的體系結(jié)構(gòu)(1)數(shù)據(jù)源層(2)數(shù)據(jù)準(zhǔn)備(3)數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器(4)OLAP服務(wù)器(5)前端客戶層1.4
數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器1.4數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器中裝載著數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)集市以及描述數(shù)據(jù)倉(cāng)庫(kù)的元數(shù)據(jù)庫(kù)等數(shù)據(jù)系統(tǒng),這些數(shù)據(jù)系統(tǒng)共同支撐上層應(yīng)用系統(tǒng)進(jìn)行挖掘、分析。(1)數(shù)據(jù)倉(cāng)庫(kù)模型從結(jié)構(gòu)的角度看,有三種數(shù)據(jù)倉(cāng)庫(kù)模型,分別為企業(yè)倉(cāng)庫(kù)、數(shù)據(jù)集市和虛擬倉(cāng)庫(kù)。(2)企業(yè)倉(cāng)庫(kù)企業(yè)倉(cāng)庫(kù)(EnterpriseWarehouse),有時(shí)也被稱為企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)或企業(yè)數(shù)據(jù)倉(cāng)庫(kù)(EnterpriseDataWarehouse,EDW),是一個(gè)集中式的、面向企業(yè)全局的數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)。1.4數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器中裝載著數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)集市以及描述數(shù)據(jù)倉(cāng)庫(kù)的元數(shù)據(jù)庫(kù)等數(shù)據(jù)系統(tǒng),這些數(shù)據(jù)系統(tǒng)共同支撐上層應(yīng)用系統(tǒng)進(jìn)行挖掘、分析。(3)數(shù)據(jù)集市按照數(shù)據(jù)來(lái)源和功能不同,數(shù)據(jù)集市可以分為從屬數(shù)據(jù)集市和中央數(shù)據(jù)集市。1.4數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器中裝載著數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)集市以及描述數(shù)據(jù)倉(cāng)庫(kù)的元數(shù)據(jù)庫(kù)等數(shù)據(jù)系統(tǒng),這些數(shù)據(jù)系統(tǒng)共同支撐上層應(yīng)用系統(tǒng)進(jìn)行挖掘、分析。(4)虛擬倉(cāng)庫(kù)
虛擬倉(cāng)庫(kù)是一種數(shù)據(jù)集合和處理方式的概念,它并不對(duì)應(yīng)于某個(gè)具體的物理存儲(chǔ)位置,而是將分布在不同系統(tǒng)和地域的數(shù)據(jù)源在邏輯上連接到一起,實(shí)現(xiàn)數(shù)據(jù)的集中管理和統(tǒng)一查詢。虛擬倉(cāng)庫(kù)易于建立,但需要操作數(shù)據(jù)庫(kù)服務(wù)器有足夠資源。1.5
多維數(shù)據(jù)模型1.5多維數(shù)據(jù)模型多維數(shù)據(jù)模型是數(shù)據(jù)倉(cāng)庫(kù)中用于數(shù)據(jù)分析和決策支持的一種重要數(shù)據(jù)組織方式。在數(shù)據(jù)倉(cāng)庫(kù)中,多維數(shù)據(jù)模型通過(guò)構(gòu)建數(shù)據(jù)立方體(DataCube)等結(jié)構(gòu),將數(shù)據(jù)按照多個(gè)維度進(jìn)行組織,以便進(jìn)行復(fù)雜的數(shù)據(jù)分析。數(shù)據(jù)立方體允許以多維數(shù)據(jù)建模和觀察,下圖給出展示了常見(jiàn)的數(shù)據(jù)立方體數(shù)據(jù)結(jié)構(gòu)圖:1.5多維數(shù)據(jù)模型多維數(shù)據(jù)模型可以以星型模式、雪花模式、或事實(shí)星座模式的形式存在。(1)星型模式(StarSchema):1.5多維數(shù)據(jù)模型多維數(shù)據(jù)模型可以以星型模式、雪花模式、或事實(shí)星座模式的形式存在。(2)雪花模式(SnowflakeSchema):1.5多維數(shù)據(jù)模型多維數(shù)據(jù)模型可以以星型模式、雪花模式、或事實(shí)星座模式的形式存在。(3)事實(shí)星座(FactConstellations)::1.6
OLAP、OLTP及與數(shù)據(jù)倉(cāng)庫(kù)的關(guān)系1.6OLAP、OLTP及與數(shù)據(jù)倉(cāng)庫(kù)的關(guān)系聯(lián)機(jī)事務(wù)處理(OnlineTransactionProcessing,OLTP)主要任務(wù)是執(zhí)行聯(lián)機(jī)事務(wù)和查詢處理。涵蓋了單位的大部分日常操作,如購(gòu)物、庫(kù)存、銀行、工資、注冊(cè)、記賬等。聯(lián)機(jī)分析處理(OnlineAnalyticalProcessing,OLAP)主要任務(wù)是在數(shù)據(jù)分析和決策方面為用戶或“知識(shí)工人”提供服務(wù)。這種系統(tǒng)可以用不同的格式組織提供數(shù)據(jù),以便滿足不同用戶的不同需求。1.7
OLAP服務(wù)器1.7OLAP服務(wù)器數(shù)據(jù)倉(cāng)庫(kù)中的OLAP(OnlineAnalyticalProcessing,在線分析處理)服務(wù)器是一個(gè)專門(mén)用于支持復(fù)雜數(shù)據(jù)分析和查詢的軟件或硬件平臺(tái)。主要功能:(1)數(shù)據(jù)存儲(chǔ)與管理(2)數(shù)據(jù)聚合與統(tǒng)計(jì)(3)數(shù)據(jù)查詢與分析(4)報(bào)表生成與可視化1.8
課后習(xí)題1.8課后習(xí)題1.請(qǐng)簡(jiǎn)述數(shù)據(jù)倉(cāng)庫(kù)的基本概念及其與操作型數(shù)據(jù)庫(kù)的區(qū)別
。2.數(shù)據(jù)倉(cāng)庫(kù)的四個(gè)基本特征是什么?請(qǐng)分別解釋它們的含義。3.請(qǐng)描述數(shù)據(jù)倉(cāng)庫(kù)的三層體系結(jié)構(gòu),并說(shuō)明每一層的作用和意義。4.數(shù)據(jù)準(zhǔn)備過(guò)程中包括哪些關(guān)鍵步驟?這些步驟對(duì)于數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)有何重要性?5.簡(jiǎn)述企業(yè)倉(cāng)庫(kù)、數(shù)據(jù)集市和虛擬倉(cāng)庫(kù)的定義及其各自的特點(diǎn)。6.請(qǐng)解釋ROLAP、MOLAP和HOLAP的區(qū)別,并討論它們?cè)诓煌瑘?chǎng)景下的適用性。7.如何理解數(shù)據(jù)倉(cāng)庫(kù)與OLAP之間的關(guān)系?它們?cè)跊Q策支持系統(tǒng)中是如何協(xié)作的?8.結(jié)合實(shí)際案例,談?wù)剶?shù)據(jù)倉(cāng)庫(kù)在企業(yè)管理決策中的作用和價(jià)值。第2章
分布式數(shù)據(jù)倉(cāng)庫(kù)目錄2.1什么是Hive
2.2Hive用在哪里
2.3Hive與傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的比較
2.4Hive的優(yōu)缺點(diǎn)2.5Hive的功能與架構(gòu)2.6Hive運(yùn)行流程2.7Hive數(shù)據(jù)存儲(chǔ)模型2.8課后習(xí)題1.1
什么是Hive2.1什么是HiveHive是一個(gè)建立在Hadoop文件系統(tǒng)上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)架構(gòu),它提供了一系列工具,能夠?qū)Υ鎯?chǔ)在HDFS(Hadoop分布式文件系統(tǒng))中的數(shù)據(jù)進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)換和加載(ETL),允許熟悉SQL的用戶查詢數(shù)據(jù),同時(shí)也允許熟悉MapReduce的開(kāi)發(fā)者開(kāi)發(fā)mapper和reducer來(lái)處理復(fù)雜的分析工作。特性:(1)靈活方便的ETL(2)支持Tez、Spark等多種計(jì)算引擎(3)可直接訪問(wèn)HDFS文件以及HBase(4)易用易編程2.2Hive用在哪里2.2Hive用在哪里Hive的最佳使用場(chǎng)合是大數(shù)據(jù)集的批處理作業(yè),例如,網(wǎng)絡(luò)日志分析或者不同行業(yè)中的用戶行為分析、風(fēng)險(xiǎn)管理等多個(gè)方面。2.3Hive與傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的比較1.2數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)區(qū)別:1.2數(shù)據(jù)倉(cāng)庫(kù)與傳統(tǒng)數(shù)據(jù)庫(kù)區(qū)別:2.4Hive的優(yōu)缺點(diǎn)2.4Hive的優(yōu)缺點(diǎn)Hive使用集群模式和超時(shí)重傳機(jī)制實(shí)現(xiàn)了高可靠和高容錯(cuò)。2.4Hive的優(yōu)缺點(diǎn)
但是,Hive本身也有一些缺點(diǎn):(1)延遲高,因?yàn)镸R本身延遲就高(2)不支持物化視圖(就是不能在試圖上進(jìn)行增刪改,僅支持普通的查詢視圖)(3)不適用OLTP(4)只支持函數(shù),不支持存儲(chǔ)過(guò)程2.5Hive的功能與架構(gòu)2.5Hive的功能與架構(gòu)Hive的功能結(jié)構(gòu):2.6Hive運(yùn)行流程2.6Hive運(yùn)行流程Hive的運(yùn)行流程是一個(gè)復(fù)雜但高度優(yōu)化的過(guò)程,它主要依賴于Hadoop的MapReduce框架或其他執(zhí)行引擎(如Tez、Spark)來(lái)處理大規(guī)模數(shù)據(jù),下圖給出了一個(gè)基本的工作流程:2.7Hive數(shù)據(jù)存儲(chǔ)模型2.7Hive數(shù)據(jù)存儲(chǔ)模型Hive的數(shù)據(jù)存儲(chǔ)模型是建立在Hadoop文件系統(tǒng)之上的,它提供了靈活的數(shù)據(jù)存儲(chǔ)方式,以支持大規(guī)模數(shù)據(jù)的存儲(chǔ)和分析。數(shù)據(jù)庫(kù)表表傾斜數(shù)據(jù)分區(qū)分區(qū)桶桶桶桶正常數(shù)據(jù)2.8
課后習(xí)題2.8課后習(xí)題1.請(qǐng)簡(jiǎn)述Hive的基本概念及其在大數(shù)據(jù)處理中的作用。2.Hive的運(yùn)行流程包括哪些主要階段?每個(gè)階段的主要任務(wù)是什么?3.請(qǐng)解釋Hive的三種部署方式:內(nèi)嵌模式、本地模式和遠(yuǎn)程模式,并說(shuō)明它們的主要區(qū)別。4.簡(jiǎn)述Hive數(shù)據(jù)存儲(chǔ)模型的主要組成部分,包括數(shù)據(jù)庫(kù)、表、分區(qū)、桶等概念及其作用。5.請(qǐng)解釋Hive中桶的概念及其作用,并說(shuō)明如何創(chuàng)建分桶表以及分桶的應(yīng)用場(chǎng)景。第3章HiveQL操作目錄3.1Hive基本操作
3.2數(shù)據(jù)定義語(yǔ)言
3.3數(shù)據(jù)管理語(yǔ)言
3.4數(shù)據(jù)查詢語(yǔ)言3.5課后習(xí)題
3.1Hive基本操作3.1Hive基本操作SQL(StructuredQueryLanguage)是用于管理關(guān)系數(shù)據(jù)庫(kù)的編程語(yǔ)言,本章節(jié)將基于Hive介紹SQL語(yǔ)句,簡(jiǎn)稱HiveQL,無(wú)論基于哪種技術(shù),SQL語(yǔ)句它包含了如下幾種主要的語(yǔ)言類別:(1)數(shù)據(jù)定義語(yǔ)言(2)數(shù)據(jù)操縱語(yǔ)言(3)數(shù)據(jù)控制語(yǔ)言(4)事務(wù)控制語(yǔ)言(5)數(shù)據(jù)查詢語(yǔ)言3.2
數(shù)據(jù)定義語(yǔ)言3.2數(shù)據(jù)定義語(yǔ)言(1)建表與SQL一樣,在HiveQL中,建表操作也是通過(guò)CREATETABLE語(yǔ)句來(lái)實(shí)現(xiàn)的。用戶需要指定表的名稱、列名、數(shù)據(jù)類型以及其他可選的屬性,如分區(qū)、存儲(chǔ)格式等。(2)修改表修改表操作包括更改表名、增加/刪除列、更改列的數(shù)據(jù)類型、增加/刪除分區(qū)等。在Hive中,這些操作分別通過(guò)ALTERTABLE語(yǔ)句的不同子句來(lái)實(shí)現(xiàn)。(3)刪除表刪表操作通過(guò)DROPTABLE語(yǔ)句來(lái)實(shí)現(xiàn),該操作會(huì)刪除表及其元數(shù)據(jù),但不會(huì)刪除外部表所指向的HDFS上的數(shù)據(jù)。3.3
數(shù)據(jù)管理語(yǔ)言3.3數(shù)據(jù)管理語(yǔ)言(1)數(shù)據(jù)導(dǎo)入在Hive中,使用INSERT語(yǔ)句來(lái)插入數(shù)據(jù)與使用LOADDATAINPATH命令是兩種不同的操作。INSERT語(yǔ)句通常用于將查詢結(jié)果插入到表中,而LOADDATAINPATH用于將HDFS上的文件移動(dòng)到Hive表中。(2)數(shù)據(jù)導(dǎo)出數(shù)據(jù)導(dǎo)出操作可以通過(guò)INSERTOVERWRITE語(yǔ)句將查詢結(jié)果導(dǎo)出到HDFS上的文件或目錄中,或者使用EXPORTTABLE命令(僅適用于部分Hive版本和存儲(chǔ)格式)。3.4
數(shù)據(jù)查詢語(yǔ)言3.4數(shù)據(jù)查詢語(yǔ)言Hive數(shù)據(jù)庫(kù)的查詢操作與關(guān)系型數(shù)據(jù)庫(kù)相似,特別的是Hive提供了窗口函數(shù)(WindowFunctions),這些函數(shù)可以對(duì)數(shù)據(jù)集中的相關(guān)行集(即“窗口”)執(zhí)行計(jì)算,而無(wú)需對(duì)數(shù)據(jù)進(jìn)行分組。窗口函數(shù)常用于執(zhí)行運(yùn)行總計(jì)、移動(dòng)平均、排名等操作。Hive支持的窗口函數(shù)可以分為以下幾類:(1)排名函數(shù)(2)分析函數(shù)(3)聚合函數(shù)3.5
課后習(xí)題3.5課后習(xí)題1.請(qǐng)描述Hive中的DDL(數(shù)據(jù)定義語(yǔ)言)、DML(數(shù)據(jù)管理語(yǔ)言)和DQL(數(shù)據(jù)查詢語(yǔ)言)操作的主要內(nèi)容。2.請(qǐng)舉例說(shuō)明如何在Hive中創(chuàng)建表、修改表、刪除表、分區(qū)以及數(shù)據(jù)導(dǎo)入和導(dǎo)出的操作。3.請(qǐng)簡(jiǎn)述Hive中托管表和外部表的區(qū)別,以及它們?cè)趯?shí)際應(yīng)用中的適用場(chǎng)景。第4章
表格處理本章主要內(nèi)容4.1針對(duì)表格的操作4.2常用函數(shù)4.3圖表4.1
針對(duì)表格的操作4.1針對(duì)表格的操作4.1.1數(shù)據(jù)分列4.1.2Ctr+E4.1.3大小寫(xiě)數(shù)字轉(zhuǎn)換4.1.4快速定位缺失值4.1.5凍結(jié)窗口4.2
常用函數(shù)4.2常用函數(shù)4.2.1數(shù)值運(yùn)算函數(shù)4.2.2字符處理函數(shù)4.2.3邏輯運(yùn)算函數(shù)4.2.4VLOOKUP4.2.5時(shí)間序列函數(shù)4.3
圖表4.3圖表4.3.1生成圖表4.3.2圖表的細(xì)節(jié)修改第5章Python與Numpy本章主要內(nèi)容5.1Python簡(jiǎn)介5.2Numpy簡(jiǎn)介5.3課后習(xí)題5.1Python簡(jiǎn)介5.1Python簡(jiǎn)介近些年,由于Python語(yǔ)言的簡(jiǎn)潔性、易讀性和可擴(kuò)展性,IT行業(yè)內(nèi)外掀起了一股學(xué)習(xí)Python的熱潮,特別是隨著大量方便快捷的擴(kuò)展工具包涌現(xiàn),Python更是成為了很多都市白領(lǐng)的必備技能。5.1.1Anaconda簡(jiǎn)介Anaconda是一個(gè)開(kāi)源的Python發(fā)行版本,其包含了conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng),還有很多安裝好的工具包,比如之后介紹的numpy、pandas等。有了Anaconda我們的PC機(jī)就可以運(yùn)行各種各樣的Python科學(xué)計(jì)算程序。5.1.1Anaconda簡(jiǎn)介下載&雙擊傻瓜式“下一步”5.1.2JupiterNotebook簡(jiǎn)介5.1.2JupiterNotebook簡(jiǎn)介快速執(zhí)行某個(gè)cell里的代碼(shift+Enter)向前增加一個(gè)cell(a)向后增加一個(gè)cell(b)刪除一個(gè)cell(dd)清空已執(zhí)行的結(jié)果5.1.3Python常用語(yǔ)法變量類型列表型與字典型5.2Numpy簡(jiǎn)介5.2Numpy簡(jiǎn)介——原生python的問(wèn)題實(shí)戰(zhàn)案例:(1)有一個(gè)列表,里面裝有5個(gè)數(shù)字,現(xiàn)讓所有的數(shù)字都加上100,得到一個(gè)新列表。(2)一個(gè)人買了5種商品,第一個(gè)列表中存放著5種商品的個(gè)數(shù),第二個(gè)列表中存放著5中商品的單價(jià),求每個(gè)商品花了多少錢(qián)?5.2Numpy簡(jiǎn)介——numpy安裝5.2.1初始數(shù)組——Numpy中的ndarrayndarray是個(gè)好東西!!有了它,numpy可以無(wú)循環(huán)地對(duì)整組數(shù)據(jù)進(jìn)行快運(yùn)算。(1)ndarray數(shù)組大小不能變動(dòng),(2)數(shù)組內(nèi)元素類型必須保持一致(3)進(jìn)行對(duì)位運(yùn)算的數(shù)組大小必須相同(4)進(jìn)行對(duì)位運(yùn)算的數(shù)組內(nèi)元素類型必須相同5.2.2數(shù)組的創(chuàng)建用原生python的列表創(chuàng)建用numpy創(chuàng)建特定數(shù)組(zerosones)用numpy創(chuàng)建有規(guī)律的數(shù)組(arangelinspace)用numpy創(chuàng)建隨機(jī)數(shù)組(random.randintrandom.uniform)5.2.3數(shù)組的索引——數(shù)組的形狀與維度多維數(shù)組reshapeshapesizeT5.2.3數(shù)組的索引傳統(tǒng)索引 array[0][0]新索引
array[0,0]切片布爾型索引花式索引5.2.4Numpy的常用方法和屬性求數(shù)組中每個(gè)元素的絕對(duì)值:np.abs()求數(shù)組中每個(gè)元素四舍五入值:np.round()求數(shù)組中每個(gè)元素向上取整:np.ceil()求數(shù)組中每個(gè)元素向下取整:np.floor()求數(shù)組中所有元素的平均值:np.mean()求數(shù)組中所有元素的方差:np.var()求數(shù)組中所有元素的標(biāo)準(zhǔn)差:np.std()求數(shù)組中最大值:np.max()求數(shù)組中最小值:np.min()求數(shù)組中最大值對(duì)應(yīng)的索引:np.argmax()求數(shù)組中最小值對(duì)應(yīng)的索引:np.argmin()取兩個(gè)數(shù)組中對(duì)位小的部分:np.minimum(a1,a2)取兩個(gè)數(shù)組中對(duì)位小的部分:np.maximum(a1,a2)5.2.4Numpy的常用方法和屬性np.inf和np.nan5.3
課后習(xí)題5.3課后習(xí)題1.安裝Anaconda,運(yùn)行圖5-8、圖5-9所示代碼;2.創(chuàng)建1個(gè)擁有8個(gè)元素的一維數(shù)組,內(nèi)容是8個(gè)隨機(jī)整數(shù),取值范圍是1-100,然后將這個(gè)數(shù)組轉(zhuǎn)化成一個(gè)2行4列的二維數(shù)組;3.創(chuàng)建1個(gè)擁有8個(gè)元素的一維數(shù)組,內(nèi)容是8個(gè)隨機(jī)整數(shù),取值范圍是1-100,采用布爾型索引找出其中大于10的元素;4.創(chuàng)建1個(gè)擁有8個(gè)元素的一維數(shù)組,內(nèi)容是8個(gè)隨機(jī)整數(shù),取值范圍是1-100,計(jì)算數(shù)組中所有元素的平均值、方差。第6章Pandas與Matplotlib本章主要內(nèi)容6.1Pandas6.2時(shí)間序列6.3Matplotlib6.4課后習(xí)題6.1Pandas6.1pandas——問(wèn)題引入問(wèn)題:一個(gè)數(shù)據(jù)表由什么組成?表1一季度股票收益表(單位:元)6.1pandas——問(wèn)題引入對(duì)于某一列數(shù)據(jù)業(yè)務(wù)含義的描述第一種描述方式:這一列的數(shù)據(jù)分別是“1010、2010、3010、4010、5010”,這些數(shù)據(jù)對(duì)應(yīng)的索引分別是“王二麻、張三、李四、王五、趙六”第二種描述方法:這一列數(shù)據(jù)分別表示“王二麻股票收益是1010”、“張三股票收益是2010”、“李四股票收益是3010”、“王五股票收益是4010”、“趙六股票收益是5010”如果使用numpy中的ndarray是否合理?如果使用字典型是否合理?6.1.1pandas中的SeriesPandas是一個(gè)非常強(qiáng)大的數(shù)據(jù)分析工具包(表格處理神器),可以進(jìn)行豐富的數(shù)學(xué)運(yùn)算和操作、靈活的缺失值處理,并且還提供了時(shí)間序列等數(shù)據(jù)分析常用功能。安裝方法如下:Series是pandas提供的一種數(shù)據(jù)類型,和Seriess1(ndarray)很像,但是由一組數(shù)據(jù)和一組與之相關(guān)的索引組成,可以理解為帶有索引的一列數(shù)據(jù)。6.1.2Series的創(chuàng)建方法一:通過(guò)pandas中的Series方法將原生python列表改造成Seires(注意index選項(xiàng)的使用)方法二:通過(guò)pandas中的Series將numpy中的ndarray改造成Series(注意index選項(xiàng)的使用)方法三:通過(guò)pandas中的Series方法將原生python中的字典型改造成Series注意:區(qū)分下標(biāo)索引和標(biāo)簽索引6.1.3Series的索引index和values屬性下標(biāo)索引和標(biāo)簽索引(均支持普通索引、切片、布爾型索引等索引方法)loc和iloc(均支持普通索引、切片、布爾型索引等索引方法)6.1.4Series的數(shù)據(jù)對(duì)齊普通對(duì)位計(jì)算對(duì)位計(jì)算時(shí)的自動(dòng)對(duì)齊(以標(biāo)簽索引為主,注意:如果無(wú)法對(duì)齊,則用nan補(bǔ)位或用其他數(shù)字補(bǔ)位)6.1.5Series的空值處理空值的判斷刪除填充替代Series數(shù)學(xué)計(jì)算Series常見(jiàn)的統(tǒng)計(jì)類計(jì)算(與numpy幾乎一模一樣)求Seriess1中每個(gè)元素的絕對(duì)值:s1.abs()求Seriess1中每個(gè)元素四舍五入值:s1.round()求Seriess1中每個(gè)元素向上取整:s1.ceil()求Seriess1中每個(gè)元素向下取整:s1.floor()求Seriess1中所有元素的平均值:s1.mean()求Seriess1中所有元素的方差:s1.var()求Seriess1中所有元素的標(biāo)準(zhǔn)差:s1.std()求Seriess1中最大值:s1.max()求Seriess1中最小值:s1.min()求Seriess1中最大值對(duì)應(yīng)的索引:s1.argmax()求Seriess1中最小值對(duì)應(yīng)的索引:s1.argmin().......6.1.6pandas中的DataFrameDataFrame是Pandas最重要的數(shù)據(jù)類型,它是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),主要面向表格數(shù)據(jù)的處理。DataFrame可以被看做是由Series組成的字典,這些Series共用一個(gè)索引。股票1:股票2:股票3:理解為6.1.6pandas中的DataFrame——?jiǎng)?chuàng)建DataFrame方法一:使用pandas中的dataframe方法,將多個(gè)Series合并成dataframe(如果多個(gè)Series的索引對(duì)不上,堅(jiān)持“對(duì)齊原則”,如果無(wú)法對(duì)齊將會(huì)出現(xiàn)nan,處理思路方法與Series的空值處理基本一致)方法二:讀取csv等類型文件(注意:index_col和names選項(xiàng))6.1.7DataFrame的屬性indexcolumnsvaluesshapesizedescribe()6.1.8DataFrame索引與切片傳統(tǒng)索引切片花式索引布爾型索引(注意:只能使用[])6.1.9DataFrame的對(duì)位運(yùn)算與對(duì)齊原則對(duì)位計(jì)算(遵守對(duì)齊原則)表的合并單表排序單表統(tǒng)計(jì)計(jì)算(內(nèi)容形式與Series基本相同)6.1.10DataFrame處理缺失值刪除有空值的行刪除有空值的列刪除全空的行填充6.1.11DataFrame的常用方法meansumstdsort_valuessort_indexdescribe6.2
時(shí)間序列6.2.1生成一個(gè)時(shí)間序列使用to_datatime方法將列表中的字符串轉(zhuǎn)成時(shí)間序列Pandas可以生成各種有規(guī)律的時(shí)間序列6.2.2時(shí)間序列的操作查看某個(gè)月的數(shù)據(jù)查看某些時(shí)間區(qū)間的數(shù)據(jù)查看各個(gè)月的數(shù)據(jù)統(tǒng)計(jì)6.2.3read_csv的高級(jí)應(yīng)用read_csv的高級(jí)選項(xiàng)to_csv的使用6.3Matplotlib6.3matplotlib——安裝matplotlib是一個(gè)畫(huà)圖的工具庫(kù),安裝方式如下:6.3.1使用matplotlib畫(huà)折線圖importnumpyasnpimportpandasaspd#引入matplotlib工具包importmatplotlib.pyplotasplt#創(chuàng)建表示x值的ndarray和y值的ndarray,二者為線性關(guān)系x=np.array(
[1,3,5,7,9])y=np.array([11,13,15,17,19])#畫(huà)線段圖,x是橫坐標(biāo),y是縱坐標(biāo)plt.plot(x,y)#顯示畫(huà)圖plt.show()6.3.2圖表詳細(xì)信息plt.title("Pic1")#顯示圖的名稱plt.xlabel("xlabel")#顯示x軸名稱plt.ylabel("ylabel")#顯示y軸名稱plt.xlim(0,6)#調(diào)整x軸的范圍為0-5plt.ylim(2,35)#調(diào)整y軸的范圍為2-35plt.xticks([0,2,4,6])#x軸只顯示列表里的點(diǎn)plt.yticks([10,20,30,35])#y軸只顯示列表里的點(diǎn)plt.legend()#將plot中l(wèi)abel的內(nèi)容以圖例形式顯示出6.3.3其他圖——使用matplotlib畫(huà)柱狀圖
importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#一共有四組數(shù)據(jù)作為x軸,分別是Season1Season2Season3Season4season=['Season1','Season2','Season3','Season4']#四個(gè)季度的收入分別是10萬(wàn)、15萬(wàn)、20萬(wàn)、10萬(wàn)income=[10,15,20,10]#顯示四個(gè)季度收入的柱狀圖,并指定對(duì)應(yīng)顏色是紅、黃、綠、藍(lán)plt.bar(season,income,color=['red','yellow','green','blue'])plt.show()6.3.3其他圖——使用matplotlib畫(huà)餅狀圖
importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#一共有四組數(shù)據(jù)作為x軸,分別是Season1Season2Season3Season4season=['Season1','Season2','Season3','Season4']#四個(gè)季度的收入分別是10萬(wàn)、15萬(wàn)、20萬(wàn)、10萬(wàn)income=[10,15,20,10]#畫(huà)餅狀圖,顯示四個(gè)季度收入占全年收入的占比,并顯示比例(顯示小數(shù)點(diǎn)后1位)plt.pie(income,labels=season,autopct='%.1f%%')plt.show()6.4
課后習(xí)題6.4課后習(xí)題1.創(chuàng)建一個(gè)隨機(jī)數(shù)組,將其變?yōu)镾eries類型變量,使用默認(rèn)下標(biāo)索引。2.創(chuàng)建一個(gè)從2024年1月1日起,連續(xù)50個(gè)工作日的時(shí)間序列。3.自行創(chuàng)建一個(gè)DataFrame類型數(shù)據(jù),將其保存在D盤(pán)的zuoye.csv文件中。4.自行研究Matplotlib.pyplot工具中的畫(huà)布與子圖功能第7章
報(bào)表開(kāi)發(fā)與設(shè)計(jì)目錄7.1什么是報(bào)表
7.2帆軟產(chǎn)品簡(jiǎn)介
7.3開(kāi)發(fā)環(huán)境準(zhǔn)備
7.4快速開(kāi)發(fā)一個(gè)報(bào)表7.5課后習(xí)題
7.1
什么是報(bào)表7.1什么是報(bào)表報(bào)表,作為現(xiàn)代企業(yè)信息管理的重要組成部分,不僅以表格、圖表等直觀形式動(dòng)態(tài)展示數(shù)據(jù),還承載著數(shù)據(jù)深度挖掘與可視化呈現(xiàn)的重任。類別:(1)表格報(bào)表(2)圖表報(bào)表(3)儀表盤(pán)報(bào)表(4)地圖報(bào)表(5)交叉表/透視表(6)地圖報(bào)表(7)熱力圖7.2
報(bào)表開(kāi)發(fā)工具簡(jiǎn)介7.2報(bào)表開(kāi)發(fā)工具簡(jiǎn)介FineReport是一款專為報(bào)表制作、深度分析及高效展示而設(shè)計(jì)的強(qiáng)大工具,它賦能用戶以輕松之姿構(gòu)建出高度靈活且功能全面的數(shù)據(jù)分析與報(bào)表系統(tǒng)。通過(guò)運(yùn)用FineReport,企業(yè)能夠顯著縮短項(xiàng)目開(kāi)發(fā)與實(shí)施的周期,有效控制并降低相關(guān)成本,進(jìn)而從根本上解決企業(yè)內(nèi)部信息孤島的問(wèn)題,確保數(shù)據(jù)資源得以充分挖掘并發(fā)揮其應(yīng)有的價(jià)值,驅(qū)動(dòng)企業(yè)決策更加精準(zhǔn)高效。7.2.1報(bào)表開(kāi)發(fā)工具基本功能結(jié)構(gòu)7.3
開(kāi)發(fā)環(huán)境準(zhǔn)備7.3開(kāi)發(fā)環(huán)境準(zhǔn)備準(zhǔn)備開(kāi)發(fā)環(huán)境的具體流程:7.4
快速開(kāi)發(fā)一個(gè)報(bào)表7.4快速開(kāi)發(fā)一個(gè)報(bào)表報(bào)表設(shè)計(jì)主要可以分為新建報(bào)表、數(shù)據(jù)準(zhǔn)備、報(bào)表主體設(shè)計(jì)、報(bào)表預(yù)覽幾大部分。其中報(bào)表主體可以分為大標(biāo)題、小標(biāo)題、表格數(shù)據(jù)、結(jié)尾幾大部分,本小節(jié)主要以普通報(bào)表為例,講述如何按照?qǐng)?bào)表設(shè)計(jì)流程快速設(shè)計(jì)一張報(bào)表。開(kāi)發(fā)效果:7.5
課后習(xí)題7.5課后習(xí)題1.請(qǐng)簡(jiǎn)述報(bào)表的基本概念及其在企業(yè)信息管理中的作用。2.請(qǐng)列舉報(bào)表的幾種類型,并說(shuō)明每種報(bào)表的特點(diǎn)和適用場(chǎng)景。3.請(qǐng)描述帆軟產(chǎn)品FineReport的基本功能和特點(diǎn)。4.請(qǐng)解釋報(bào)表系統(tǒng)的數(shù)據(jù)層、應(yīng)用層和展示層的功能和作用。5.請(qǐng)簡(jiǎn)述FineReport在企業(yè)信息化過(guò)程中的作用。6.請(qǐng)描述開(kāi)發(fā)報(bào)表系統(tǒng)的流程,包括數(shù)據(jù)連接、數(shù)據(jù)準(zhǔn)備、報(bào)表主體設(shè)計(jì)等步驟。7.請(qǐng)舉例說(shuō)明如何使用FineReport設(shè)計(jì)一張普通報(bào)表,包括數(shù)據(jù)連接、數(shù)據(jù)準(zhǔn)備、報(bào)表主體設(shè)計(jì)等步驟。第8章
線性回歸與邏輯回歸本章主要內(nèi)容8.1線性回歸8.2邏輯回歸8.3課后習(xí)題8.1線性回歸數(shù)據(jù)數(shù)據(jù)挖掘有價(jià)值的知識(shí)和信息(如預(yù)測(cè)發(fā)展趨勢(shì))數(shù)據(jù)數(shù)據(jù)統(tǒng)計(jì)統(tǒng)計(jì)信息(如環(huán)比、同比等)8.1.1線性回歸原理——數(shù)據(jù)挖掘8.1.1線性回歸原理——預(yù)測(cè)數(shù)值高爾頓研究父母和孩子身高關(guān)系父母和孩子的身高呈現(xiàn)“回歸現(xiàn)象”回歸算法主要用于“預(yù)測(cè)數(shù)值”假設(shè)挖掘模型為y=f(x)表達(dá)式為
y=ax+b8.1.1線性回歸原理——簡(jiǎn)單舉例歷史數(shù)據(jù)x=10時(shí)y=100x=20時(shí)y=150訓(xùn)練出a=5\b=50即該模型在該場(chǎng)景應(yīng)表示為y=5x+50待挖掘數(shù)據(jù)x=8時(shí)預(yù)測(cè)y=?x=8時(shí)預(yù)測(cè)y=90將歷史數(shù)據(jù)代入模型:10a+b=10020a+b=1508.1.1線性回歸原理假設(shè)有數(shù)據(jù)挖掘模型y=f(x)數(shù)學(xué)表達(dá)式為y=ax+b歷史數(shù)據(jù):當(dāng)x=1.8時(shí)y=4.8
當(dāng)x=4時(shí)y=8.2
當(dāng)x=8時(shí)y=15.2
當(dāng)x=8.3時(shí)y=14.8
當(dāng)x=9.8時(shí)y=17.5......預(yù)測(cè):當(dāng)x=11.4時(shí)y=?數(shù)據(jù)點(diǎn)雖然無(wú)法真正用一條線來(lái)表示,但是y和x依然趨近于“一次關(guān)系”,這時(shí)就可以考慮使用“線性回歸”8.1.1線性回歸原理——多元線性回歸序號(hào)屬性1(x1)屬性2(x2)屬性3(x3)……屬性500(x500)目標(biāo)屬性(y)181001050……705100502102002000……800210003153002800……1200280004780800……7009500581001050……800100506450500……3535000..........................................70017100350……700?假設(shè)模型表達(dá)式是:y=a1x1+a2x2+a3x3+……+a500x500+b歷史數(shù)據(jù)如下求:第7001個(gè)數(shù)據(jù)中目標(biāo)屬性的取值?8.1.1線性回歸原理——多元線性回歸假設(shè)模型表達(dá)式是:y=f(x1,x2,x3...xn)
即:y=a1x1+a2x2+a3x3+……+anxn+b
將a1、a2、a3......an轉(zhuǎn)換成w1、w2、w3......wn
將b轉(zhuǎn)換為w0
原公式變?yōu)椋簓=f(x1,x2,x3...xn)
即:y=w1x1+w2x2+w3x3+……+wnxn+w0引入向量表示法設(shè)向量:x=(x0=1,x1,x2,x3...xn)w=(w0,w1,w2,w3...wn)將x和w代入y=f(x1,x2,x3...xn)則有多元線性回歸表達(dá):y=f(x)=wx其中w又被稱為參數(shù)向量,多元線性回歸模型訓(xùn)練的目標(biāo)就是求w8.1.2損失函數(shù)與損失函數(shù)的解法訓(xùn)練模型的中心思想是讓模型預(yù)測(cè)值與真實(shí)值之間的差距盡量小。
可以將這個(gè)差距表達(dá)為:,其中y是真實(shí)值,
是預(yù)測(cè)值
模型的最終任務(wù)是讓y和更加接近。
假設(shè)一共有m個(gè)樣本,下標(biāo)i是樣本編號(hào),這m個(gè)樣本的預(yù)測(cè)誤差值之和是
考慮到誤差正負(fù)號(hào)可能存在抵消,衡量標(biāo)準(zhǔn)改為m個(gè)樣本的誤差平方和
將
代入上面公式,則多元線性回歸的損失函數(shù)為
8.1.2損失函數(shù)與損失函數(shù)的解法求損失函數(shù)最小值在訓(xùn)練模型時(shí)yi和xi都是歷史數(shù)據(jù)的一部分,所以此時(shí)的目標(biāo)就是求解J最小時(shí)w的取值,進(jìn)而確定整個(gè)模型的參數(shù)。方法一:
求導(dǎo)法方法二:
梯度下降法8.1.2損失函數(shù)與損失函數(shù)的解法——求導(dǎo)法求導(dǎo)法涉及大量的矩陣運(yùn)算,為了簡(jiǎn)便,損失函數(shù)書(shū)寫(xiě)方式調(diào)整為其中y是所有樣本真實(shí)值組成的向量,w是特征參數(shù)組成的向量,X是所有樣本數(shù)據(jù)組成的矩陣。推導(dǎo)f最小時(shí)w取值的步驟如下:求極值時(shí)導(dǎo)數(shù)為0注意:矩陣可逆的一個(gè)前提條件是矩陣要滿秩(感興趣的同事可以研究“矩陣的秩”和“多重共線性”問(wèn)題)8.1.2損失函數(shù)與損失函數(shù)的解法——梯度下降法有沒(méi)有求損失函數(shù)最小值時(shí)不受“前提條件”限制的方法呢?——有,梯度下降法。梯度下降法就是在求函數(shù)極值(如最小值)時(shí),通過(guò)試探的方法,一步一步找到最小值。以一元函數(shù)y=f(x)為例,它的函數(shù)圖像如右圖所示。首先給函數(shù)一個(gè)x1,得到函數(shù)值f(x1),然后在x1處對(duì)f(x)求導(dǎo),沿f(x)值向下方向選取x2,得到f(x2),比較f(x2)和f(x1),可以看到確實(shí)達(dá)到了函數(shù)值“下降”效果。然后再延f(x)在x2處導(dǎo)數(shù)向下方向繼續(xù)尋找x3,以此類推,最終找到最小值。當(dāng)f(xn)最小時(shí),xn就是函數(shù)的極值點(diǎn)。8.1.2損失函數(shù)與損失函數(shù)的解法——梯度下降法如果是多元函數(shù)會(huì)是什么樣呢?例如J是以w1和w2為變量的多元函數(shù),它的梯度下降求解極值過(guò)程如右圖所示。對(duì)于二元函數(shù)f來(lái)說(shuō),它尋找下降方向(也就是求導(dǎo))時(shí)是針對(duì)w1和w2分別求偏導(dǎo),然后沿著兩個(gè)變量的方向?qū)ふ蚁乱粋€(gè)取值點(diǎn)。當(dāng)找到最小值時(shí),對(duì)應(yīng)的w1和w2就是函數(shù)的極值點(diǎn)。
對(duì)于更多元函數(shù)來(lái)說(shuō),已經(jīng)無(wú)法用圖像表示梯度下降過(guò)程了,但是思路都是一樣的,沿著每個(gè)變量的下降方向探索。所以對(duì)于多元線性回歸的損失函數(shù),就是針對(duì)w1、w2......wn等變量求偏導(dǎo),然后沿著它們分別的下降方向探索極值點(diǎn)。8.1.3正則化與過(guò)擬合——過(guò)擬合問(wèn)題無(wú)論是導(dǎo)數(shù)法還是梯度下降法,在求出參數(shù)向量w后,模型參數(shù)確定,模型訓(xùn)練完畢!!!然而,萬(wàn)事大吉了嗎?——需要注意過(guò)擬合問(wèn)題。什么是過(guò)擬合?一個(gè)學(xué)生在備考的時(shí)候會(huì)做大量的練習(xí)題,但是如果考生只會(huì)做練習(xí)過(guò)的題,考試時(shí)出現(xiàn)新題就不會(huì)了,這就屬于過(guò)擬合。在機(jī)器學(xué)習(xí)中,如果模型參數(shù)求解過(guò)程過(guò)分依賴訓(xùn)練數(shù)據(jù)集,就會(huì)出現(xiàn)“模型在訓(xùn)練集上表現(xiàn)很好,但在測(cè)試集上表現(xiàn)糟糕”的問(wèn)題,這就是過(guò)擬合。避免過(guò)擬合穿上馬甲我照樣認(rèn)識(shí)你8.1.3正則化與過(guò)擬合——多元線性回歸與過(guò)擬合數(shù)據(jù)挖掘中,過(guò)擬合問(wèn)題并不一定會(huì)出現(xiàn),但“不得不防”。多元線性回歸的數(shù)學(xué)表達(dá)式為:y=f(x)=wx+b。這個(gè)表達(dá)式中參數(shù)向量w主要與訓(xùn)練數(shù)據(jù)集x相關(guān),所以不得不考慮出現(xiàn)過(guò)擬合的問(wèn)題。如果多元線性回歸出現(xiàn)了過(guò)擬合問(wèn)題。可以使用以下兩種思路解決
方法一:擴(kuò)大訓(xùn)練集
方法二:使用正則化8.1.3正則化與過(guò)擬合——正則化線性回歸中的正則化思想:在原始損失函數(shù)中,增加由參數(shù)向量組成,但與參數(shù)向量無(wú)關(guān)的“懲罰項(xiàng)”。常用兩種正則化方式:
L1正則化(lasso回歸)L2正則化(嶺回歸)由于懲罰項(xiàng)的存在,損失函數(shù)在求解極值時(shí),w向量需要被考慮兩次,懲罰項(xiàng)部分與訓(xùn)練集數(shù)據(jù)完全沒(méi)有關(guān)系,所以緩解了函數(shù)過(guò)分依賴于訓(xùn)練集數(shù)據(jù)。8.1.3正則化與過(guò)擬合——正則化(L1和L2的區(qū)別)(1)L1正則化(lasso回歸)的w參數(shù)向量中可能會(huì)有0,但L2正則化(嶺回歸)的參數(shù)向量不會(huì)出現(xiàn)0;(2)L2正則化(嶺回歸)可以避免多重共線性,但L1正則化(Lasso回歸)沒(méi)有此功能;L2正則化后,此時(shí)對(duì)w進(jìn)行求導(dǎo)取0后變成了如下形式:
其中
肯定可逆,所以w肯定有解(3)Lasso回歸是一次運(yùn)算,因此模型計(jì)算速度比嶺回歸快。一些說(shuō)明數(shù)據(jù)表中的列經(jīng)常被稱為:屬性、特征、維、列等歷史數(shù)據(jù)一般分為訓(xùn)練集和測(cè)試集,訓(xùn)練集就是用于訓(xùn)練模型的數(shù)據(jù),測(cè)試集是為了檢測(cè)模型的效果建模的步驟
第零步:與業(yè)務(wù)部門(mén)溝通
第一步:導(dǎo)入數(shù)據(jù)、探索數(shù)據(jù)
第二步:進(jìn)行必要的數(shù)據(jù)預(yù)處理
第三步:建模
第四步:用測(cè)試集檢驗(yàn)?zāi)P皖A(yù)測(cè)效果8.1.4線性回歸的實(shí)現(xiàn)與模型評(píng)價(jià)——代碼實(shí)現(xiàn)(以預(yù)測(cè)波士頓房?jī)r(jià)案例為例)#第一步:導(dǎo)入數(shù)據(jù)#導(dǎo)入numpy和pandas數(shù)據(jù)包importnumpyasnpimportpandasaspd#從boston_lishi.csv文件中導(dǎo)入原始數(shù)據(jù)df=pd.read_csv(r'E:\boston_lishi.csv',index_col='id')#X為原始數(shù)據(jù)中不包括target列部分,是由歷史數(shù)據(jù)中“非結(jié)果列”組成的數(shù)據(jù)X=df.loc[:,(df.columns!='target')]#Y為原始數(shù)據(jù)中target列部分,是由歷史數(shù)據(jù)中“結(jié)果列”組成的數(shù)據(jù)Y=df.loc[:,df.columns=='target']8.1.4線性回歸的實(shí)現(xiàn)與模型評(píng)價(jià)——代碼實(shí)現(xiàn)(以預(yù)測(cè)波士頓房?jī)r(jià)案例為例)#第二步:數(shù)據(jù)預(yù)處理#缺失值處理df.dropna()#數(shù)據(jù)標(biāo)準(zhǔn)化fromsklearn.preprocessingimportMinMaxScalerscaler=MinMaxScaler()X=scaler.fit_transform(X)#其他數(shù)據(jù)預(yù)處理將在第6次課介紹8.1.4線性回歸的實(shí)現(xiàn)與模型評(píng)價(jià)——代碼實(shí)現(xiàn)(以預(yù)測(cè)波士頓房?jī)r(jià)案例為例)#第三步建模#將歷史數(shù)據(jù)按照8:2的比例分隨機(jī)分為訓(xùn)練集和測(cè)試集fromsklearn.model_selectionimporttrain_test_splitXtrain,Xtest,Ytrain,Ytest=train_test_split(X,Y,test_size=0.2,random_state=420)#從sklearn的linear字庫(kù)中導(dǎo)入嶺回歸工具包#如果引入嶺回歸的包importRidge;引入lasso回歸的包importlassofromsklearn.linear_modelimportLinearRegressionasLR#創(chuàng)建模型reg=LR()#訓(xùn)練模型reg.fit(Xtrain,Ytrain)8.1.4線性回歸的實(shí)現(xiàn)與模型評(píng)價(jià)——模型評(píng)價(jià)(以預(yù)測(cè)波士頓房?jī)r(jià)案例為例)#第四步,用測(cè)試集檢驗(yàn)?zāi)P皖A(yù)測(cè)效果#使用predict方法,根據(jù)Xtest預(yù)測(cè)測(cè)試集的結(jié)果result=reg.predict(Xtest)#將測(cè)試集真實(shí)結(jié)果和預(yù)測(cè)結(jié)果進(jìn)行對(duì)比df=pd.DataFrame({'真實(shí)結(jié)果':Ytest.loc[:,'target'],'預(yù)測(cè)結(jié)果':pd.Series(result.reshape(-1),index=Ytest.index)})print(df)這樣能看出模型表現(xiàn)優(yōu)良嗎?8.1.4線性回歸的實(shí)現(xiàn)與模型評(píng)價(jià)——模型評(píng)價(jià)(以預(yù)測(cè)波士頓房?jī)r(jià)案例為例)#第四步,用測(cè)試集檢驗(yàn)?zāi)P皖A(yù)測(cè)效果#可以使用一些指標(biāo)來(lái)評(píng)價(jià)模型表現(xiàn),例如使用R2值評(píng)價(jià)多元線性回歸score=reg.score(Xtest,Ytest)print(score)其中
是所有真實(shí)結(jié)果的平均值,
是第i個(gè)樣本的預(yù)測(cè)值,
是第i個(gè)樣本的預(yù)測(cè)值在統(tǒng)計(jì)學(xué)中,方差除了體現(xiàn)了數(shù)據(jù)之間的波動(dòng)性之外,還可以體現(xiàn)數(shù)據(jù)集所攜帶的信息量
如果除以m就是數(shù)據(jù)集真實(shí)的方差,也就是數(shù)據(jù)集真實(shí)的信息量。除以m就是一個(gè)類方差數(shù)據(jù),是真實(shí)值與預(yù)測(cè)值之間的信息差,也就是模型沒(méi)有擬合出來(lái)的信息表達(dá)的是模型沒(méi)有擬合出來(lái)的信息量和數(shù)據(jù)集真實(shí)信息量的占比,用1減去它,表達(dá)的意思是模型擬合出來(lái)的信息量占數(shù)據(jù)集真實(shí)信息量的占比。所以R2越接近1越好。8.1.5重要參數(shù)和屬性但是LR()括號(hào)內(nèi)是可以傳遞參數(shù)的。線性回歸有哪些重要參數(shù)可以設(shè)置呢?(1)fit_intercept:內(nèi)容為布爾型,意思是是否考慮使用截距,如果是False就不考慮截距。(2)normalize:內(nèi)容為布爾型,意思是是否對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,如果是False就不進(jìn)行標(biāo)準(zhǔn)化,將在第12章詳細(xì)介紹標(biāo)準(zhǔn)化。(3)n_jobs:內(nèi)容為整數(shù),意思是計(jì)算時(shí)設(shè)置的任務(wù)個(gè)數(shù),數(shù)值越高,任務(wù)越多,計(jì)算資源占用的越多。8.1.5重要參數(shù)和屬性#可以使用coef_屬性,查看線性回歸各個(gè)參數(shù)的值print(reg.coef_)8.2邏輯回歸邏輯回歸邏輯回歸“真名”叫l(wèi)ogisticRegression,雖然也叫“回歸”,但是它確實(shí)用于解決預(yù)測(cè)分類問(wèn)題。分類問(wèn)題的預(yù)測(cè)結(jié)果是類別型的(具體的類別叫“標(biāo)簽”)。例如猜一場(chǎng)足球比賽結(jié)果,就是通過(guò)各種信息,預(yù)測(cè)“主隊(duì)贏”、“主隊(duì)平”、“主隊(duì)輸”三個(gè)結(jié)果,這三個(gè)結(jié)果就是標(biāo)簽,預(yù)測(cè)比賽勝負(fù)結(jié)果就是典型的分類問(wèn)題。8.2.1邏輯回歸原理序號(hào)屬性1(x1)屬性2(x2)屬性3(x3)……屬性500(x500)目標(biāo)屬性(y)181001050……70502102002000……80013153002800……120014780800……7001581001050……80006450500……3530..........................................70017100350……700?通過(guò)屬性1、屬性2、屬性3......確定目標(biāo)屬性(0或者1)8.2.1邏輯回歸原理既然邏輯回歸是用于分類問(wèn)題,那為什么叫回歸呢?——因?yàn)樗脑砼c線性回歸非常像。
邏輯回歸的數(shù)據(jù)表達(dá)式8.2.1邏輯回歸原理那如何確定Θ中的各個(gè)特征參數(shù)呢?同樣使用損失函數(shù)求極值的方法,但這個(gè)損失函數(shù)更加復(fù)雜,且是通過(guò)極大似然估計(jì)推導(dǎo)出來(lái)的。同樣可以使用L1或者L2正則化對(duì)損失函數(shù)進(jìn)行改造,改造后的L1或L2正則化如下:這個(gè)損失函數(shù)的求解過(guò)程非常復(fù)雜,主要包括隨機(jī)梯度下降法、牛頓法等邏輯回歸簡(jiǎn)單實(shí)現(xiàn)(以乳腺癌預(yù)測(cè)案例為例)#第一步:導(dǎo)入數(shù)據(jù)#導(dǎo)入numpy和pandas數(shù)據(jù)包importnumpyasnpimportpandasaspd#從boston_lishi.csv文件中導(dǎo)入原始數(shù)據(jù)df=pd.read_csv(r'E:\ruxian_lishi.csv',index_col='Patien')#X為原始數(shù)據(jù)中不包括target列部分,是由歷史數(shù)據(jù)中“非結(jié)果列”組成的數(shù)據(jù)X=df.loc[:,(df.columns!='target')]#Y為原始數(shù)據(jù)中target列部分,是由歷史數(shù)據(jù)中“結(jié)果列”組成的數(shù)據(jù)Y=df.loc[:,df.columns=='target']邏輯回歸簡(jiǎn)單實(shí)現(xiàn)(以乳腺癌預(yù)測(cè)案例為例)
#第二步:數(shù)據(jù)預(yù)處理#缺失值處理df.dropna()#數(shù)據(jù)標(biāo)準(zhǔn)化fromsklearn.preprocessingimportMinMaxScalerscaler=MinMaxScaler()X=scaler.fit_transform(X)#其他數(shù)據(jù)預(yù)處理將在第6次課介紹邏輯回歸簡(jiǎn)單實(shí)現(xiàn)(以乳腺癌預(yù)測(cè)案例為例)
第三步建模#將歷史數(shù)據(jù)按照8:2的比例分隨機(jī)分為訓(xùn)練集和測(cè)試集fromsklearn.model_selectionimporttrain_test_splitXtrain,Xtest,Ytrain,Ytest=train_test_split(X,Y,test_size=0.2,random_state=420)#導(dǎo)入邏輯回歸工具包fromsklearn.linear_modelimportLogisticRegressionasLR#創(chuàng)建模型reg=LR()#訓(xùn)練模型reg.fit(Xtrain,Ytrain)邏輯回歸簡(jiǎn)單實(shí)現(xiàn)(以乳腺癌預(yù)測(cè)案例為例)
#第四步,用測(cè)試集檢驗(yàn)?zāi)P皖A(yù)測(cè)效果#使用predict方法,根據(jù)Xtest預(yù)測(cè)測(cè)試集的結(jié)果result=reg.predict(Xtest)#將測(cè)試集真實(shí)結(jié)果和預(yù)測(cè)結(jié)果進(jìn)行對(duì)比df=pd.DataFrame({'真實(shí)結(jié)果':Ytest.loc[:,'target'],'預(yù)測(cè)結(jié)果':pd.Series(result,index=Ytest.index)})print(df)這樣能看出模型表現(xiàn)優(yōu)良嗎?邏輯回歸簡(jiǎn)單實(shí)現(xiàn)(以乳腺癌預(yù)測(cè)案例為例)
#第四步,用測(cè)試集檢驗(yàn)?zāi)P皖A(yù)測(cè)效果#可以使用一些指標(biāo)來(lái)評(píng)價(jià)模型表現(xiàn),例如使用準(zhǔn)確率評(píng)價(jià)邏輯回歸score=reg.score(Xtest,Ytest)print(score)準(zhǔn)確率:預(yù)測(cè)對(duì)的樣本數(shù)/總樣本數(shù)表達(dá)的是模型沒(méi)有擬合出來(lái)的信息量和數(shù)據(jù)集真實(shí)信息量的占比,用1減去它,表達(dá)的意思是模型擬合出來(lái)的信息量占數(shù)據(jù)集真實(shí)信息量的占比。所以R2越接近1越好。準(zhǔn)確率固然是分類模型最重要的衡量指標(biāo),但準(zhǔn)確率高一定表示模型表現(xiàn)好嗎?假設(shè)生活中如下案例:肺癌的發(fā)病率約千分之三,假設(shè)1000人中有3人是肺癌,模型預(yù)測(cè)結(jié)果為1000人均健康,此時(shí)模型的準(zhǔn)確率是99.7%,但實(shí)際情況是“一個(gè)病人沒(méi)檢查出來(lái)”,這樣的模型是我們想要的嗎?8.2.2邏輯回歸的實(shí)現(xiàn)方法與模型評(píng)價(jià)(混淆矩陣)8.2.2邏輯回歸的實(shí)現(xiàn)方法與模型評(píng)價(jià)——混淆矩陣實(shí)現(xiàn)#生成混淆矩陣fromsklearn.metricsimportconfusion_matrixasCMcm=CM(Ytest,result,labels=[0,1])print(cm)#計(jì)算recallfromsklearn.metricsimportroc_curveFPR,recall,threshold=roc_curve(Ytest,result,pos_label=1)print(recall)8.2.2邏輯回歸的實(shí)現(xiàn)方法與模型評(píng)價(jià)——AUC值A(chǔ)UC值其實(shí)是在畫(huà)ROC曲線時(shí)的曲線面積(ROC曲線在二分類問(wèn)題時(shí),可以通過(guò)可視化方式直觀看到模型在遇到類不均衡問(wèn)題時(shí)的表現(xiàn),感興趣的同學(xué)可以自行研究),AUC值越大,分類在類不均衡問(wèn)題中表現(xiàn)越好。AUC值實(shí)現(xiàn)#計(jì)算AUC值fromsklearn.metricsimportroc_auc_scorearea=roc_auc_score(Ytest,result)print(area)8.2.2邏輯回歸的實(shí)現(xiàn)方法與模型評(píng)價(jià)——AUC值#計(jì)算AUC值fromsklearn.metricsimportroc_auc_scorearea=roc_auc_score(Ytest,result)print(area)AUC值,值越大,效果越好8.2.3重要參數(shù)和調(diào)參方法如果模型的表現(xiàn)不好怎么辦?可以通過(guò)調(diào)整超參數(shù)取值,優(yōu)化模型表現(xiàn)。所謂超參數(shù)就是模型中需要人為設(shè)定的參數(shù),例如邏輯回歸L1正則化和L2正則化中的C就是超參數(shù),可以通過(guò)改變C值的大小,調(diào)整懲罰項(xiàng)在損失函數(shù)中的比例,改變模型訓(xùn)練后Θ的取值,從而改變模型的表現(xiàn)。8.2.3重要參數(shù)和調(diào)參方法——超參數(shù)penalty:內(nèi)容是字符串,可以是“l(fā)1”或者“l(fā)2”,意思是使用L1或者L2正則化。solver:內(nèi)容是字符串,包括“l(fā)iblinear”、“l(fā)bfgs”、“newton-cg”、“sag”,意思是使用哪種方法對(duì)損失函數(shù)進(jìn)行極值求解。這幾個(gè)選項(xiàng)中“l(fā)iblinear”是坐標(biāo)軸下降法、“l(fā)bfgs”是牛頓法、“newton-cg”是另一種牛頓法、“sag”是隨機(jī)梯度下降。其中坐標(biāo)軸下降法適用于小數(shù)據(jù)集,也是默認(rèn)值,而牛頓法和隨機(jī)梯度下降適用于大數(shù)據(jù)集因?yàn)樗俣雀臁ax_iter:內(nèi)容是整數(shù)型,意思是當(dāng)solver選擇牛頓法或者隨機(jī)梯度下降法,就會(huì)涉及到算法的迭代(思路類似于梯度下降法找到極值點(diǎn)的過(guò)程),max_iter就是指定迭代次數(shù),可以避免因迭代次數(shù)過(guò)多引起模型性能太低。但如果太小可能會(huì)無(wú)法收斂(找不到損失函數(shù)極值),所以一般根據(jù)自己設(shè)備的性能而定。C:內(nèi)容是正浮點(diǎn)型數(shù),L1正則化和L2正則化損失函數(shù)中的C,C越大,懲罰項(xiàng)重要程度越低。8.2.3重要參數(shù)和調(diào)參方法——參數(shù)選擇學(xué)習(xí)曲線:例如針對(duì)邏輯回歸的參數(shù)C,我們可以指定一個(gè)取值范圍,然后計(jì)算每一個(gè)取值時(shí)模型的準(zhǔn)確率,以C的取值為橫坐標(biāo),以每個(gè)取值對(duì)應(yīng)的模型準(zhǔn)確率為縱坐標(biāo),繪制一條曲線,可以看出模型準(zhǔn)確率隨C取值的變化及峰值,從而選擇參數(shù)取值。8.2.3重要參數(shù)和調(diào)參方法——交叉驗(yàn)證例如有1000條歷史數(shù)據(jù)訓(xùn)練模型,需要將這1000條數(shù)據(jù)分成訓(xùn)練集和測(cè)試集。可以采用train_test_split方法按照一定比例隨機(jī)選擇訓(xùn)練接和測(cè)試集,雖然具有一定代表性,但不能完全看出模型訓(xùn)練的水平。這時(shí)就可以使用交叉驗(yàn)證,它相當(dāng)于將1000條歷史數(shù)據(jù)分成了10份(又稱10折),第一次用其中1份作測(cè)試集,另外9份作訓(xùn)練集,第二次換1份作測(cè)試集,另外9份作訓(xùn)練集,以此類推,迭代10次,得到10個(gè)準(zhǔn)確率。這樣訓(xùn)練集和測(cè)試集涵蓋了整個(gè)歷史數(shù)據(jù)集,可以針對(duì)這10次的準(zhǔn)確率做平均值,求得的準(zhǔn)確率更有說(shuō)服力。8.2.3重要參數(shù)和調(diào)參方法——交叉驗(yàn)證+學(xué)習(xí)曲線的實(shí)現(xiàn)#C的取值在0.4到30之間,檢查模型的表現(xiàn)#引入交叉驗(yàn)證工具包fromsklearn.model_selectionimportcross_val_score#設(shè)置列表score,以便承接各個(gè)取值后交叉驗(yàn)證的結(jié)果score=[]#C在0.4到30間分別取30個(gè)值,檢查模型表現(xiàn)foriinnp.linspace(0.4,30,30):#針對(duì)不同取值分別建模reg=LR(penalty='l1',solver='liblinear',C=i,max_iter=100)#針對(duì)每次取值的模型進(jìn)行10折交叉驗(yàn)證,并對(duì)結(jié)果取平均值s=cross_val_score(reg,X,Y,cv=10).mean()
#將每次取值模型交叉驗(yàn)證表現(xiàn)裝入列表score中
score.append(s)8.2.3重要參數(shù)和調(diào)參方法——交叉驗(yàn)證+學(xué)習(xí)曲線的實(shí)現(xiàn)(續(xù))#繪制學(xué)習(xí)曲線importmatplotlib.pyplotaspltplt.plot(np.linspace(0.3,30,30),score,color='blue',label='cross_val_score')plt.legend()plt.show()#顯示最終結(jié)果score=np.array(score)print("模型表現(xiàn)最好的準(zhǔn)確率:")print(np.max(score))print("模型表現(xiàn)最好時(shí)C的取值:")print(np.linspace(0.3,30)[np.argmax(score)])8.3課后習(xí)題課后習(xí)題1.使用線性回歸模型,重新做一遍波士頓房?jī)r(jià)預(yù)測(cè)實(shí)例,要求修改random_state數(shù)值,并通過(guò)train_test_split中的test_size參數(shù)將訓(xùn)練集和測(cè)試集比例修改為7:3。2.使用邏輯回歸模型,重新做一遍乳腺癌預(yù)測(cè)實(shí)例,要求修改random_state數(shù)值,并通過(guò)train_test_split中的test_size參數(shù)將訓(xùn)練集和測(cè)試集比例修改為7:3,并使用學(xué)習(xí)曲線方式對(duì)C進(jìn)行調(diào)參。第9章
決策樹(shù)與隨機(jī)森林本章主要內(nèi)容9.1決策樹(shù)9.2回歸樹(shù)9.3隨機(jī)森林9.4課后習(xí)題9.1決策樹(shù)9.1.1決策樹(shù)的原理決策樹(shù):用于解決分類問(wèn)題生活中的例子:母親給女兒介紹一個(gè)男朋友,女兒根據(jù)各種信息判斷是否同意去相親葉子節(jié)點(diǎn)中間節(jié)點(diǎn)根節(jié)點(diǎn)9.1.2如何建立一棵決策樹(shù)思路一:基于信息熵建樹(shù)ID3、C4.5CART思路二:基于基尼系數(shù)建樹(shù)9.1.2如何建立一棵決策樹(shù)——信息熵信息熵是用來(lái)衡量一個(gè)隨機(jī)變量出現(xiàn)的期望值。信息的不確定性越大,熵的值也就越大,出現(xiàn)的各種情況也就越多。例如“下一屆國(guó)際足聯(lián)男子世界杯冠軍”這個(gè)句話的信息熵就大于“下一屆國(guó)際乒聯(lián)男子世界杯冠軍”,因?yàn)榍罢咴谑录](méi)有發(fā)生時(shí)的不確定性很高,冠軍可能的情況包括法國(guó)隊(duì)、巴西隊(duì)、阿根廷隊(duì)、德國(guó)隊(duì)、英格蘭隊(duì)、意大利隊(duì)......,而后者在事件沒(méi)有發(fā)生時(shí)的不確定性很低,冠軍可能的情況只有中國(guó)隊(duì)。信息熵的計(jì)算公式為:
,其中X是所有發(fā)生的可能性,x是某一種可能性。以“2022年國(guó)際足聯(lián)男子世界杯冠軍”這個(gè)事件為例,假設(shè)共有8支隊(duì)伍有可能奪冠,每支隊(duì)伍奪冠的可能性都是1/8。則“2022年國(guó)際足聯(lián)男子世界杯冠軍”這件事的信息熵為:決策樹(shù)的兩種子方法ID3和C4.5就是使用信息熵作為建樹(shù)的理論依據(jù)。9.1.2如何建立一棵決策樹(shù)——ID3建樹(shù)過(guò)程
ID3使用了基于信息熵計(jì)算的信息增益方法,信息增益公式為:
其中Gain(X)表示某一個(gè)特征的信息增益,ci表示第i中分類,xi表示某一特征的第i種數(shù)值步驟1:info(c)部分計(jì)算,即針對(duì)標(biāo)簽(是否買電腦)的信息熵計(jì)算:買電腦的樣本為9,即買電腦的概率是9/14,不買電腦的概率是5/14。因此:info(c)=-9/14log2(9/14)-5/14log2(5/14)≈0.9409.1.2如何建立一棵決策樹(shù)——ID3建樹(shù)過(guò)程
ID3使用了基于信息熵計(jì)算的信息增益方法,信息增益公式為:
其中Gain(X)表示某一個(gè)特征的信息增益,ci表示第i中分類,xi表示某一特征的第i種數(shù)值步驟2:info(c|年齡)的計(jì)算,即針對(duì)年齡特征和標(biāo)簽的條件信息熵的計(jì)算:在年齡特征,一共分為三種情況:<30、30-40、>40
情況1:當(dāng)年齡<30時(shí),一共有5個(gè)樣本,其中2個(gè)買電腦了,3個(gè)沒(méi)買,即info(c|x<30)=-2/5log2(2/5)-3/5log2(3/5)
情況2:當(dāng)30<=年齡<=40時(shí),一共有4個(gè)樣本,其中3個(gè)買電腦了,1個(gè)沒(méi)買,即info(c|30<=x<=30)=-3/4log2(3/4)-1/4log2(1/4)情況3:當(dāng)年齡>40時(shí),一共有5個(gè)樣本,其中3個(gè)買電腦了,2個(gè)沒(méi)買,即info(c|x>40)=-3/5log2(3/5)-2/5log2(2/5)9.1.2如何建立一棵決策樹(shù)——ID3建樹(shù)過(guò)程
ID3使用了基于信息熵計(jì)算的信息增益方法,信息增益公式為:
其中Gain(X)表示某一個(gè)特征的信息增益,ci表示第i中分類,xi表示某一特征的第i種數(shù)值步驟3:計(jì)算Gain(年齡)Gain(年齡)=
info(c)
-5/14*info(c|x<30)
-4/14*info(c|30<=x<=40)
-5/14*info(c|x>40)
≈0.1509.1.2如何建立一棵決策樹(shù)——ID3建樹(shù)過(guò)程
ID3使用了基于信息熵計(jì)算的信息增益方法,信息增益公式為:
其中Gain(X)表示某一個(gè)特征的信息增益,ci表示第i中分類,xi表示某一特征的第i種數(shù)值步驟4:根據(jù)前三步計(jì)算方法,分別計(jì)算出:
Gain(年齡)
≈0.150
Gain(收入)
≈0.090
Gain(學(xué)生)
≈0.016
Gain(信用)
≈0.048其中“年齡”的信息增益是最大的9.1.2如何建立一棵決策樹(shù)——ID3建樹(shù)過(guò)程
ID3使用了基于信息熵計(jì)算的信息增益方法,信息增益公式為:
其中Gain(X)表示某一個(gè)特征的信息增益,ci表示第i中分類,xi表示某一特征的第i種數(shù)值第五步:根據(jù)第四步結(jié)果:選擇信息增益最大的特征“年齡”作為根節(jié)點(diǎn)根據(jù)年齡將樣本進(jìn)行了區(qū)分:年齡小于30的節(jié)點(diǎn)落在了左側(cè)面年齡在30到40之間的節(jié)點(diǎn)落在了中間年齡大于40的節(jié)點(diǎn)落在了右側(cè)。9.1.2如何建立一棵決策樹(shù)——ID3建樹(shù)過(guò)程
9.1.2如何建立一棵決策樹(shù)——ID3建樹(shù)過(guò)程
針對(duì)這個(gè)表繼續(xù)計(jì)算,每個(gè)特征的信息增益,Gain(收入)≈0.971Gain(學(xué)生)≈0.420Gain(信用)≈0.020。因此使用“收入”進(jìn)行下一步分裂此次判斷已經(jīng)有了最終結(jié)果,即“買”或“不買”,這就是葉子節(jié)點(diǎn)。其他節(jié)點(diǎn)以此類推9.1.2如何建立一棵決策樹(shù)——C4.5建樹(shù)過(guò)程ID3算法并不是完美的,在上面的例子中將“年齡”、“收入”、“學(xué)生”、“信用”作為特征構(gòu)建決策樹(shù)。如果將“序號(hào)”也含在特征中,看看“序號(hào)”的信息增益。如果將“序號(hào)”也含在特征中,看看“序號(hào)”的信息增益。info(c)≈0.940Info(c|x=1)=-1/1*log2(1/1)-0/1*log2(0/1)=0Info(c|x=2)=-1/1*log2(1/1)-0/1*log2(0/1)=0Info(c|x=3)=-1/1*log2(1/1)-0/1*log2(0/1)=0......Info(c|x=14)=-1/1*log2(1/1)-0/1*log2(0/1)=0所以Gain(序號(hào))=info(c)-0≈0.940這時(shí)發(fā)現(xiàn)序號(hào)的信息增益最大,應(yīng)該首先以序號(hào)為根節(jié)點(diǎn)進(jìn)行判斷,可是這沒(méi)有意義,序號(hào)列信息增益大的原因完全是因?yàn)樾蛱?hào)的種類“太瑣碎了”,從而導(dǎo)致條件信息熵是0。9.1.2如何建立一棵決策樹(shù)——C4.5建樹(shù)過(guò)程為了解決這個(gè)中由于某一個(gè)屬性取值種類太多造成的問(wèn)題,又引入了信息增益率的概念。信息增益率的公式為:GainRatio(X)=Gain(X)/SplitInfo(X)。其中SplitInfo(X)是針對(duì)X特征本身的信息熵計(jì)算SplitInfo(年齡),年齡3種可能的概率分別是
小于30歲:5/1430到40歲:4/14大于40歲:5/14
則SplitInfo(年齡)=-5/14*log2(5/14)-4/14*log2(4/14)-5/14*log2(5/14)≈0.189由ID3計(jì)算過(guò)程可知:Gain(年齡)≈0.150所以GainRatio(年齡)=0.150/0.189≈0.7949.1.2如何建立一棵決策樹(shù)——C4.5建樹(shù)過(guò)程
序號(hào)列的信息增益率呢?序號(hào)列一共有14種取值,每種取值概率都是1/14,因此SplitInfo(序號(hào))=-1/14*log2(1/14)-1/14*log2(1/14)......-1/14*log2(1/14)≈3.8由前面(PPT第12頁(yè))計(jì)算可知:Gain(序號(hào))=0.940所以GainRatio(序號(hào))=0.940/3.8≈0.247選擇信息增益率大的特征作為優(yōu)選的判斷特征。年齡的信息增益率(0.794)大于序號(hào)的信息增益率(0.247),因此年齡列比序號(hào)列更適合優(yōu)先作為判斷節(jié)點(diǎn)。其他特征的信息增益率及比較方法相同,每次迭代選取信息增益率最大的特征作為判斷屬性,建立決策樹(shù),這種算法叫做C4.5算法。現(xiàn)在選用信息熵作為建樹(shù)依據(jù)的方法多數(shù)都是選擇C4.5作為默認(rèn)算法。9.1.2如何建立一棵決策樹(shù)——CART建樹(shù)過(guò)程除了信息熵,基尼系數(shù)(Gini)也可以作為建樹(shù)的依據(jù),基尼系數(shù)也可以體現(xiàn)出事物的不確定性(不純度)。基尼系數(shù)的公式:其中I是所有的可能,i是某一種可能。某一屬性Gini系數(shù)增益的公式為:針對(duì)“年齡”列進(jìn)行統(tǒng)計(jì):
Gini(買|年齡)=1-(2/8)2
-(3/8)2
-(3/8)2
≈0.656Gini(不買|年齡)=1-(3/6)2
-(1/6)2
-(2/6)2
≈0.611Gain(年齡)=9/14*Gini(買|年齡)+5/14*Gini(不買|年齡)
≈0.6409.1.2如何建立一棵決策樹(shù)——CART建樹(shù)過(guò)程基尼系數(shù)的公式:其中I是所有的可能,i是某一種可能。某一列Gini系數(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年種植養(yǎng)殖方面的自查報(bào)告
- 2026年手術(shù)部位感染預(yù)防培訓(xùn)考試題(含答案)
- 維修工年度述職報(bào)告
- 公司員工安全課件
- 臨床輸血管理相關(guān)制度(試題及答案)
- 煤礦安全機(jī)電管理
- 綜合交通樞紐旅客休息區(qū)施工方案
- 止血包扎技術(shù)考試題及答案(2026年)
- 2025年版《靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)》試題及參考答案
- 關(guān)鍵設(shè)備點(diǎn)檢作業(yè)指導(dǎo)書(shū)
- 2026年美妝個(gè)護(hù)行業(yè)洞察數(shù)據(jù)報(bào)告
- 安徽蕪湖2026年無(wú)為市泉塘鎮(zhèn)村級(jí)后備干部招聘考試試卷-含答案解析
- 2026年安徽省產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)研究院見(jiàn)習(xí)人員招募備考題庫(kù)及答案詳解(歷年真題)
- 全域投放設(shè)高跑低解決思路與投產(chǎn)提升法則
- 隴西國(guó)家基本氣象站遷建項(xiàng)目水土保持報(bào)告表
- 2026年水發(fā)集團(tuán)社會(huì)招聘249人筆試備考試題及答案解析
- 2026年三力測(cè)試全真模擬試題集
- 碼垛作業(yè)安全操作規(guī)程
- 2026年審計(jì)法相關(guān)知識(shí)競(jìng)賽經(jīng)典例題附答案詳解【考試直接用】
- 2026年職業(yè)教育法考試題庫(kù)及答案
- 落實(shí)意識(shí)形態(tài)責(zé)任制制度
評(píng)論
0/150
提交評(píng)論