版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章大數(shù)據(jù)基礎(chǔ)環(huán)境部署與編程技能目標(biāo)能夠安裝Linux系統(tǒng)并進(jìn)行Shell基礎(chǔ)編程。能夠安裝部署Hadoop并進(jìn)行HDFS基礎(chǔ)編程。能夠安裝部署Kafka并進(jìn)行基礎(chǔ)編程。能夠安裝部署Flink并進(jìn)行基礎(chǔ)編程。本章任務(wù)學(xué)習(xí)本章,讀者需要完成以下任務(wù)。任務(wù)3.1Linux系統(tǒng)安裝與Shell編程。掌握在虛擬化軟件中安裝Linux系統(tǒng)的方法;掌握Linux系統(tǒng)中的常用命令并能夠進(jìn)行Shell編程。任務(wù)3.2Hadoop安裝與HDFS編程。掌握安裝Hadoop的方法并能夠選擇和配置Hadoop運(yùn)行方式;掌握HDFS的基本操作命令并進(jìn)行編程。任務(wù)3.3Kafka安裝與編程。掌握安裝和配置Kafka的方法;掌握Kafka的基本操作命令并進(jìn)行編程。任務(wù)3.4Flink安裝與編程。掌握安裝和配置Flink的方法;掌握Flink的基本操作命令并進(jìn)行編程。任務(wù)1Linux系統(tǒng)安裝與Shell編程01【任務(wù)描述】掌握在虛擬化軟件中安裝Linux系統(tǒng)的方法;掌握Linux系統(tǒng)中的常用命令并能夠進(jìn)行Shell編程。任務(wù)1組建物聯(lián)網(wǎng)環(huán)境01【關(guān)鍵步驟】(1)在VMwareWorkstation中安裝Linux系統(tǒng)。 (2)掌握Linux系統(tǒng)中的常用命令。 (3)能夠進(jìn)行Shell基礎(chǔ)編程。本小節(jié)首先介紹如何在Windows系統(tǒng)中安裝虛擬化軟件VMwareWorkstation16Pro。然后演示如何在VMwareWorkstation16Pro中安裝Ubuntu22.04系統(tǒng)。最后展示如何在Ubuntu22.04系統(tǒng)中部署大數(shù)據(jù)基礎(chǔ)環(huán)境。(1)虛擬化軟件的安裝。3.1.1
虛擬化軟件和操作系統(tǒng)安裝3.1.1
虛擬化軟件和操作系統(tǒng)安裝3.1.2
安裝Linux系統(tǒng)常用命令本小節(jié)主要介紹在系統(tǒng)基礎(chǔ)環(huán)境配置中經(jīng)常用到的命令,包括文件操作命令、用戶和組管理命令、常見查找命令、壓縮打包命令、查看進(jìn)程命令等。1)文件操作常用命令①ls。ls(listfiles)命令用于顯示指定工作目錄下的內(nèi)容(列出目前工作目錄所含的文件及子目錄)。語法:ls[-alrtAFR][name...]3.1.2
安裝Linux系統(tǒng)常用命令②pwd。pwd(printworkdirectory)命令用于顯示工作目錄。執(zhí)行pwd指令
可立刻得知您目前所在的工作目錄的絕對路徑名稱。語法:pwd[--help][--version]③mkdir。mkdir(makedirectory)命令用于創(chuàng)建目錄。語法:mkdir[-p]dirName參數(shù)說明如下。-p:確保目錄名稱存在,若不存在,則創(chuàng)建一個(gè)。3.1.2
安裝Linux系統(tǒng)常用命令④cd。cd(changedirectory)
命令用于切換當(dāng)前工作目錄。其中,dirName為絕對路徑或相對路徑
。若目錄名稱省略,則變換至使用者的home目錄(也就是剛登錄時(shí)所在的目錄)。另外,“~”符號表示home目錄,“.”表示目前所在的目錄,“..”表示當(dāng)前目錄的上一層目錄。語法:cd[dirName]⑤touch。touch命令用于修改文件或目錄的時(shí)間屬性,包括存取時(shí)間和更改時(shí)間。若文件不存在,則系統(tǒng)會(huì)建立一個(gè)新的文件。語法:touch[-acfm][-d<日期時(shí)間>][-r<參考文件或目錄>][-t<日期時(shí)間>][--help][--version][文件或目錄…]3.1.2
安裝Linux系統(tǒng)常用命令⑥cp。cp(copyfile)命令主要用于復(fù)制文件或目錄。語法:cp[options]sourcedest或cp[options]source...directorycd[dirName]⑦mv。mv(movefile)命令用來為文件或目錄改名,或者將文件或目錄移至其他位置。語法:mv[options]sourcedestmv[options]source...directory3.1.2
安裝Linux系統(tǒng)常用命令⑧rm。rm(remove)命令用于刪除一個(gè)文件或目錄。語法:rm[options]name...⑨cat。cat(concatenate)命令用于連接文件并打印到標(biāo)準(zhǔn)輸出設(shè)備上。語法:cat[-AbeEnstTuv][--help][--version]fileName3.1.2
安裝Linux系統(tǒng)常用命令⑩more。more命令與cat類似,不過會(huì)以一頁一頁的形式顯示,更方便使用者逐頁閱讀,基本指令就是按空白鍵就會(huì)顯示下一頁,按b鍵就會(huì)顯示上一頁,還有搜尋字符串的功能(與vi相似),使用說明文件,請按h鍵。語法:more[-dlfpcsu][-n][+/pattern][+linenum][fileNames..]?less。less與more類似,less可以隨意瀏覽文件,支持翻頁和搜索,支持向上翻頁和向下翻頁。語法:less[參數(shù)]文件3.1.2
安裝Linux系統(tǒng)常用命令?head。head命令可用于查看文件開頭部分的內(nèi)容,有一個(gè)常用的參數(shù)-n,用于顯示行數(shù),默認(rèn)為10,即顯示10行內(nèi)容。語法:head[參數(shù)][文件]?tail。tail命令可用于查看文件的內(nèi)容,有一個(gè)常用的參數(shù)-f,常用于查閱正在改變的日志文件。tail-ffilename會(huì)把filename文件中的尾部內(nèi)容顯示在屏幕上,并且不斷刷新,只要filename更新,就可以看到最新的文件內(nèi)容。語法:tail[參數(shù)][文件]。3.1.2
安裝Linux系統(tǒng)常用命令2)用戶、組管理命令①groupadd。groupadd命令用于創(chuàng)建一個(gè)新工作組,新工作組的信息將被添加到系統(tǒng)文件中。相關(guān)文件如下。/etc/group:組賬戶信息。/etc/gshadow:安全組賬戶信息。/etc/login.defsShadow:密碼套件配置。語法:groupadd[-ggid[-o]][-r][-f]grouphead[參數(shù)][文件]②useradd。useradd可用來建立用戶賬號。建好賬號之后,用passwd設(shè)定賬號的密碼??捎胾serdel刪除賬號。使用useradd命令建立的賬號實(shí)際上被保存在/etc/passwd文本文件中。語法:useradd[-mMnr][-c<備注>][-d<登錄目錄>][-e<有效期限>][-f<緩沖天數(shù)>][-g<群組>][-G<群組>][-s<shell>][-u<uid>][用戶賬號]或useradd-D[-b][-e<有效期限>][-f<緩沖天數(shù)>][-g<群組>][-G<群組>][-s<shell>]3.1.2
安裝Linux系統(tǒng)常用命令③userdel。userdel可刪除用戶賬號與相關(guān)文件。若不加參數(shù),則僅刪除用戶賬號,而不刪除相關(guān)文件。語法:userdel[-r][用戶賬號]④groupdel。groupdel命令用于刪除群組。當(dāng)需要從系統(tǒng)上刪除群組時(shí),可用groupdel(groupdelete)命令來完成這項(xiàng)工作。若該群組中仍包括某些用戶,則必須先刪除這些用戶,再刪除群組。語法:groupdel[群組名稱]3.1.2
安裝Linux系統(tǒng)常用命令⑤passwd。passwd命令用來更改使用者的密碼。語法:passwd[-k][-l][-u[-f]][-d][-S][username]
⑥usermod。usermod命令可用來修改用戶賬號的各項(xiàng)設(shè)定。語法:usermod[-LU][-c<備注>][-d<登錄目錄>][-e<有效期限>][-f<緩沖天數(shù)>][-g<群組>][-G<群組>][-l<賬號名稱>][-s<shell>][-u<uid>][用戶賬號]3.1.2
安裝Linux系統(tǒng)常用命令3)常見查找命令②whereis。whereis命令用于查找文件。該指令會(huì)在特定目錄中查找符合條件的文件。這些文件應(yīng)屬于源代碼文件、二進(jìn)制文件或幫助文件。該指令只能用于查找二進(jìn)制文件、源代碼文件和man手冊頁,一般文件的定位需要使用locate命令。語法:whereis[-bfmsu][-B<目錄>...][-M<目錄>...][-S<目錄>...][文件...]①which。which命令用于查找文件。which指令會(huì)在環(huán)境變量$PATH設(shè)置的目錄里查找符合條件的文件。語法:which[文件...]3.1.2
安裝Linux系統(tǒng)常用命令4)壓縮打包命令tar語法:tar[-cxtzjvfpPN]文件與目錄...
③find。find命令用來在指定目錄下查找文件。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。若使用該命令時(shí)不設(shè)置任何參數(shù),則find命令將在當(dāng)前目錄下查找子目錄與文件,并且將查找到的子目錄和文件全部顯示。語法:find[path][expression]3.1.2
安裝Linux系統(tǒng)常用命令②pstree。功能說明:以樹狀圖顯示運(yùn)行的進(jìn)程。語法:pstree[-acGhlnpuUV][-H<程序識別碼>][<程序識別碼>/<用戶名稱>]5)查看進(jìn)程命令①ps。查看Linux中當(dāng)前運(yùn)行的進(jìn)程的命令。能列出系統(tǒng)中運(yùn)行的進(jìn)程,包括進(jìn)程號、命令、CPU使用量、內(nèi)存使用量等。3.1.2
安裝Linux系統(tǒng)常用命令④kill。kill命令用于刪除執(zhí)行中的程序或工作。kill可將指定的信息送至程序。預(yù)設(shè)的信息為SIGTERM(15),可將指定程序終止。若仍無法終止該程序,則可使用SIGKILL(9)信息嘗試強(qiáng)制刪除程序。程序或工作的編號可利用ps指令或jobs指令查看。語法:kill[-s<信息名稱或編號>][程序]
或kill[-l<信息編號>]③top。top命令用于實(shí)時(shí)顯示進(jìn)程的動(dòng)態(tài)。使用權(quán)限:所有使用者。語法:top[-][d][q][c][S][s][i][n][b]3.1.3
Shell腳本編程Shell是一個(gè)用C語言編寫的應(yīng)用程序,它提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。KenThompson的sh是第一種UNIXShell,WindowsExplorer是一個(gè)典型的圖形界面Shell。Shell腳本(ShellScript),是一種為Shell編寫的腳本程序。業(yè)界所說的Shell通常都是Shell腳本。但是Shell和ShellScript是兩種不同的概念。案例1編寫一個(gè)腳本,運(yùn)行時(shí)在命令行界面輸出"HelloWorld!"。代碼示例:創(chuàng)建一個(gè)helloworld.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例2編寫一個(gè)腳本,使用tar命令備份/var/log下的所有日志文件,備份后的文件名應(yīng)包含日期標(biāo)簽,防止后面的備份數(shù)據(jù)將前面的備份數(shù)據(jù)覆蓋。代碼示例:創(chuàng)建一個(gè)backup.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例3編寫一個(gè)腳本,測試在/24網(wǎng)段的前5個(gè)IP地址中哪些主機(jī)處于開機(jī)狀態(tài),哪些主機(jī)處于關(guān)機(jī)狀態(tài)。代碼示例:創(chuàng)建一個(gè)scanhost.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖3-1-40所示。3.1.3
Shell腳本編程案例4統(tǒng)計(jì)/var/log有多少個(gè)文件,并顯示這些文件名。代碼示例:創(chuàng)建一個(gè)countfiles.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例5使用腳本循環(huán)創(chuàng)建命名為三位數(shù)字的文本文件(111~333的文件)。代碼示例:創(chuàng)建一個(gè)touchfiles.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例6顯示本機(jī)Linux系統(tǒng)中開放的端口列表。代碼示例:創(chuàng)建一個(gè)listports.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例7刪除Linux系統(tǒng)中UID大于或等于1000的普通用戶。代碼示例:創(chuàng)建一個(gè)空白的delusers.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例8判斷文件或目錄是否存在。代碼示例:創(chuàng)建一個(gè)空白的checkfiles.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例9生成簽名私鑰和證書。代碼示例:創(chuàng)建一個(gè)空白的genkeys.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。3.1.3
Shell腳本編程案例9生成簽名私鑰和證書。代碼示例:創(chuàng)建一個(gè)空白的genkeys.sh文件,輸入以下代碼,保存代碼后運(yùn)行,如圖所示。任務(wù)2Hadoop安裝與HDFS編程02【任務(wù)描述】掌握安裝Hadoop的方法并能夠選擇和配置Hadoop的運(yùn)行方式;掌握HDFS的基本操作命令并進(jìn)行編程。任務(wù)2Hadoop安裝與HDFS編程02【關(guān)鍵步驟】(1)掌握安裝Hadoop的方法。(2)配置Hadoop的運(yùn)行方式。(3)掌握HDFS的基本操作命令。(4)HDFS編程實(shí)訓(xùn)。(1)配置操作系統(tǒng)的基礎(chǔ)環(huán)境。①安裝ssh。運(yùn)行sudoaptinstallopenssh-server,安裝ssh3.2.1
Hadoop安裝接下來配置ssh無密碼登錄,在終端中輸入以下命令,配置ssh無密碼登錄(1)配置操作系統(tǒng)的基礎(chǔ)環(huán)境。①安裝ssh。運(yùn)行sudoaptinstallopenssh-server,安裝ssh3.2.1
Hadoop安裝接下來配置ssh無密碼登錄,在終端中輸入以下命令,配置ssh無密碼登錄(1)配置操作系統(tǒng)的基礎(chǔ)環(huán)境。①安裝ssh。運(yùn)行sudoaptinstallopenssh-server,安裝ssh3.2.1
Hadoop安裝接下來配置ssh無密碼登錄,在終端中輸入以下命令,配置ssh無密碼登錄②安裝并配置Java相關(guān)環(huán)境變量。在Terminal中輸入javac,查看版本,選擇需要的版本輸入命令:sudoaptinstallopenjdk-8-jdk-headless完成安裝3.2.1
Hadoop安裝完成Java安裝后,執(zhí)行vi~/.bashrc。修改bashrc文件,添加如下內(nèi)容,配置Java環(huán)境③刷新環(huán)境變量。執(zhí)行source~/.bashrc命令,刷新環(huán)境變量3.2.1
Hadoop安裝(2)下載和安裝Hadoop。①下載Hadoop安裝包。進(jìn)入Hadoop官網(wǎng)選擇對應(yīng)版本安裝包下載即可。網(wǎng)址為/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz。②安裝Hadoop。創(chuàng)建安裝目錄并將Hadoop安裝包解壓至該目錄,命令如下,安裝Hadoop,如圖所示。mkdir~/hadoop&&cd~/hadooptar-zxf~/Downloads/hadoop-3.3.1.tar.gz--strip13.2.1
Hadoop安裝(3)配置Hadoop環(huán)境變量。①下載通過vim命令編輯.bashrc文件,并增加以下內(nèi)容,配置環(huán)境變量,如圖所示。vi~/.bashrc再次使用source刷新配置文件.bashrc,命令如下:source~/.bashrc3.2.1
Hadoop安裝(4)測試安裝。通過使用以下命令輸出Hadoop版本號,測試Hadoop是否安裝成功,如圖所示。hadoopversion3.2.2
配置Hadoop運(yùn)行方式Hadoop的配置文件位于Hadoop安裝文件夾下的etc/hadoop/中,偽分布式只需要修改2個(gè)配置文件,即core-site.xml和hdfs-site.xml。Hadoop的配置文件是xml格式的文件,每個(gè)配置以聲明property的name和value的
方式來實(shí)現(xiàn)。具體配置過程如下所示。(1)將jdk8的路徑添加到hadoop-env.sh文件中。在hadoop-env.sh文件中增加以下語句:exportJava_HOME=/usr/lib/jvm/java-8-openjdk-amd64(2)修改core-site.xml文件。根據(jù)實(shí)際需要修改hadoop.tmp.dir、fs.defaultFS等參數(shù)值,如圖所示。3.2.2
配置Hadoop運(yùn)行方式Hadoop的配置文件位于Hadoop安裝文件夾下的etc/hadoop/中,偽分布式只需要修改2個(gè)配置文件,即core-site.xml和hdfs-site.xml。Hadoop的配置文件是xml格式的文件,每個(gè)配置以聲明property的name和value的
方式來實(shí)現(xiàn)。具體配置過程如下所示。(1)將jdk8的路徑添加到hadoop-env.sh文件中。在hadoop-env.sh文件中增加以下語句:exportJava_HOME=/usr/lib/jvm/java-8-openjdk-amd64(2)修改core-site.xml文件。根據(jù)實(shí)際需要修改hadoop.tmp.dir、fs.defaultFS等參數(shù)值,如圖所示。3.2.2
配置Hadoop運(yùn)行方式(3)修改hdfs-site.xml文件。根據(jù)實(shí)際需要修改dfs.replication、.dir、dfs.datanode.data.dir、dfs.http.address等參數(shù)值,如圖所示。3.2.2
配置Hadoop運(yùn)行方式(4)NameNode的格式化。通過以下命令格式化NameNode,命令如下,NameNode的格式化如圖所示。hdfsnamenode-format注意:不能一直格式化NameNode。格式化NameNode會(huì)產(chǎn)生新的集群ID,從而導(dǎo)致NameNode和DataNode的集群ID不一致,使集群找不到已往數(shù)據(jù)。因此,在格式化NameNode前,一定要先刪除data數(shù)據(jù)和log日志。3.2.2
配置Hadoop運(yùn)行方式(5)啟動(dòng)NameNode和DataNode進(jìn)程。通過運(yùn)行以下命令啟動(dòng)NameNode和DataNode進(jìn)程,并通過jsp命令查看啟動(dòng)信息,如圖示。start-dfs.sh啟動(dòng)完成后,通過命令jps來判斷是否成功啟動(dòng),若成功啟動(dòng),則列出如下進(jìn)程:NameNode、DataNode和SecondaryNameNode。注意:在執(zhí)行hadoop"startdfs.sh"時(shí),如果出現(xiàn)警告信息:WARNutil.NativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicable,可以通過以下方式解決。在hadoop-env.sh中添加以下兩條語句:exportHADOOP_OPTS="$HADOOP_OPTS-Djava.library.path=$HADOOP_HOME/lib/native"exportHADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"3.2.2
配置Hadoop運(yùn)行方式成功啟動(dòng)后,在瀏覽器中輸入localhost:50070會(huì)出現(xiàn)如圖所示的HadoopWeb界面。3.2.3
HDFS基本操作命令HDFS(HadoopDistributedFileSystem)是一種分布式文件系統(tǒng),它具有高容錯(cuò)的特點(diǎn),并且可以部署在廉價(jià)的通用硬件上,可提供高吞吐率的數(shù)據(jù)訪問,適合那些需要處理海量數(shù)據(jù)集的應(yīng)用程序。HDFS提供了一套特有的、基于Hadoop抽象文件系統(tǒng)的API,支持以流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。本小節(jié)主要介紹HDFS的基本命令操作。(1)列出HDFS文件。命令格式:hadoopfs-ls[-R]。3.2.3
HDFS基本操作命令(2)創(chuàng)建文件目錄。命令格式:hadoopfs-mkdir[目錄路徑]。可以通過hadoopfs-mkdir/data命令在HDFS根目錄下創(chuàng)建一個(gè)/data目錄(3)刪除文件目錄。命令格式:hadoopfs–rm–r[目錄路徑]??梢允褂胷m命令刪除一個(gè)目錄。例如,可以使用hadoopfs–rm–r/data命令刪除剛才在HDFS中創(chuàng)建的“/data”目錄,如圖所示。3.2.3
HDFS基本操作命令(4)上傳文件命令格式:hadoopfs-put[本地文件路徑hdfs路徑]。如圖所示,可以通過運(yùn)行hadoopfs-put~/Downloads/workers/data命令將~/Downloads/目錄下的文件workers上傳到hdfs根目錄下的/data目錄中。(5)下載文件。命令格式:hadoopfs-get[hdfs中的文件路徑本地文件路徑]。如圖所示,可以通過hadoopfs-get/data/workers~/Documents命令將/data目錄下的文件workers下載到用戶的~/Documents目錄中。3.2.3
HDFS基本操作命令(6)查看文件。命令格式:hadoopfs-cat[hdfs中的文件路徑]。如圖所示,可以通過hadoopfs-cat/data/workers|head命令查看/data目錄下workers文件中的內(nèi)容,通過|head限定查看前10條。(7)進(jìn)入/退出安全模式。有時(shí),在Hadoop啟動(dòng)時(shí)不能對文件系統(tǒng)進(jìn)行創(chuàng)建、刪除文件等操作,此時(shí),文件系統(tǒng)所處的狀態(tài)叫作安全模式,可以使用以下命令設(shè)置進(jìn)入/退出安全模式:hadoopdfsadmin–safemodeenterhadoopdfsadmin–safemodeleave3.2.4
HDFS編程實(shí)訓(xùn)編程前的準(zhǔn)備工作如下。(1)安裝IntelliJIDEA集成工具。①下載IntelliJIDEA。③將安裝包移動(dòng)到目錄/usr/local下②解壓安裝包。④運(yùn)行啟動(dòng)腳本。進(jìn)入安裝目錄,運(yùn)行腳本./bin/idea.sh,啟動(dòng)IntelliJIDEA。3.2.4
HDFS編程實(shí)訓(xùn)(2)安裝并配置Maven環(huán)境。③配置Maven環(huán)境變量。通過vi命令修改/etc/profile文件,添加Maven環(huán)境變量②移動(dòng)解壓后的安裝包到/usr/local目錄下。①下載并解壓Maven安裝包。在Maven安裝目錄下的conf目錄中修改settings.xml文件,配置阿里云鏡像源。3.2.4
HDFS編程實(shí)訓(xùn)在IntelliJIDEA中配置安裝的Maven,在“File”“Setting”中搜索查找Maven配置,如圖所示,選擇安裝的Maven目錄和對應(yīng)修改后的settings.xml配置文件即可。(3)創(chuàng)建Maven項(xiàng)目。使用IntelliJIDEA集成工具創(chuàng)建Maven項(xiàng)目,如圖所示,在pom.xml文件中添加如下依賴,對HDFS進(jìn)行編程操作。3.2.4
HDFS編程實(shí)訓(xùn)3.2.4
HDFS編程實(shí)訓(xùn)使用@Test注解每一個(gè)操作案例方法,即可單獨(dú)運(yùn)行案例代碼。實(shí)訓(xùn)1:編寫代碼在HDFS根目錄下,創(chuàng)建/data/test目錄。3.2.4
HDFS編程實(shí)訓(xùn)實(shí)訓(xùn)2:編寫代碼,將本地磁盤中的一個(gè)文件上傳到HDFS的/data/test目錄下。代碼示例如下:3.2.4
HDFS編程實(shí)訓(xùn)實(shí)訓(xùn)4:編寫代碼,判斷路徑是文件夾還是文件。3.2.4
HDFS編程實(shí)訓(xùn)實(shí)訓(xùn)5:編寫代碼,查看文件詳細(xì)信息。3.2.4
HDFS編程實(shí)訓(xùn)實(shí)訓(xùn)6:編寫代碼,使用程序重命名HDFS文件。3.2.4
HDFS編程實(shí)訓(xùn)實(shí)訓(xùn)7:編寫代碼,刪除HDFS文件。任務(wù)3Kafka安裝與編程03【任務(wù)描述】掌握安裝和配置Kafka的方法;掌握Kafka的基本操作命令并進(jìn)行編程。分別編寫生產(chǎn)者代碼和消費(fèi)者代碼,實(shí)現(xiàn)向主題寫入數(shù)據(jù)、訂閱主題、讀取數(shù)據(jù)的功能,其中,生產(chǎn)者負(fù)責(zé)產(chǎn)生和向主題寫入100條數(shù)據(jù),消費(fèi)者負(fù)責(zé)讀取數(shù)據(jù)。任務(wù)3Kafka安裝與編程03【關(guān)鍵步驟】(1)下載并安裝Kafka。(2)配置Kafka。(3)Kafka編程實(shí)訓(xùn)。3.3.1
Kafka安裝安裝Kafka需要通過升級操作系統(tǒng)軟件包、下載和安裝Java
、下載和安裝Kafka三個(gè)步驟完成3.3.1
Kafka安裝③創(chuàng)建安裝目錄并將Kafka安裝包解壓到此目錄。如圖所示,使用以下命令創(chuàng)建安裝目錄,并將Kafka安裝包解壓到此目錄。mkdir~/kafka&&cd~/kafkatar-xvzf~/Downloads/kafka.tgz--strip13.3.1
Kafka安裝④使用啟動(dòng)腳本運(yùn)行Kafka本地基礎(chǔ)環(huán)境。如圖所示,進(jìn)入Kafka安裝目錄,運(yùn)行以下命令,按正確順序啟動(dòng)所有服務(wù):bin/zookeeper-server-start.shconfig/perties打開另一個(gè)終端會(huì)話,進(jìn)入Kafka安裝目錄并運(yùn)行,啟動(dòng)server服務(wù)如圖所示。bin/kafka-server-start.shconfig/perties3.3.2
Kafka配置Kafka的配置文件主要集中在安裝目錄的config文件夾內(nèi),下面介紹三個(gè)主要配置文件,如圖所示。3.3.2
Kafka配置3.3.3
Kafka基本操作命令Kafka的基本操作命令主要包括創(chuàng)建主題、查看主題、查看主題信息、向主題寫消息、從主題讀消息等。(1)創(chuàng)建主題。如圖所示,使用Kafka命令腳本創(chuàng)建一個(gè)測試主題,命令如下:bin/kafka-topics.sh--create--partitions1--replication-factor1--topictest-topic--bootstrap-serverlocalhost:90923.3.3
Kafka基本操作命令(2)查看主題。查看Kafka中當(dāng)前已有的主題,如圖所示,命令如下:bin/kafka-topics.sh--list--bootstrap-serverlocalhost:9092(3)查看主題信息。如圖所示,通過下面代碼查看Kafka中主題的詳細(xì)信息。bin/kafka-topics.sh--describe--topictest-topic--bootstrap-serverlocalhost:90923.3.3
Kafka基本操作命令(4)向主題寫消息。打開一個(gè)新的命令行窗口,使用命令運(yùn)行生產(chǎn)者客戶端將一些事件寫入topictest-topic,如圖所示。默認(rèn)情況下,輸入的每一行都會(huì)作為一個(gè)單獨(dú)的事件被寫入主題。(5)從主題讀消息。打開另一個(gè)終端會(huì)話并運(yùn)行消費(fèi)者客戶端,以讀取剛剛寫入的事件消息,如圖3-3-13所示。bin/kafka-console-consumer.sh--topictest-topic--from-beginning--bootstrap-serverlocalhost:90923.3.4
Kafka編程實(shí)訓(xùn)任務(wù)描述:分別編寫生產(chǎn)者代碼和消費(fèi)者代碼,實(shí)現(xiàn)向主題寫入數(shù)據(jù)、訂閱主題、讀取數(shù)據(jù)的功能,其中,生產(chǎn)者代碼負(fù)責(zé)產(chǎn)生和向主題寫入100條數(shù)據(jù),消費(fèi)者負(fù)責(zé)讀取數(shù)據(jù)。使用IntelliJIDEA創(chuàng)建Maven項(xiàng)目,添加Java連接Kafka所需要的依賴包到pom.xml,編寫代碼操作Kafka,如圖所示。3.3.4
Kafka編程實(shí)訓(xùn)3.3.4
Kafka編程實(shí)訓(xùn)任務(wù)4Flink安裝與編程04【任務(wù)描述】掌握安裝和配置Flink的方法;掌握Flink的基本操作命令并進(jìn)行編程。創(chuàng)建Flink項(xiàng)目,實(shí)現(xiàn)讀取Socket文本流、使用空格符分割文本、計(jì)算詞頻、實(shí)時(shí)接受輸入文本進(jìn)行計(jì)算等功能。任務(wù)4Flink安裝與編程04【關(guān)鍵步驟】(1)下載和安裝Flink。(2)啟動(dòng)Flink集群。(3)配置Flink。(4)創(chuàng)建Flink項(xiàng)目3.4.1
Flink安裝Flink有三種部署模式,分別是Local、StandaloneCluster和YARNCluster。對于Local模式來說,JobManager和TaskManager用同一個(gè)JVM來完成作業(yè)。在實(shí)際應(yīng)用中大多使用Standalone模式或YARNCluster模式。而采用local模式只要將安裝包解壓啟動(dòng)(./bin/start-cluster.sh)即可。此處以Local模式為例進(jìn)行介紹。(3)啟動(dòng)Flink集群。(2)下載和安裝Flink。(1)測試是否安裝Java。3.4.1
Flink安裝(4)運(yùn)行測試作業(yè)。使用以下命令運(yùn)行Flink測試作業(yè)WordCount,如圖所示。bin/flinkrunexamples/streaming/WordCount.jar3.4.2
Flink配置(4)運(yùn)行測試作業(yè)。Flink的conf目錄下主要有flink-conf.yaml、perties、zoo.cfg等配置文件,如圖所示。3.4.3
Flink基本操作命令Flink基本操作命令包括flinkrun、flinkrun-myarn-cluster、flinklist、flinkstop、flinkcancel、flinksavepoint等,下面分別介紹其用法。(1)flinkrun[option]。(2)flinkrun-myarn-cluster。例如:flinkrun-myarn-cluster-yd-yjm1024m-ytm1024m-ynm-ys1。3.4.3
Flink基本操作命令(3)flinklist。(4)flinkstop。-d,--drain:在獲取savepoint、停止pipeline之前發(fā)送MAX_WATERMARK。-p,--savepointPath:指定savepoint的path,若不指定,則使用默認(rèn)值(state.savepoints.dir)。(5)flinkcancel。①取消正在運(yùn)行的作業(yè)。flinkcancel[options]<job_id>②取消正在運(yùn)行的作業(yè)并將其保存到相應(yīng)的保存點(diǎn)。flinkcancel-s/--withsavepoint
<job_id>flinkcancel命令運(yùn)行示例如圖3-4-8所示。3.4.3
Flink基本操作命令(6)flinksavepoint。語法:flinksavepoint[options]<job_id><targetdirectory>。①觸發(fā)保存點(diǎn)。flinksavepoint<job_id><hdfs://xxxx/xx/x>②使用YARN觸發(fā)保存點(diǎn)。flinksavepoint<job_id><target_directory>-yid<application_id>③使用savepoint取消作業(yè)。flinkcancel-s<tar_directory><job_id>④從保存點(diǎn)恢復(fù)。flinkrun-s<target_directoey>[:runArgs]#如果恢復(fù)的程序?qū)壿嬤M(jìn)行了修改(如刪除算子),那么可以指定allowNonRestoredState參數(shù)恢復(fù)。flinkrun-s<target_directory>-n/--allowNonRestoredState[:runArgs]3.4.4
Flink編程實(shí)訓(xùn)【實(shí)訓(xùn)要求】創(chuàng)建Flink項(xiàng)目,實(shí)現(xiàn)以下功能:讀取Socket文本流;使用空格符分割文本計(jì)算詞頻;實(shí)時(shí)接受輸入文本,進(jìn)行計(jì)算。(1)創(chuàng)建Flink流計(jì)算項(xiàng)目。在IntelliJIDEA中創(chuàng)建一個(gè)新的項(xiàng)目,選擇Maven項(xiàng)目3.4.4
Flink編程實(shí)訓(xùn)程序運(yùn)行前需要執(zhí)行以下步驟。步驟1.在運(yùn)行程序前需要事先開啟本機(jī)Socket監(jiān)聽,在對應(yīng)操作系統(tǒng)下安裝netcat工具。步驟2.使用命令nc-l-p9999開啟實(shí)時(shí)監(jiān)聽。步驟3.運(yùn)行示例程序,在netcat監(jiān)聽的窗口輸出任意字符,如圖所示,即可在示例代碼運(yùn)行窗口顯示統(tǒng)計(jì)的詞頻。3.4.4
Flink編程實(shí)訓(xùn)此外,還可以使用命令mvncleanpackage將代碼打包為jar包,使用FlinkWebUI點(diǎn)擊上傳按鈕,選擇jar包后進(jìn)行上傳,創(chuàng)建job運(yùn)行作業(yè)。習(xí)題1.設(shè)計(jì)一個(gè)Shell腳本,用于自動(dòng)備份MySQL數(shù)據(jù)庫,要求腳本能夠完成以下任務(wù)。①用戶可以輸入數(shù)據(jù)庫的名稱、用戶名和密碼,腳本能夠通過這些信息連接到數(shù)據(jù)庫。②用戶可以指定備份文件的名稱和備份目錄。③腳本能夠自動(dòng)創(chuàng)建備份目錄,若目錄已存在,則不需要?jiǎng)?chuàng)建。④腳本能夠備份整個(gè)數(shù)據(jù)庫或指定的表。⑤腳本應(yīng)該能夠?qū)浞菸募嚎s成.tar.gz格式。⑥腳本應(yīng)該記錄備份開始時(shí)間、結(jié)束時(shí)間和備份文件的名稱。習(xí)題2.設(shè)計(jì)一個(gè)基于HDFS的文件分布式處理程序,要求程序能夠完成以下任務(wù)。①用戶可以輸入待處理的文件路徑,程序能夠從HDFS中讀取該文件。②處理程序能夠?qū)斎氲奈募M(jìn)行行數(shù)統(tǒng)計(jì),并將統(tǒng)計(jì)結(jié)果輸出到控制臺(tái)。③ 處理程序能夠?qū)⒔y(tǒng)計(jì)結(jié)果保存到HDFS指定的輸出目錄下,輸出文件名的格式為“inputFileName_lineCount.txt”。例如,若輸入文件名為“sample.txt”,則輸出文件名為“sample_lineCount.txt”。④程序應(yīng)該具有錯(cuò)誤處理機(jī)制,能夠處理無效的輸入路徑等,并能夠輸出相應(yīng)的錯(cuò)誤信息。習(xí)題3.設(shè)計(jì)一個(gè)基于ApacheKafka的消息處理程序,要求程序能夠完成以下任務(wù)。①用戶可以指定Kafka的主題、消費(fèi)組ID和Kafka集群的連接信息,程序能夠通過這些信息連接到Kafka集群并訂閱指定主題。②程序應(yīng)該支持多線程處理,用戶可以指定線程數(shù)。③處理程序能夠從指定的Kafka主題中消費(fèi)消息,并能將消息處理結(jié)果輸出到控制臺(tái)。④處理程序應(yīng)該支持將處理結(jié)果保存到指定的Kafka主題中,以及將處理結(jié)果保存到指定的文件中。用戶可以選擇其中一種操作或同時(shí)進(jìn)行兩種操作。⑤程序應(yīng)該具有錯(cuò)誤處理機(jī)制,能夠處理無效的連接信息、主題名稱等,并能夠輸出相應(yīng)的錯(cuò)誤信息。習(xí)題4.設(shè)計(jì)一個(gè)基于ApacheFlink的數(shù)據(jù)流處理程序,要求程序能夠完成以下任務(wù)。①用戶可以指定數(shù)據(jù)源文件路徑、數(shù)據(jù)處理邏輯及結(jié)果輸出方式。數(shù)據(jù)源可以是本地文件或網(wǎng)絡(luò)上的文件(如HTTP或FTP服務(wù)器)。②程序能夠讀取指定路徑下的文件,將文件中的數(shù)據(jù)轉(zhuǎn)換為Flink數(shù)據(jù)流并進(jìn)行處理。③用戶可以指定數(shù)據(jù)處理邏輯,如對每一行數(shù)據(jù)進(jìn)行分詞、過濾等操作。④處理程序應(yīng)該支持將處理結(jié)果保存到指定的文件或輸出到控制臺(tái)中。用戶可以選擇其中一種操作或同時(shí)進(jìn)行兩種操作。⑤程序應(yīng)該具有錯(cuò)誤處理機(jī)制,能夠處理無效的文件路徑、數(shù)據(jù)處理邏輯錯(cuò)誤等情況,并能夠輸出相應(yīng)的錯(cuò)誤信息。第四章機(jī)器學(xué)習(xí)技能目標(biāo)理解機(jī)器學(xué)習(xí)的基本流程和主要分類。理解監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)中經(jīng)典算法的核心思想及應(yīng)用場景。能夠使用不同的機(jī)器學(xué)習(xí)算法解決實(shí)際問題。本章任務(wù)學(xué)習(xí)本章,讀者需要完成以下任務(wù)。任務(wù)4.1認(rèn)識機(jī)器學(xué)習(xí)。了解機(jī)器學(xué)習(xí)的基本流程和主要分類。任務(wù)4.2監(jiān)督學(xué)習(xí)編程。掌握樸素貝葉斯、決策樹、支持向量機(jī)、邏輯回歸、線性回歸、K近鄰(KNN)等算法的核心思想;能夠使用sklearn庫編寫相關(guān)程序,解決實(shí)際問題。任務(wù)4.3無監(jiān)督學(xué)習(xí)編程。掌握均值聚類(K-Means)、主成分分析(PCA)等無監(jiān)督學(xué)習(xí)算法的核心思想;能夠使用sklearn庫編寫相關(guān)程序,解決實(shí)際問題。任務(wù)1認(rèn)識機(jī)器學(xué)習(xí)01【任務(wù)描述】了解機(jī)器學(xué)習(xí)的基本流程和主要分類。任務(wù)1認(rèn)識機(jī)器學(xué)習(xí)01【關(guān)鍵步驟】(1)理解機(jī)器學(xué)習(xí)的基本流程。(2)理解機(jī)器學(xué)習(xí)的主要分類。機(jī)器學(xué)習(xí)是一種人工智能領(lǐng)域的分支,它利用統(tǒng)計(jì)學(xué)、概率論和計(jì)算機(jī)科學(xué)等技術(shù),通過對數(shù)據(jù)進(jìn)行分析、學(xué)習(xí)和訓(xùn)練,來使機(jī)器能夠自動(dòng)提高性能。簡而言之,機(jī)器學(xué)習(xí)是一種用于讓機(jī)器自己學(xué)習(xí)如何做某些任務(wù)的技術(shù)。機(jī)器學(xué)習(xí)的基本流程包括以下幾個(gè)步驟。收集數(shù)據(jù)、數(shù)據(jù)預(yù)處理、特征提取、模型選擇和訓(xùn)練、模型評估、模型優(yōu)化、模型部署和應(yīng)用。認(rèn)識機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)可以根據(jù)不同的分類方法進(jìn)行劃分,以下是幾種常見的分類方法。監(jiān)督學(xué)習(xí):監(jiān)督學(xué)習(xí)是機(jī)器學(xué)習(xí)中一種常見的學(xué)習(xí)方式。它通過已有的標(biāo)注數(shù)據(jù)(帶有標(biāo)簽的數(shù)據(jù))來訓(xùn)練模型,并用于對未知數(shù)據(jù)進(jìn)行預(yù)測和分類。無監(jiān)督學(xué)習(xí):無監(jiān)督學(xué)習(xí)是一種沒有標(biāo)簽的數(shù)據(jù)集的學(xué)習(xí)方式,主要用于發(fā)現(xiàn)數(shù)據(jù)中的模式和結(jié)構(gòu)。無監(jiān)督學(xué)習(xí)的應(yīng)用包括聚類、降維、異常檢測等。半監(jiān)督學(xué)習(xí):半監(jiān)督學(xué)習(xí)是介于監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)之間的一種學(xué)習(xí)方式。它通過一小部分標(biāo)注數(shù)據(jù)和大量未標(biāo)注數(shù)據(jù)來訓(xùn)練模型,并用于對未知數(shù)據(jù)進(jìn)行預(yù)測和分類。強(qiáng)化學(xué)習(xí):強(qiáng)化學(xué)習(xí)是一種通過試錯(cuò)來學(xué)習(xí)如何做出最優(yōu)決策的學(xué)習(xí)方式。在強(qiáng)化學(xué)習(xí)中,機(jī)器會(huì)執(zhí)行某些操作,并根據(jù)執(zhí)行結(jié)果獲得獎(jiǎng)勵(lì)或懲罰,以調(diào)整其行為。認(rèn)識機(jī)器學(xué)習(xí)任務(wù)2監(jiān)督學(xué)習(xí)編程02【任務(wù)描述】掌握樸素貝葉斯、決策樹、支持向量機(jī)、邏輯回歸、線性回歸、KNN等監(jiān)督學(xué)習(xí)算法的核心思想;能夠使用sklearn庫編寫相關(guān)程序,解決實(shí)際問題。任務(wù)2監(jiān)督學(xué)習(xí)編程02【關(guān)鍵步驟】(1)掌握樸素貝葉斯、決策樹、支持向量機(jī)、邏輯回歸、線性回歸、KNN等監(jiān)督學(xué)習(xí)算法的核心思想。(2)使用sklearn庫中的樸素貝葉斯、決策樹、支持向量機(jī)、邏輯回歸、線性回歸、KNN等監(jiān)督學(xué)習(xí)算法編寫相關(guān)程序,解決實(shí)際問題。樸素貝葉斯算法是一種基于貝葉斯定理的分類算法,其基本原理是通過先驗(yàn)概率和條件概率來預(yù)測新樣本的類別。它假設(shè)樣本的特征之間是相互獨(dú)立的,因此稱為樸素貝葉斯。4.2.1
樸素貝葉斯算法樸素貝葉斯算法包括兩個(gè)步驟:訓(xùn)練和預(yù)測。在訓(xùn)練階段,算法會(huì)從給定的訓(xùn)練集中學(xué)習(xí)先驗(yàn)概率和條件概率。其中,先驗(yàn)概率是指每個(gè)類別在樣本中出現(xiàn)的概率,條件概率是指每個(gè)特征在給定類別下出現(xiàn)的概率。在預(yù)測階段,算法會(huì)根據(jù)先驗(yàn)概率和條件概率計(jì)算新樣本屬于每個(gè)類別的概率,并選擇概率最大的類別作為預(yù)測結(jié)果。樸素貝葉斯算法是一種基于貝葉斯定理的分類算法,其基本原理是通過先驗(yàn)概率和條件概率來預(yù)測新樣本的類別。它假設(shè)樣本的特征之間是相互獨(dú)立的,因此稱為樸素貝葉斯。4.2.1
樸素貝葉斯算法根據(jù)特征數(shù)據(jù)的先驗(yàn)分布不同,sklearn提供了5種不同的樸素貝葉斯算法(sklearn.naive_bayes:NaiveBayes模塊),分別是伯努利樸素貝葉斯(BernoulliNB)、分類樸素貝葉斯(CategoricalNB)、高斯樸素貝葉斯(GaussianNB)、多項(xiàng)式樸素貝葉斯(MultinomialNB)、補(bǔ)充樸素貝葉斯(ComplementNB)。1)伯努利樸素貝葉斯(BernoulliNB)4.2.1
樸素貝葉斯算法二項(xiàng)分布又叫作伯努利分布,它是一種現(xiàn)實(shí)中常見,并且擁有很多優(yōu)越數(shù)學(xué)性質(zhì)的分布方式。伯努利樸素貝葉斯專門用來處理二項(xiàng)分布問題。伯努利樸素貝葉斯假設(shè)數(shù)據(jù)服從多元伯努利分布,并在此基礎(chǔ)上應(yīng)用樸素貝葉斯的訓(xùn)練和分類過程。簡單來說,多元伯努利分布就是數(shù)據(jù)集中可以存在多個(gè)特征,但每個(gè)特征都是二分類的,可以用布爾變量表示,也可以表示為{0,1}或{-1,1}等任意二分類組合。因此,這個(gè)類要求將樣本轉(zhuǎn)換為二分類特征向量,如果數(shù)據(jù)本身不是二分類的,那么可以使用類中專門用來二值化的參數(shù)binarize來改變數(shù)據(jù)。伯努利樸素貝葉斯常用于處理文本分類數(shù)據(jù)。但由于伯努利樸素貝葉斯是處理二項(xiàng)分布的,所以它更加在意的是“存在與否”,而不是“出現(xiàn)多少次”這樣的次數(shù)或頻率。在文本分類的情況下,伯努利樸素貝葉斯可以使用單詞出現(xiàn)向量(而不是單詞計(jì)數(shù)向量)來訓(xùn)練分類器。4.2.1
樸素貝葉斯算法4.2.1
樸素貝葉斯算法4.2.1
樸素貝葉斯算法4.2.1
樸素貝葉斯算法2)分類樸素貝葉斯(CategoricalNB)對分類分布的數(shù)據(jù)實(shí)施分類樸素貝葉斯算法,該算法專用于離散數(shù)據(jù)集,它假定由索引描述的每個(gè)特征都有其自己的分類分布。4.2.1
樸素貝葉斯算法算法原型:classsklearn.naive_bayes.CategoricalNB(*,alpha=1.0,fit_prior=True,class_prior=None,min_categories=None)4.2.1
樸素貝葉斯算法4.2.1
樸素貝葉斯算法3)高斯樸素貝葉斯(GaussianNB)4.2.1
樸素貝葉斯算法4.2.1
樸素貝葉斯算法4)多項(xiàng)式樸素貝葉斯(MultinomialNB)特征變量是離散變量,符合多項(xiàng)分布,在文檔分類中,特征變量體現(xiàn)在一個(gè)單詞出現(xiàn)的次數(shù)或單詞的TF-IDF值等上,不支持負(fù)數(shù),因此輸入變量特征的時(shí)候,不能用StandardScaler進(jìn)行標(biāo)準(zhǔn)化,可以使用MinMaxScaler進(jìn)行歸一化。算法原型:classsklearn.naive_bayes.MultinomialNB(*,alpha=1.0,fit_prior=True,class_prior=None)4.2.1
樸素貝葉斯算法4.2.1
樸素貝葉斯算法(5)補(bǔ)碼樸素貝葉斯(ComplementNB,CNB)補(bǔ)碼樸素貝葉斯是MultinomialNB模型的一個(gè)變種。補(bǔ)碼樸素貝葉斯是標(biāo)準(zhǔn)多項(xiàng)式樸素貝葉斯算法的一種改進(jìn),比較適用于不平衡的數(shù)據(jù)集,在文本分類上的結(jié)果通常比多項(xiàng)式樸素貝葉斯模型好,具體來說,補(bǔ)碼樸素貝葉斯使用來自每個(gè)類的補(bǔ)數(shù)的統(tǒng)計(jì)數(shù)據(jù)來計(jì)算模型的權(quán)重。補(bǔ)碼樸素貝葉斯的發(fā)明者的研究表明,補(bǔ)碼樸素貝葉斯的參數(shù)估計(jì)比多項(xiàng)式樸素貝葉斯的參數(shù)估計(jì)更穩(wěn)定。4.2.1
樸素貝葉斯算法4.2.2
決策樹決策樹(DecisionTree)是一種常用的機(jī)器學(xué)習(xí)算法,主要應(yīng)用于分類和回歸任務(wù)中。決策樹的基本思想是將數(shù)據(jù)集分成許多小的子集,然后通過一系列的判斷來對數(shù)據(jù)進(jìn)行分類或預(yù)測。決策樹的核心是選擇合適的劃分特征,使得每個(gè)子集的類別純度最大化。1)基本原理決策樹的基本原理是通過不斷對特征進(jìn)行劃分,將數(shù)據(jù)集劃分為不同的子集,使得每個(gè)子集的類別純度最大化。決策樹通常從根節(jié)點(diǎn)開始,根據(jù)不同特征的取值進(jìn)行劃分,得到多個(gè)子節(jié)點(diǎn),再對每個(gè)子節(jié)點(diǎn)執(zhí)行相同的劃分過程,直到滿足一定的條件為止。通常情況下,決策樹采用信息增益、信息增益比、基尼指數(shù)等方法來選擇劃分特征。信息增益(InformationGain)表示在特征的條件下,類別的不確定性減少的程度。具體來說,信息增益可以表示為其中,表示類別的熵,表示在特征的條件下,類別的條件熵。信息增益越大,表示特征越能夠?qū)?shù)據(jù)集劃分成不同的類別。4.2.2
決策樹2)分類算法決策樹的分類算法有兩種:ID3和CART。ID3(IterativeDichotomiser3)算法是一種簡單的決策樹算法,它使用信息增益來選擇劃分特征。ID3算法有一個(gè)缺點(diǎn),即它會(huì)偏向具有大量取值的特征。CART(ClassificationAndRegressionTree)算法是另一種常用的決策樹算法,它使用基尼指數(shù)來選擇劃分特征?;嶂笖?shù)表示在特征
的條件下錯(cuò)誤分類的概率。具體來說,基尼指數(shù)可以表示為其中,表示類別在數(shù)據(jù)集中的概率,表示在類別的條件下,被錯(cuò)誤分類為類別的概率?;嶂笖?shù)越小,表示特征越能夠?qū)?shù)據(jù)集劃分成不同的類別。4.2.2
決策樹4)決策樹原型class
sklearn.tree.DecisionTreeClassifier(*,
criterion='gini',
splitter='best',
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.0,
max_features=None,
random_state=None,
max_leaf_nodes=None,
min_impurity_decrease=0.0,
min_impurity_split=None,
class_weight=None,
presort='deprecated',
ccp_alpha=0.0)4.2.2
決策樹4.2.3
支持向量機(jī)支持向量機(jī)(SupportVectorMachines,SVM)是一種常用的機(jī)器學(xué)習(xí)算法,主要應(yīng)用于分類任務(wù)和回歸任務(wù)中。SVM的基本思想是將數(shù)據(jù)映射到高維空間中,然后在高維空間中找到一個(gè)超平面,用于將不同類別的數(shù)據(jù)點(diǎn)分開。1)基本原理對于二分類問題,SVM的目標(biāo)是尋找一個(gè)超平面,使得兩個(gè)類別的樣本點(diǎn)距離超平面最近的距離最大,這個(gè)距離稱為“間隔”。具體來說,SVM要找到一個(gè)超平面,使得對于任意一個(gè)數(shù)據(jù)點(diǎn),都滿足以下約束條件:
其中,為的類別標(biāo)簽,取值為+1或-1。目標(biāo)函數(shù)可以表示為
這是一個(gè)凸二次規(guī)劃問題,可以使用優(yōu)化算法進(jìn)行求解。4.2.3
支持向量機(jī)2)分類方法對于線性不可分的情況,SVM使用軟間隔(SoftMargin)方法來處理。在軟間隔方法中,SVM允許一些數(shù)據(jù)點(diǎn)被錯(cuò)誤分類,但是會(huì)給錯(cuò)誤分類的點(diǎn)添加一個(gè)懲罰項(xiàng)。目標(biāo)函數(shù)變?yōu)槠渲校硎镜趥€(gè)數(shù)據(jù)點(diǎn)的誤差,是一個(gè)正則化系數(shù),用于平衡間隔的大小和誤分類點(diǎn)的數(shù)量。的值越大,表示數(shù)據(jù)點(diǎn)距離超平面越遠(yuǎn),或者被錯(cuò)誤分類的概率越大。對于非線性分類問題,SVM使用核函數(shù)(KernelFunction)來將數(shù)據(jù)映射到高維空間。常見的核函數(shù)有多項(xiàng)式核、徑向基函數(shù)核(RBF)等。4.2.3
支持向量機(jī)2)分類方法對于線性不可分的情況,SVM使用軟間隔(SoftMargin)方法來處理。在軟間隔方法中,SVM允許一些數(shù)據(jù)點(diǎn)被錯(cuò)誤分類,但是會(huì)給錯(cuò)誤分類的點(diǎn)添加一個(gè)懲罰項(xiàng)。目標(biāo)函數(shù)變?yōu)槠渲?,表示第個(gè)數(shù)據(jù)點(diǎn)的誤差,是一個(gè)正則化系數(shù),用于平衡間隔的大小和誤分類點(diǎn)的數(shù)量。的值越大,表示數(shù)據(jù)點(diǎn)距離超平面越遠(yuǎn),或者被錯(cuò)誤分類的概率越大。對于非線性分類問題,SVM使用核函數(shù)(KernelFunction)來將數(shù)據(jù)映射到高維空間。常見的核函數(shù)有多項(xiàng)式核、徑向基函數(shù)核(RBF)等。3)優(yōu)化算法對于線性可分的情況,SVM可以使用簡單的梯度下降算法來求解參數(shù)。對于線性不可分的情況,SVM可以使用SMO(SequentialMinimalOptimization)算法進(jìn)行求解。SMO算法是一種高效的二次規(guī)劃算法,可以對SVM問題進(jìn)行快速求解。4.2.3
支持向量機(jī)5)算法原型class
sklearn.svm.SVC(*,
C=1.0,
kernel='rbf',
degree=3,
gamma='scale',
coef0=0.0,
shrinking=True,
probability=False,
tol=0.001,
cache_size=200,
class_weight=None,
verbose=False,
max_iter=-1,
decision_function_shape='ovr',
break_ties=False,
random_state=None)4.2.3
支持向量機(jī)4.2.4
邏輯回歸邏輯回歸是一種常用的分類算法,其基本原理是利用線性回歸模型預(yù)測一個(gè)樣本屬于某個(gè)類別的概率,然后將概率值映射到0~1,最終將概率值大于0.5的樣本分類為正類,將概率值小于0.5的樣本分類為負(fù)類。邏輯回歸模型的數(shù)學(xué)表達(dá)式為其中,為特征向量,為模型參數(shù),為邏輯函數(shù)(也稱為sigmoid函數(shù)),其數(shù)學(xué)表達(dá)式為邏輯回歸的分類方法主要有二元分類和多元分類。二元分類是指將樣本分為兩個(gè)類別,如二分類問題(正負(fù)類別),多元分類是指將樣本分為多個(gè)類別,如手寫數(shù)字識別問題。4.2.4
邏輯回歸邏輯回歸原型:class
sklearn.linear_model.LinearRegression(*,
fit_intercept=True,
copy_X=True,
n_jobs=None,
positive=False)4.2.4
邏輯回歸4.2.5
線性回歸線性回歸是一種經(jīng)典的回歸算法,其基本原理是建立一個(gè)線性回歸模型,使用最小二乘法來擬合訓(xùn)練數(shù)據(jù),并用該模型對新數(shù)據(jù)進(jìn)行預(yù)測。線性回歸模型的形式為
其中,為特征向量,為模型參數(shù),為模型的預(yù)測值。線性回歸的分類方法主要有一元線性回歸和多元線性回歸。一元線性回歸是指只有一個(gè)特征的回歸問題,多元線性回歸是指包含多個(gè)特征的回歸問題。例如,在預(yù)測房價(jià)的線性回歸問題中,房屋面積、房間數(shù)、所在位置等都是可能的特征。線性回歸的優(yōu)化算法主要有普通最小二乘法(OLS)、梯度下降法和正規(guī)方程法。4.2.5
線性回歸線性回歸是一種簡單而常用的回歸算法,其優(yōu)點(diǎn)包括模型簡單、易于解釋和可解決高維數(shù)據(jù)問題等。但是,線性回歸也存在一些問題,如易受到噪聲和異常值的干擾,不適用于非線性數(shù)據(jù)建模等。在實(shí)際應(yīng)用中,需要對數(shù)據(jù)進(jìn)行預(yù)處理和特征工程,同時(shí)需要注意解決過擬合問題。線性回歸原型class
sklearn.linear_model.LinearRegression(*,
fit_intercept=True,
normalize=False,
copy_X=True,
n_jobs=None)4.2.5
線性回歸線性回歸是一種簡單而常用的回歸算法,其優(yōu)點(diǎn)包括模型簡單、易于解釋和可解決高維數(shù)據(jù)問題等。但是,線性回歸也存在一些問題,如易受到噪聲和異常值的干擾,不適用于非線性數(shù)據(jù)建模等。在實(shí)際應(yīng)用中,需要對數(shù)據(jù)進(jìn)行預(yù)處理和特征工程,同時(shí)需要注意解決過擬合問題。線性回歸原型class
sklearn.linear_model.LinearRegression(*,
fit_intercept=True,
normalize=False,
copy_X=True,
n_jobs=None)4.2.5
線性回歸4.2.6
KNN算法KNN(KNearestNeighbors,K近鄰)是一種監(jiān)督學(xué)習(xí)算法,該算法基于最近鄰的思想,用于分類和回歸問題。其基本原理是根據(jù)訓(xùn)練數(shù)據(jù)集中每個(gè)樣本的特征向量和標(biāo)簽,對于新的測試樣本,找到與其最相似的K個(gè)訓(xùn)練樣本,并根據(jù)這K個(gè)樣本的標(biāo)簽進(jìn)行分類或預(yù)測。KNN算法中的“K”代表選取最近鄰的數(shù)量,因此KNN是一種基于實(shí)例的學(xué)習(xí)(Instance-BasedLearning)算法。KNN算法主要包括兩個(gè)步驟:訓(xùn)練和預(yù)測。在訓(xùn)練階段,算法會(huì)將訓(xùn)練數(shù)據(jù)集中的每個(gè)樣本的特征向量和標(biāo)簽記錄下來。在預(yù)測階段,算法會(huì)計(jì)算每個(gè)新的測試樣本與訓(xùn)練樣本的距離,并選擇K個(gè)距離最近的訓(xùn)練樣本。然后根據(jù)這K個(gè)訓(xùn)練樣本的標(biāo)簽,利用多數(shù)表決法(MajorityVote)來預(yù)測測試樣本的標(biāo)簽,即將K個(gè)樣本中出現(xiàn)次數(shù)最多的標(biāo)簽作為預(yù)測結(jié)果。KNN算法的優(yōu)化算法主要包括KD樹和Ball樹。4.2.6
KNN算法KNN原型:class
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,
*,
weights='uniform',
algorithm='auto',
leaf_size=30,
p=2,
metric='minkowski',
metric_params=None,
n_jobs=None,
**kwargs)4.2.6
KNN算法任務(wù)3無監(jiān)督學(xué)習(xí)編程03【任務(wù)描述】掌握K-Means、主成分分析(PCA)等無監(jiān)督學(xué)習(xí)算法的核心思想;能夠使用sklearn庫編寫相關(guān)程序,解決實(shí)際問題。任務(wù)3無監(jiān)督學(xué)習(xí)編程03【關(guān)鍵步驟】(1)掌握K-Means、主成分分析等無監(jiān)督學(xué)習(xí)算法的核心思想。(2)使用sklearn庫中的K-Means、主成分分析等無監(jiān)督學(xué)習(xí)算法編寫相關(guān)程序,解決實(shí)際問題。4.3.1
K-Means算法K-Means算法是一種無監(jiān)督學(xué)習(xí)的聚類算法,用于將一組未標(biāo)記的數(shù)據(jù)集分成不同的群體。其基本思想是將數(shù)據(jù)集中的數(shù)據(jù)點(diǎn)分成K個(gè)不同的群體,使得每個(gè)群體內(nèi)部的數(shù)據(jù)點(diǎn)之間的距離盡可能小,而使不同群體之間的距離盡可能大。下面對K-Means算法的基本原理、分類方法、優(yōu)化算法和算法模型進(jìn)行詳細(xì)介紹。1)基本原理K-Means算法的基本原理如下。(1)隨機(jī)選取K個(gè)數(shù)據(jù)點(diǎn)作為初始聚類中心。(2)對于每個(gè)數(shù)據(jù)點(diǎn),計(jì)算它與K個(gè)聚類中心的距離,將它分配給距離最近的聚類中心所在的群體。(3)重新計(jì)算每個(gè)群體的聚類中心。(4)重復(fù)步驟(2)和(3),直到聚類中心不再改變,或者達(dá)到預(yù)設(shè)的迭代次數(shù)為止。4.3.1
K-Means算法K-Means算法是一種無監(jiān)督學(xué)習(xí)的聚類算法,用于將一組未標(biāo)記的數(shù)據(jù)集分成不同的群體。其基本思想是將數(shù)據(jù)集中的數(shù)據(jù)點(diǎn)分成K個(gè)不同的群體,使得每個(gè)群體內(nèi)部的數(shù)據(jù)點(diǎn)之間的距離盡可能小,而使不同群體之間的距離盡可能大。下面對K-Means算法的基本原理、分類方法、優(yōu)化算法和算法模型進(jìn)行詳細(xì)介紹。1)基本原理K-Means算法的基本原理如下。(1)隨機(jī)選取K個(gè)數(shù)據(jù)點(diǎn)作為初始聚類中心。(2)對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廠房建設(shè)施工項(xiàng)目進(jìn)度管理合同4篇
- 2025年度個(gè)人向公司借款合同范本及利息減免條款2篇
- 個(gè)性化房產(chǎn)代持服務(wù)合同(2024修訂版)版
- 2025版文化創(chuàng)意產(chǎn)業(yè)園區(qū)內(nèi)外裝修設(shè)計(jì)與施工合同2篇
- 2025年度農(nóng)產(chǎn)品品牌授權(quán)與推廣合同范本3篇
- 2025年度牛肝菌種植與收購一體化服務(wù)合同3篇
- 2025年度自動(dòng)化生產(chǎn)線租賃合同范本11篇
- 2025版趙敏與陳鵬離婚雙方共同財(cái)產(chǎn)清算及分配協(xié)議4篇
- 可持續(xù)消費(fèi)模式研究-第1篇-深度研究
- 2025年度門窗企業(yè)品牌形象設(shè)計(jì)與推廣協(xié)議4篇
- 成長小說智慧樹知到期末考試答案2024年
- 紅色革命故事《王二小的故事》
- 海洋工程用高性能建筑鋼材的研發(fā)
- 蘇教版2022-2023學(xué)年三年級數(shù)學(xué)下冊開學(xué)摸底考試卷(五)含答案與解析
- 英語48個(gè)國際音標(biāo)課件(單詞帶聲、附有聲國際音標(biāo)圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫安全管理制度
- 2023同等學(xué)力申碩統(tǒng)考英語考試真題
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 在雙減政策下小學(xué)音樂社團(tuán)活動(dòng)有效開展及策略 論文
- envi二次開發(fā)素材包-idl培訓(xùn)
評論
0/150
提交評論