大數(shù)據(jù)應(yīng)用導(dǎo)論 Chapter04 | 大數(shù)據(jù)分析(大數(shù)據(jù)應(yīng)用導(dǎo)論論文)

      網(wǎng)友投稿 759 2022-05-30

      大家好,我是不溫卜火,是一名計(jì)算機(jī)學(xué)院大數(shù)據(jù)專業(yè)大二的學(xué)生,昵稱來源于成語—不溫不火,本意是希望自己性情溫和。作為一名互聯(lián)網(wǎng)行業(yè)的小白,博主寫博客一方面是為了記錄自己的學(xué)習(xí)過程,另一方面是總結(jié)自己所犯的錯(cuò)誤希望能夠幫助到很多和自己一樣處于起步階段的萌新。但由于水平有限,博客中難免會(huì)有一些錯(cuò)誤出現(xiàn),有紕漏之處懇請(qǐng)各位大佬不吝賜教!暫時(shí)只有csdn這一個(gè)平臺(tái),博客主頁:https://buwenbuhuo.blog.csdn.net/

      Chapter04 | 大數(shù)據(jù)分析

      一、數(shù)據(jù)分析介紹

      1、機(jī)器學(xué)習(xí)發(fā)展歷程

      2、機(jī)器學(xué)習(xí)的分類

      2.1、有監(jiān)督學(xué)習(xí)(supervised learning)

      2.2、無監(jiān)督學(xué)習(xí)(unsupervised learning)

      大數(shù)據(jù)應(yīng)用導(dǎo)論 Chapter04 | 大數(shù)據(jù)分析(大數(shù)據(jù)應(yīng)用導(dǎo)論論文)

      2.3、強(qiáng)化學(xué)習(xí)(reinforcement learning)

      3、機(jī)器學(xué)習(xí)的基本概念和流程

      3.1、機(jī)器學(xué)習(xí)的基本概念

      1、明確目標(biāo)

      1、什么是分類

      2、什么是回歸

      3、什么是聚類

      3.2、機(jī)器學(xué)習(xí)的基本流程

      1、訓(xùn)練集和測(cè)試集

      2、訓(xùn)練模型和測(cè)試模型

      1、訓(xùn)練模型

      2、測(cè)試模型

      3、模型性能評(píng)估

      二、機(jī)器學(xué)習(xí)算法模型與算法

      1、線性回歸

      1.1、公式及圖解

      1.2、線性回歸的特點(diǎn):

      2、邏輯回歸

      2.1、邏輯回歸公式

      2.2、邏輯回歸的特點(diǎn)

      3、K近鄰(KNN)

      3.1、K近鄰算法流程

      3.2、K近鄰(KNN)的特點(diǎn)

      4、決策樹

      4.1、決策樹的基本結(jié)構(gòu)

      4.2、決策樹的生成

      4.3、決策樹的特點(diǎn)

      5、K-means聚類

      5.1、K-means算法步驟

      5.2、K-means算法的優(yōu)缺點(diǎn)

      6、PCA降維

      6.1、PCA的基本思想

      6.2、步驟

      6.3、特點(diǎn)

      三、數(shù)據(jù)分析的工具與介紹

      1、數(shù)據(jù)分析常用工具

      2、常用到的Python模塊

      3、Sklearn庫

      3.1、Sklearn庫簡(jiǎn)介

      3.2、常用模塊

      4、Mahout

      5、基于Spark的Mllib模塊

      5.1、Spark簡(jiǎn)介

      5.2、Mllib

      四、使用K近鄰構(gòu)造糖尿病診斷模型(案例)

      1、前提準(zhǔn)備

      2、分析過程

      2.1、數(shù)據(jù)導(dǎo)入

      2.2、數(shù)據(jù)劃分

      3、完整代碼

      一、數(shù)據(jù)分析介紹

      什么是數(shù)據(jù)分析?

      數(shù)據(jù)分析就是利用機(jī)器學(xué)習(xí)等算法分析數(shù)據(jù)、挖掘數(shù)據(jù)信息的一個(gè)過程。

      機(jī)器學(xué)習(xí)是大數(shù)據(jù)分析的核心方法

      機(jī)器學(xué)習(xí)就是讓計(jì)算機(jī)從大量的數(shù)據(jù)中學(xué)習(xí)相關(guān)的規(guī)律,然后利用學(xué)習(xí)來的規(guī)律對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè)的方法。

      1、機(jī)器學(xué)習(xí)發(fā)展歷程

      2、機(jī)器學(xué)習(xí)的分類

      2.1、有監(jiān)督學(xué)習(xí)(supervised learning)

      數(shù)據(jù)集中的樣本帶有標(biāo)簽,有明確目標(biāo)

      實(shí)例:信用風(fēng)險(xiǎn)評(píng)估

      根據(jù)用戶的歷史還款記錄和信用賬戶賬齡等信息,預(yù)測(cè)用戶未來是否違約。

      2.2、無監(jiān)督學(xué)習(xí)(unsupervised learning)

      數(shù)據(jù)集中的樣本沒有標(biāo)簽,沒有明確目標(biāo)

      實(shí)例:電信用戶聚類

      根據(jù)用戶的通信行為數(shù)據(jù)集,將電信用戶劃分為不同的群體

      2.3、強(qiáng)化學(xué)習(xí)(reinforcement learning)

      智慧決策的過程,通過過程模擬和觀察來不斷學(xué)習(xí)、提高決策能力

      實(shí)例:AlphaGo

      3、機(jī)器學(xué)習(xí)的基本概念和流程

      3.1、機(jī)器學(xué)習(xí)的基本概念

      將實(shí)際問題轉(zhuǎn)換為數(shù)學(xué)問題

      明確需要的數(shù)據(jù)的形式

      明確機(jī)器學(xué)習(xí)的目標(biāo)分類、回歸還是聚類,還是其他

      分類就是根據(jù)樣樣本數(shù)據(jù)的特征或?qū)傩裕瑢⑵浞值侥骋灰延械念悇e中

      eg:在電子郵箱服務(wù)中,將郵箱劃分為正常郵件或垃圾郵件,這時(shí)比較典型的一個(gè)分類問題。

      在日常生活中,我們會(huì)碰到目標(biāo)特征為連續(xù)型的預(yù)測(cè)問題,例如收入預(yù)測(cè)、銷量預(yù)測(cè)和商品預(yù)測(cè)等,這種問題稱為回歸問題。

      eg:根據(jù)鉆石的切割、成色、凈度、卡拉重量和價(jià)格等特征,對(duì)鉆石的價(jià)格進(jìn)行預(yù)測(cè)。

      聚類就是將數(shù)據(jù)集中類似的樣本進(jìn)行分組的過程,每一個(gè)稱為一個(gè)“簇”

      eg:根據(jù)全球各地觀測(cè)到的氣候特征,將全球劃分為不同的氣候區(qū)域

      3.2、機(jī)器學(xué)習(xí)的基本流程

      下圖為信貸模型完整流程示意:

      信貸模型

      目標(biāo):根據(jù)借貸人的基本信息如收入、教育程度、婚姻狀態(tài)等,預(yù)測(cè)借貸人未來是否違約

      研究的問題“是否違約”稱為目標(biāo)變量

      研究的問題是一個(gè)分類問題

      特征:

      在信貸模型中,我們收集到的數(shù)據(jù)集中的變量有:性別、收入、教育程度、婚姻狀態(tài)等,我們把這些變量稱為特征。

      特征不僅僅包括這些可以直接獲得的變量,還包括利用原始信息構(gòu)成的新的變量。

      特征的數(shù)據(jù)類型:

      在銀行貸款案例中,我們將獲取到的數(shù)據(jù)集分為兩部分,一部分用來學(xué)習(xí)分類、訓(xùn)練模型,稱之為訓(xùn)練集;另一部分用來預(yù)測(cè),即測(cè)試訓(xùn)練好的模型的預(yù)測(cè)能力,稱之為測(cè)試機(jī)

      一般按照一定的比例隨機(jī)的將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試機(jī)

      用訓(xùn)練集來訓(xùn)練模型,其中每個(gè)訓(xùn)練樣本由特征和目標(biāo)變量組成

      銀行借貸案例中,每個(gè)訓(xùn)練樣本有四種特征(性別、收入、教育程度、婚姻狀態(tài)),一個(gè)目標(biāo)變量(是否違約)

      當(dāng)完成模型訓(xùn)練后,利用測(cè)試集對(duì)模型進(jìn)行測(cè)試,檢驗(yàn)?zāi)P偷暮脡?/p>

      將測(cè)試集輸入訓(xùn)練好的模型,輸出預(yù)測(cè)值

      通過性能指標(biāo),比較預(yù)測(cè)的目標(biāo)變量值和實(shí)際目標(biāo)變量值之間的差別,評(píng)價(jià)模型的好壞

      在回歸問題上,通常用均方誤差(MSE)來評(píng)價(jià)模型的好壞

      在分類問題上,常用正確率和錯(cuò)誤率來評(píng)價(jià)模型的好壞

      混淆矩陣(confusion matrix)可以直觀查看分類問題中預(yù)測(cè)分類與真實(shí)分類的情況

      ①正確率(Accuracy):正確分類(預(yù)測(cè)類別與實(shí)際類別相等)

      樣本數(shù)占樣本總數(shù)的比例:

      一般情況下,正確率越大,表示模型預(yù)測(cè)效果越好

      ② 錯(cuò)誤率:錯(cuò)誤分類(預(yù)測(cè)類別與實(shí)際類別不相等)樣本數(shù)占樣本總數(shù)的比例:

      一般來說,錯(cuò)誤率越小,表示模型越策效果越好

      ③召回率(recall)和精度(precision):

      ④ROC曲線基本概念:

      ⑤AUC值:

      二、機(jī)器學(xué)習(xí)算法模型與算法

      不同的模型能達(dá)到不同的效果,如果選擇錯(cuò)模型,就會(huì)無用功。

      1、線性回歸

      基本思想:

      就是尋找一條直線,使得所有樣本盡可能地落在它的附近,即目標(biāo)變量y和特征x之間的關(guān)系近似遵循一條直線

      1.1、公式及圖解

      一元線性回歸模型為:

      1.2、線性回歸的特點(diǎn):

      形式簡(jiǎn)單,易于建模

      具有很好的可解釋性

      2、邏輯回歸

      邏輯回歸之所以稱為“回歸”,是因?yàn)樗捎昧嘶貧w分析的思想。然而,它是用來解決分類問題的模型,通常解決的是二分類問題

      邏輯回歸是應(yīng)用最為廣泛的模型之一

      ①金融領(lǐng)域的風(fēng)險(xiǎn)評(píng)估

      ②互聯(lián)網(wǎng)廣澳點(diǎn)擊預(yù)測(cè)

      從線性回歸到邏輯回歸

      在線性回歸中,預(yù)測(cè)目標(biāo)y是連續(xù)型,模型如下

      假如要解決的是二分類問題,也就是預(yù)測(cè)目標(biāo)y為離散型

      這時(shí)線性回歸無法解決該問題

      1

      為了能夠利用回歸的方法來解決二分類問題,需要對(duì)線性回歸的輸出作改變

      1

      改變方式—引入Logistic函數(shù)

      2.1、邏輯回歸公式

      2.2、邏輯回歸的特點(diǎn)

      速度快,適合二分類問題

      簡(jiǎn)單易于理解,可以直接看到各個(gè)特征的權(quán)重

      3、K近鄰(KNN)

      K近鄰并沒有學(xué)習(xí)的過程,而是在預(yù)測(cè)的時(shí)候根據(jù)數(shù)據(jù)的狀況直接進(jìn)行預(yù)測(cè)

      3.1、K近鄰算法流程

      確定K的大小和相似度的計(jì)算方法

      從訓(xùn)練樣本中挑選k個(gè)與測(cè)試樣本最相似的樣本

      根據(jù)k個(gè)訓(xùn)練樣本的類別,通過投票的方式來確定測(cè)試樣本的類別

      3.2、K近鄰(KNN)的特點(diǎn)

      優(yōu)點(diǎn):

      簡(jiǎn)單實(shí)用,易于實(shí)現(xiàn)

      對(duì)異常數(shù)據(jù)不敏感

      缺點(diǎn):

      計(jì)算效率不高

      4、決策樹

      生活中有很多場(chǎng)景需要我們通過一系列問題的診斷結(jié)果來進(jìn)行決策。

      4.1、決策樹的基本結(jié)構(gòu)

      一個(gè)根節(jié)點(diǎn)(沒有箭頭指向它):圖中的“收入”就是一個(gè)根節(jié)點(diǎn)

      內(nèi)部節(jié)點(diǎn)(既有箭頭指向它,它又有箭頭指出):圖中的“教育程度”就是一個(gè)內(nèi)部節(jié)點(diǎn)

      葉子節(jié)點(diǎn)(只有箭頭指向它,它沒有箭頭指出):表示一個(gè)類,圖中粉色和綠色方塊就是兩個(gè)葉子節(jié)點(diǎn)

      4.2、決策樹的生成

      決策樹模型就是基于特征,自動(dòng)生成一顆具有分類能力的樹的過程

      從根節(jié)點(diǎn)開始,進(jìn)行特征的選擇(如年齡)

      然后選擇該節(jié)點(diǎn)特征的分裂點(diǎn),根據(jù)分裂點(diǎn)分裂節(jié)點(diǎn)(如50)

      然后選擇新的特征作為分支節(jié)點(diǎn),繼續(xù)分裂,直至達(dá)到一定條件停止分裂,形成一顆決策樹

      4.3、決策樹的特點(diǎn)

      原理簡(jiǎn)單、易于理解

      具有較強(qiáng)的解釋性

      對(duì)缺失值也有很好的處理方式

      5、K-means聚類

      聚類:“物以類聚,人以群分”

      K-means聚類原理:

      將n個(gè)樣本劃分到K個(gè)簇中,其中每個(gè)樣本歸屬于距離自己最近的簇

      聚類效果:使簇內(nèi)具有較高的相似度,而簇間的相似度較低

      5.1、K-means算法步驟

      1、隨機(jī)選取K個(gè)樣本作為初始中心

      2、重復(fù)迭代如下步驟直至收斂:

      ①把每個(gè)樣本指派到最近的中心,形成K個(gè)簇 ②重新計(jì)算每個(gè)簇的中心 ③直到中心不在發(fā)生變化

      1

      2

      3

      5.2、K-means算法的優(yōu)缺點(diǎn)

      優(yōu)點(diǎn):

      算法實(shí)現(xiàn)簡(jiǎn)單、直觀

      支持多種距離計(jì)算

      缺點(diǎn):

      聚類結(jié)果依賴于初始于K個(gè)中心的選擇

      需要指定K值和初始化K個(gè)簇

      不易處理非簇狀數(shù)據(jù),且易受離群值的影響

      6、PCA降維

      高緯數(shù)據(jù)給數(shù)據(jù)分析帶來的一個(gè)嚴(yán)重的挑戰(zhàn)是維度災(zāi)難問題,即模型的復(fù)雜度和計(jì)算量隨著維數(shù)的增加而呈指數(shù)增長(zhǎng)

      降維試解決維度災(zāi)難的一種手段

      假如我們現(xiàn)在要借助用戶手機(jī)的通信數(shù)據(jù)對(duì)用戶價(jià)值進(jìn)行分析,原始通信數(shù)據(jù)包括:入網(wǎng)時(shí)間、套餐價(jià)格、每月話費(fèi)、每月流量、每月通話時(shí)長(zhǎng)、欠費(fèi)金額、欠費(fèi)月數(shù)等7個(gè)特征,但它的“內(nèi)在維度”可能只有3個(gè):用戶忠誠度、消費(fèi)能力、欠費(fèi)指數(shù),這3個(gè)維度能夠更加直觀地對(duì)用戶價(jià)值進(jìn)行刻畫

      即將原始7維數(shù)據(jù)降為3維

      6.1、PCA的基本思想

      主成分分析(PCA)是一種有效的降維方法

      構(gòu)成原始特征的一系列線性組合形成低維的特征,以去除相關(guān)數(shù)據(jù)的相關(guān)性,并使降維后的數(shù)據(jù)最大程度地保持原始高維數(shù)據(jù)地信息

      即把多個(gè)特征轉(zhuǎn)換為少數(shù)幾個(gè)互不相關(guān)地總和特征,且盡可能地保留原始數(shù)據(jù)地信息,這些互不相關(guān)地綜合特征稱為主成分

      6.2、步驟

      6.3、特點(diǎn)

      優(yōu)點(diǎn):

      計(jì)算效率高

      便于理解低維數(shù)據(jù)

      缺點(diǎn):

      構(gòu)建的主成分特征沒有明確的含義

      三、數(shù)據(jù)分析的工具與介紹

      1、數(shù)據(jù)分析常用工具

      基于Python的Scikit-learn庫

      基于Hadoop的Mahout

      基于Spark的Mllib模塊

      2、常用到的Python模塊

      Numpy庫:科學(xué)計(jì)算基礎(chǔ)庫

      Pandas庫:數(shù)據(jù)處理和分析工具庫

      Scipy庫:算法和數(shù)學(xué)工具庫

      Matplotlib:繪制數(shù)據(jù)圖表的庫

      Scikit-learn(簡(jiǎn)稱Sklearn)庫:機(jī)器學(xué)習(xí)庫

      3、Sklearn庫

      3.1、Sklearn庫簡(jiǎn)介

      Sklearn是Python著名的機(jī)器學(xué)習(xí)庫

      封裝了眾多機(jī)器學(xué)習(xí)算法,內(nèi)置了許多公開數(shù)據(jù)集,且擁有完整的文檔

      實(shí)現(xiàn)了數(shù)據(jù)預(yù)處理、分類、回歸、降維、特征選擇、特征抽取和模型評(píng)價(jià)等機(jī)器學(xué)習(xí)功能

      Sklearn官網(wǎng):http://scikit-learn.org/stable/index.html#

      3.2、常用模塊

      分類:Classification

      包括邏輯回歸、K近鄰、決策樹等

      回歸:Regression

      線性回歸

      聚類:Clustering

      K-means

      降維:Dimensionality reduction

      主成分分析(PCA)

      模型選擇:Model selection

      預(yù)處理:Preprocessing

      4、Mahout

      Apache Mahout是Apache Software Foundation(AFS)旗下的一個(gè)開源項(xiàng)目,提供了一些經(jīng)典的機(jī)器學(xué)習(xí)的算法

      Mahout安裝官網(wǎng):http://archive.apache.org/dist/mahout/

      基于Hadoop的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的分布式框架,通過MapReduce模式實(shí)現(xiàn)

      封裝了大量數(shù)據(jù)挖掘經(jīng)典算法,包括聚類、分類等

      5、基于Spark的Mllib模塊

      5.1、Spark簡(jiǎn)介

      Spark是專用大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。具有運(yùn)行速度快。容易使用、通用性強(qiáng)、運(yùn)行模式多樣的特點(diǎn)

      Spark安裝官網(wǎng):http://spark.apache.org/downloads.html

      Spark 分布式數(shù)據(jù)分析

      允許用戶將數(shù)據(jù)加載至集群內(nèi)存,并多次對(duì)其進(jìn)行查詢,非常適合用于機(jī)器學(xué)習(xí)算法。

      Spark的一個(gè)最大特點(diǎn)就是它的分布式計(jì)算,即它可以將一個(gè)大任務(wù)分解成很多小人物,交給很多臺(tái)機(jī)器去分別完成,最后匯總,這就是“人多力量大”的道理。

      除了數(shù)據(jù)處理性能上的優(yōu)化,Spark還提供了多種特殊環(huán)境下的數(shù)據(jù)分析工具

      5.2、Mllib

      Mllib是構(gòu)建在Apache Spark之上,一個(gè)專門針對(duì)大數(shù)據(jù)處理通用的、快速的引擎

      Mllib是Spark的可以拓展的機(jī)器學(xué)習(xí)庫

      由以下部分組成:

      通用的學(xué)習(xí)算法和工具,包括分類、回歸、聚類、協(xié)同過濾、降維、以及調(diào)優(yōu)等。

      Mllib提供的工具:

      機(jī)器學(xué)習(xí)算法:常用的學(xué)習(xí)算法,如分類、回歸、聚類

      特征:特征提取、選擇及降維

      存儲(chǔ):保存和加載算法、模型

      實(shí)用工具:線性代數(shù),統(tǒng)計(jì),數(shù)據(jù)處理等

      四、使用K近鄰構(gòu)造糖尿病診斷模型(案例)

      1、前提準(zhǔn)備

      此案例的目標(biāo):

      根據(jù)歷史數(shù)據(jù)信息,建立糖尿病自動(dòng)診斷模型,預(yù)測(cè)被診斷者是否患有糖尿病

      分類問題

      使用K鄰近算法進(jìn)行分類

      糖尿病的背景介紹:

      主要特征:高血糖

      檢測(cè)糖尿病大多需要檢查血糖、體重、胰島素水平等

      數(shù)據(jù)集特征說明:

      2、分析過程

      2.1、數(shù)據(jù)導(dǎo)入

      載入pandas庫,利用read_csv函數(shù)讀取數(shù)據(jù)

      import pandas as pd diabetes = pd.read_csv("./input/india_diabetes.csv")

      1

      2

      數(shù)據(jù)查看

      # 數(shù)據(jù)查看 display(diabetes.head(10))

      1

      2

      導(dǎo)入后的數(shù)據(jù)表格一共9列

      Pandas中describe()函數(shù)可查看數(shù)據(jù)集中變量的描述性信息

      2.2、數(shù)據(jù)劃分

      在數(shù)據(jù)集劃分之前,將特征和目標(biāo)變量分離

      其中X為特征,Y為目標(biāo)變量

      X=diabetes.iloc[:,:8] Y=diabetes.iloc[:,8:9]

      1

      2

      特征變量中,懷孕次數(shù)(Pregnancies)為離散型特征,其它為連續(xù)型特征

      另一種切分方法:載入sklearn.model_selection,利用train_test_split()函數(shù)將數(shù)據(jù)集按照一定的比例隨機(jī)劃分為訓(xùn)練集和測(cè)試機(jī)

      # 將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集 # 通過控制random_state # 可以保證每次切分的時(shí)候,得到的結(jié)果是一樣的 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X,Y,test_size=0.2,random_state=10,stratify=diabetes['Outcome'])

      1

      2

      3

      4

      5

      代碼解釋:

      將數(shù)據(jù)集按8:2比例劃分成訓(xùn)練集(train)和測(cè)試集(test)

      test_size為測(cè)試集比例(0.2表示測(cè)試集占總樣本的比例)

      參數(shù)stratify保持測(cè)試集和訓(xùn)練集中Outcome(目標(biāo)變量)類別比例不變

      用訓(xùn)練集訓(xùn)練模型

      從sklearn.neighbors中載入k近鄰算法KNeighborsClassifier

      from sklearn.neighbors import KNeighborsClassifier # 生成模型 knn = KNeighborsClassifier(n_neighbors=5) # 訓(xùn)練模型 knn.fit(X_train,y_train)

      1

      2

      3

      4

      5

      利用測(cè)試集測(cè)試模型:

      # 測(cè)試模型 y_predict = knn.predict(X_test) # 測(cè)試集上的預(yù)測(cè)結(jié)果 y_predict

      1

      2

      3

      4

      其中"1"表示"是",“0"表示"否”

      模型性能評(píng)估

      sklearn中有可直接得出正確率的函數(shù):accuracy_score()

      # 查看模型的正確率 from sklearn.metrics import accuracy_score accuracy_score(y_test,y_predict) # 74.5%的數(shù)據(jù)預(yù)測(cè)是正確的

      1

      2

      3

      4

      得到的結(jié)果是:0.745

      我們也可以通過混淆矩陣計(jì)算正確率

      性能提成

      再上述K近鄰模型中,K=5,我們知道,對(duì)于不同的K值,將會(huì)得到不同的模型,所以嘗試取不同的K值,得到最優(yōu)模型。

      klist = [3,5,7,9] knn_grid = KNeighborsClassifier(n_neighbors=5) # 搜索參數(shù) knn_grid = GridSearchCV(knn_grid,dict(n_neighbors = klist), cv=10) # GridSearchCV # 訓(xùn)練 knn_grid.fit(X_train,y_train) # 獲取最佳 y_predict_grid = knn_grid.best_estimator_.predict(X_test)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      利用Python自動(dòng)選取最優(yōu)K值

      #最優(yōu)K值 knn_grid.best_params_ {'n_neighbors': 3}

      1

      2

      3

      用選取的最優(yōu)K值進(jìn)行預(yù)測(cè)

      #利用最優(yōu)k值進(jìn)行預(yù)測(cè) y_predict_grid = knn_grid.best_estimator_.predict(X_test) accuracy_score(y_test,y_predict_grid) # 77.5%

      1

      2

      3

      4

      結(jié)果為:0.775

      以上就是一個(gè)完整的機(jī)器學(xué)習(xí)流程。

      3、完整代碼

      # warning import warnings warnings.filterwarnings('ignore') # 數(shù)據(jù)展示方法 from IPython.display import display # 載入pandas import pandas as pd # matplotlib %matplotlib inline # 載入數(shù)據(jù) diabetes = pd.read_csv("./input/india_diabetes.csv") # 數(shù)據(jù)查看 display(diabetes.head(10)) # 查看數(shù)據(jù)維度 diabetes.shape # 統(tǒng)計(jì)各列鍵非空數(shù)據(jù)數(shù)量、數(shù)據(jù)類型 diabetes.info() # 描述性統(tǒng)計(jì) diabetes.describe() # 查看目標(biāo)特征各個(gè)類別的數(shù)量 diabetes['Outcome'].value_counts() 數(shù)據(jù)集劃分 # 將目標(biāo)變量和特征分離 # 特征和label的分離 X=diabetes.iloc[:,:8] Y=diabetes.iloc[:,8:9] # 將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集 # 通過控制random_state # 可以保證每次切分的時(shí)候,得到的結(jié)果是一樣的 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X,Y,test_size=0.2,random_state=10,stratify=diabetes['Outcome']) X_train.head() # 查看訓(xùn)練集中目標(biāo)變量類別比例 y_train['Outcome'].value_counts() # 查看測(cè)試集中目標(biāo)變量類別比例 y_test['Outcome'].value_counts() 學(xué)習(xí)算法——knn # 訓(xùn)練模型 # 載入模型 from sklearn.neighbors import KNeighborsClassifier # 生成模型 knn = KNeighborsClassifier(n_neighbors=5) # 訓(xùn)練模型 knn.fit(X_train,y_train) # 測(cè)試模型 y_predict = knn.predict(X_test) # 測(cè)試集上的預(yù)測(cè)結(jié)果 y_predict # 查看模型的正確率 from sklearn.metrics import accuracy_score accuracy_score(y_test,y_predict) # 74.5%的數(shù)據(jù)預(yù)測(cè)是正確的 另一種辦法: from sklearn import metrics import seaborn as sns colorMetrics = metrics.confusion_matrix(y_test,y_predict) sns.heatmap(colorMetrics,annot=True,fmt='d') 選取最優(yōu)K值 from sklearn.model_selection import GridSearchCV klist = [3,5,7,9] knn_grid = KNeighborsClassifier(n_neighbors=5) # 搜索參數(shù) knn_grid = GridSearchCV(knn_grid,dict(n_neighbors = klist), cv=10) # GridSearchCV # 訓(xùn)練 knn_grid.fit(X_train,y_train) # 獲取最佳 y_predict_grid = knn_grid.best_estimator_.predict(X_test) #最優(yōu)K值 knn_grid.best_params_ #利用最優(yōu)k值進(jìn)行預(yù)測(cè) y_predict_grid = knn_grid.best_estimator_.predict(X_test) accuracy_score(y_test,y_predict_grid) # 77.5%

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      105

      106

      107

      108

      109

      110

      111

      本次的分享就到這里了,

      好書不厭讀百回,熟讀課思子自知。而我想要成為全場(chǎng)最靚的仔,就必須堅(jiān)持通過學(xué)習(xí)來獲取更多知識(shí),用知識(shí)改變命運(yùn),用博客見證成長(zhǎng),用行動(dòng)證明我在努力。

      如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng)“” “評(píng)論”“”一鍵三連哦!聽說的人運(yùn)氣不會(huì)太差,每一天都會(huì)元?dú)鉂M滿呦!如果實(shí)在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。

      碼字不易,大家的支持就是我堅(jiān)持下去的動(dòng)力。后不要忘了關(guān)注我哦!

      大數(shù)據(jù) 數(shù)據(jù)挖掘 機(jī)器學(xué)習(xí)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:*轉(zhuǎn)載*耶魯大學(xué)校長(zhǎng)給計(jì)算機(jī)學(xué)生的建議(耶魯大學(xué) 計(jì)算機(jī))
      下一篇:excel兩個(gè)表格數(shù)據(jù)的關(guān)聯(lián)方法步驟(兩個(gè)excel表格數(shù)據(jù)如何關(guān)聯(lián))
      相關(guān)文章
      国产国拍精品亚洲AV片 | 亚洲精品国产美女久久久| 亚洲AV色吊丝无码| 久久久久亚洲AV无码专区首JN| 亚洲国产第一站精品蜜芽| 在线亚洲97se亚洲综合在线| 国产综合激情在线亚洲第一页| 亚洲国产精品精华液| 亚洲熟妇无码av另类vr影视| 亚洲人和日本人jizz| 亚洲一区二区三区高清视频| 亚洲av极品无码专区在线观看| 亚洲欧洲自拍拍偷综合| 久久久久亚洲AV无码永不| 亚洲天堂视频在线观看| 亚洲精品在线免费观看视频| 亚洲综合色一区二区三区小说| 亚洲精品不卡视频| 亚洲一级在线观看| 在线精品亚洲一区二区| 亚洲国产精品精华液| 亚洲高清最新av网站| 亚洲乱码中文字幕手机在线| 国产精品亚洲αv天堂无码| 77777亚洲午夜久久多人| 国产精品亚洲一区二区三区在线 | 亚洲另类激情专区小说图片| 日韩一卡2卡3卡4卡新区亚洲| 亚洲人午夜射精精品日韩| 久久久久久亚洲精品不卡| 亚洲人成色77777| 亚洲精品天天影视综合网| 亚洲欧洲日产v特级毛片| 久久久久se色偷偷亚洲精品av| 亚洲成A人片在线播放器| 亚洲av无码有乱码在线观看| 亚洲?v无码国产在丝袜线观看| 精品国产香蕉伊思人在线在线亚洲一区二区| 在线观看亚洲精品国产| 亚洲电影国产一区| 亚洲丰满熟女一区二区v|