偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

前端也要懂機(jī)器學(xué)習(xí)之二

人工智能 機(jī)器學(xué)習(xí)
如果一個(gè)樣本在特征空間中的k個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別。(通常k是不大于20的整數(shù))。

[[376486]]

 上一篇文章講述了機(jī)器學(xué)習(xí)的基本知識(shí)點(diǎn),這一篇就開(kāi)啟一些算法的摸索之路。既然我們是前端研發(fā)工程師,那就選擇ml.js這個(gè)庫(kù)進(jìn)行編碼。本次涉及到的算法包含:KNN、決策樹(shù)、隨機(jī)森林、樸素貝葉斯、支持向量機(jī)、線性回歸、K-均值聚類算法,這七個(gè)算法橫跨監(jiān)督學(xué)習(xí)算法(分類算法、回歸算法)、非監(jiān)督學(xué)習(xí)算法,可以作為前端入門機(jī)器學(xué)習(xí)的必修課程,也可作為既將到來(lái)的端智能時(shí)代的必讀刊物。

一、監(jiān)督學(xué)習(xí)算法

1.1 分類算法

1.1.1 K-近鄰分類算法(KNN)

一、定義

如果一個(gè)樣本在特征空間中的k個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別。(通常k是不大于20的整數(shù))

二、優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

  • 簡(jiǎn)單有效
  • 精度高
  • 對(duì)異常值不敏感
  • 無(wú)須訓(xùn)練

2.缺點(diǎn)

  • 計(jì)算復(fù)雜度高、空間復(fù)雜度高(計(jì)算量大,內(nèi)存開(kāi)銷大)
  • 必須指定K值,K值選擇不當(dāng)則分類精度不能保證。(K值取很小,容易受到異常點(diǎn)的影響,容易出現(xiàn)過(guò)擬合;K值取很大,受到樣本均衡問(wèn)題)

三、計(jì)算距離

對(duì)于KNN算法,最核心的內(nèi)容是計(jì)算距離,兩個(gè)樣本之間的距離可以通過(guò)歐氏距離計(jì)算。其計(jì)算公式為:

四、應(yīng)用場(chǎng)景

小數(shù)據(jù)場(chǎng)景(幾千~幾萬(wàn)樣本),可用于字符識(shí)別、文本分類、圖像識(shí)別等領(lǐng)域

五、代碼

  1. const KNN = require('ml-knn'); 
  2.  
  3. // 訓(xùn)練集特征 
  4. const dataset = [ 
  5.     [1.0, 1.1], 
  6.     [1.0, 1.0], 
  7.     [0, 0], 
  8.     [0, 0.1] 
  9. ]; 
  10.  
  11. // 訓(xùn)練集目標(biāo) 
  12. const labels = ['A''A''B''B']; 
  13.  
  14. // 實(shí)例化KNN算法(進(jìn)行訓(xùn)練) 
  15. const knn = new KNN(dataset, labels, { k: 3}); 
  16.  
  17. // 需要進(jìn)行預(yù)測(cè)的點(diǎn) 
  18. const predictDataSet = [[0, 0], [3, 1]]; 
  19.  
  20. // 進(jìn)行預(yù)測(cè) 
  21. predictLabels = knn.predict(predictDataSet); 
  22. console.log(predictLabels);// [ 'B''A' ] 

1.1.2 決策樹(shù)

一、定義

決策樹(shù)(Decision Tree)是在已知各種情況發(fā)生概率的基礎(chǔ)上,通過(guò)構(gòu)成決策樹(shù)來(lái)求取凈現(xiàn)值的期望值大于等于零的概率,評(píng)價(jià)項(xiàng)目風(fēng)險(xiǎn),判斷其可行性的決策分析方法,是直觀運(yùn)用概率分析的一種圖解法。決策樹(shù)是一種樹(shù)形結(jié)構(gòu),其中每個(gè)內(nèi)部節(jié)點(diǎn)表示一個(gè)屬性上的測(cè)試,每個(gè)分支代表一個(gè)測(cè)試輸出,每個(gè)葉節(jié)點(diǎn)代表一種類別。

二、優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

  • 計(jì)算復(fù)雜度不高
  • 輸出結(jié)果易于理解
  • 對(duì)中間值的缺失不敏感
  • 可以處理連續(xù)和種類字段
  • 可以處理不相關(guān)特征數(shù)據(jù)

2.缺點(diǎn)

  • 可能出現(xiàn)過(guò)擬合現(xiàn)象,需要進(jìn)行剪枝操作
  • 對(duì)于各類別樣本數(shù)量不一致的數(shù)據(jù),信息增益偏向于那些更多數(shù)值的特征

三、應(yīng)用場(chǎng)景

常用于解決分類和回歸問(wèn)題,用該算法的前提條件是:

1. 具有決策者期望達(dá)到的明確目標(biāo)

2. 存在決策者可以選擇的兩個(gè)以上的可行的備選方案

3. 存在決策者無(wú)法控制的兩個(gè)以上不確定因素

4. 不同方案在不同因素下的收益或損失可以計(jì)算出來(lái)

5. 決策者可以估計(jì)不確定因素發(fā)生的概率

四、重點(diǎn)知識(shí)點(diǎn)

1.信息熵

信息是很抽象的概念,很難進(jìn)行量化對(duì)量,為了解決對(duì)信息的量化度量問(wèn)題,香農(nóng)提出了“信息熵”的概念。信息熵是在信息的基礎(chǔ)上,將有可能產(chǎn)生的信息定義為一個(gè)隨機(jī)變量,變量的期望就是信息熵。信息熵的計(jì)算公式為(單位為比特):

注:熵是用來(lái)度量不確定性,熵越大則其不確定性越大,反之越小 2. 信息增益

信息增益在決策樹(shù)算法中是用來(lái)選擇特征的指標(biāo),信息增益越大,則這個(gè)特征的選擇性越好,在概率論中定義為:待分類的集合的熵和選定某個(gè)特征的條件熵之差。其計(jì)算公式為:

注:

  • g(D, A)表示特征A對(duì)訓(xùn)練數(shù)據(jù)集D的信息增益
  • H(D)表示集合D的信息熵
  • H(D|A)表示條件熵

3.常用算法

(1)ID3算法

ID3算法是采用信息增益作為特征選擇的標(biāo)準(zhǔn),信息增益越大,說(shuō)明按此特征分類后越能消除信息的不確定性。

(2)C4.5算法

ID3算法具有兩大缺點(diǎn):一個(gè)是類別越多的特征計(jì)算出的信息增益越大,易導(dǎo)致生成的決策樹(shù)廣而淺;另一個(gè)是只能處理離散變量,不能處理連續(xù)變量。C4.5是在ID3的算法基礎(chǔ)上采用信息增益率作為特征選擇,通過(guò)增加類別的懲罰因子,規(guī)避了類別越多信息增益越大的問(wèn)題,同時(shí)也可以對(duì)連續(xù)變量通過(guò)均值離散化的方式解決無(wú)法處理連續(xù)變量的問(wèn)題。

(3)CART算法

C4.5存在不能處理回歸問(wèn)題的缺點(diǎn),該缺點(diǎn)由CART解決。CART不在通過(guò)信息熵的方式選取最優(yōu)劃分特征,而是采用基尼系數(shù)(基尼不純度),兩者衡量信息量的作用相當(dāng),但基尼系數(shù)由于沒(méi)有對(duì)數(shù)運(yùn)算,可大大減少計(jì)算開(kāi)銷。

五、代碼

  1. const irisDataset = require('ml-dataset-iris'); 
  2. const { DecisionTreeClassifier } = require('ml-cart'); 
  3.  
  4. // 獲取訓(xùn)練集中的特征值 
  5. const dataSet = irisDataset.getNumbers(); 
  6. // 獲取訓(xùn)練集中的目標(biāo)值,并轉(zhuǎn)換為標(biāo)量 
  7. const labels = irisDataset 
  8.     .getClasses() 
  9.     .map(elem => irisDataset.getDistinctClasses().indexOf(elem)); 
  10.  
  11. // 實(shí)例化決策樹(shù)的分類器 
  12. const dTClassifier = new DecisionTreeClassifier({ 
  13.     gainFunction: 'gini'
  14.     maxDepth: 10, 
  15.     minNumSamples: 3 
  16. }); 
  17.  
  18. // 進(jìn)行訓(xùn)練 
  19. dTClassifier.train(dataSet, labels); 
  20.  
  21. const predictDataset = [[5.1,3.5,1.4,0.2]]; 
  22.  
  23. // 進(jìn)行預(yù)測(cè) 
  24. const result = dTClassifier.predict(predictDataset); 
  25.  
  26. // 結(jié)果轉(zhuǎn)換為對(duì)應(yīng)的文本形式 
  27. console.log(result.map(value => irisDataset.getDistinctClasses()[value])); 

1.1.3 隨機(jī)森林

一、定義

在機(jī)器學(xué)習(xí)中,隨機(jī)森林是一個(gè)包含多個(gè)決策樹(shù)的分類器,其輸出的類別是由個(gè)別樹(shù)輸出的類別的眾數(shù)而定(隨機(jī)森林就是通過(guò)集成學(xué)習(xí)的思想將多棵樹(shù)集成的一種算法,其基本單元是決策樹(shù))。

二、優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

  • 具有極好的準(zhǔn)確率(由集成算法的特點(diǎn)引入)
  • 抗過(guò)擬合能力:通過(guò)平均決策樹(shù),降低過(guò)擬合的風(fēng)險(xiǎn)性(由隨機(jī)這個(gè)特點(diǎn)引入)
  • 能夠有效地運(yùn)行在大數(shù)據(jù)集上,處理具有高維特征的輸入樣本,而且不需要降維
  • 能夠評(píng)估各個(gè)特征在分類問(wèn)題上的重要性

2.缺點(diǎn)

  • 在某些噪音較大的分類或回歸問(wèn)題上會(huì)過(guò)擬合
  • 比決策樹(shù)算法更復(fù)雜,計(jì)算成本更高

三、重要知識(shí)點(diǎn)

1.隨機(jī)森林的每棵樹(shù)的生成規(guī)則(A表示訓(xùn)練集總樣本個(gè)數(shù)、N表示訓(xùn)練樣本個(gè)數(shù)、M表示特征個(gè)數(shù))

(1)對(duì)于每棵樹(shù)隨機(jī)有放回的從訓(xùn)練集中抽取N個(gè)訓(xùn)練樣本,作為該樹(shù)的訓(xùn)練集 (2)指定一個(gè)常數(shù)m<

2..為什么要隨機(jī)抽樣訓(xùn)練集?

隨機(jī)抽樣是為了保證每棵樹(shù)的訓(xùn)練集都不一樣,若不隨機(jī)抽樣會(huì)導(dǎo)致最終訓(xùn)練出的分類結(jié)果完全一樣。

3.為什么要有放回的抽樣?

有放回的抽樣才能保證每次抽取時(shí)的概率是一樣的,達(dá)到獨(dú)立同分布,可保證每一棵決策樹(shù)都是相互獨(dú)立的。

4.隨機(jī)森林分類效果(錯(cuò)誤率)相關(guān)因素?

(1)森林中任意兩棵樹(shù)的相關(guān)性:相關(guān)性越大,錯(cuò)誤率越大

(2)森林中每棵樹(shù)的分類能力:每棵樹(shù)的分類能力越強(qiáng),整個(gè)森林的錯(cuò)誤率越低

(注:減小特征選擇個(gè)數(shù)m,樹(shù)的相關(guān)性和分類能力會(huì)相應(yīng)降低,反之會(huì)隨之增大)

四、代碼

  1. const irisDataset = require('ml-dataset-iris'); 
  2. const { RandomForestClassifier } = require('ml-random-forest'); 
  3.  
  4. // 獲取訓(xùn)練集中的特征值 
  5. const dataSet = irisDataset.getNumbers(); 
  6. // 獲取訓(xùn)練集中的目標(biāo)值,并轉(zhuǎn)換為標(biāo)量 
  7. const labels = irisDataset 
  8.     .getClasses() 
  9.     .map(elem => irisDataset.getDistinctClasses().indexOf(elem)); 
  10.  
  11. // 實(shí)例化分類器 
  12. const rFClassifier = new RandomForestClassifier({ 
  13.     seed: 3, 
  14.     maxFeatures: 0.8, 
  15.     replacement: true
  16.     nEstimators: 25 
  17. }); 
  18.  
  19. // 進(jìn)行訓(xùn)練 
  20. rFClassifier.train(dataSet, labels); 
  21.  
  22. const predictDataset = [[5.1,3.5,1.4,0.2]]; 
  23.  
  24. // 進(jìn)行預(yù)測(cè) 
  25. const result = rFClassifier.predict(predictDataset); 
  26.  
  27. // 結(jié)果轉(zhuǎn)換為對(duì)應(yīng)的文本形式 
  28. console.log(result.map(value => irisDataset.getDistinctClasses()[value])); 

1.1.4 樸素貝葉斯

一、定義

樸素貝葉斯法(NBC)是基于貝葉斯定理與特征條件獨(dú)立假設(shè)的分類方法。先通過(guò)已給定的訓(xùn)練集,以特征詞之間獨(dú)立作為前提假設(shè),學(xué)習(xí)從輸入到輸出的聯(lián)合概率分布,再基于學(xué)習(xí)到的模型,輸入X求出使得后驗(yàn)概率最大的輸出Y。

二、優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

  • 樸素貝葉斯模型發(fā)源于古典數(shù)學(xué)理論,有穩(wěn)定的分類效率
  • 對(duì)缺失數(shù)據(jù)不敏感,算法簡(jiǎn)單,常用于文本分類
  • 分類準(zhǔn)確度高,速度快

2.缺點(diǎn)

  • 使用了樣本獨(dú)立性的假設(shè),如果特征屬性有關(guān)聯(lián)性,其效果較差

三、應(yīng)用場(chǎng)景

  • 文本分類
  • 文字識(shí)別
  • 圖像識(shí)別

四、重要知識(shí)點(diǎn)

1.貝葉斯公式

注:貝葉斯公式是打通P(W|C)和P(C|W)的橋梁

2.為什么引入拉普拉斯平滑系數(shù)

為了防止計(jì)算出的分類概率為0,所以引入拉普拉斯平滑系數(shù),即讓P(W1|C)不為0,其計(jì)算公式為: 

注:其中α為指定系數(shù),一般為1;m為訓(xùn)練文檔中統(tǒng)計(jì)出的特征詞個(gè)數(shù)

三種貝葉斯模型

(1)高斯分布樸素貝葉斯——用于一般分類問(wèn)題

(2)多項(xiàng)式分布樸素貝葉斯——適用于文本數(shù)據(jù)(特征表示的是次數(shù))

(3)伯努利分布樸素貝葉斯——適用于伯努利分布、文本數(shù)據(jù)(特征表示的是是否出現(xiàn))

五、代碼

  1. const irisDataset = require('ml-dataset-iris'); 
  2. const { GaussianNB } = require('ml-naivebayes'); 
  3.  
  4. // 獲取訓(xùn)練集中的特征值 
  5. const dataSet = irisDataset.getNumbers(); 
  6.  
  7. // 獲取訓(xùn)練集中的目標(biāo)值 
  8. const labels = irisDataset 
  9.     .getClasses() 
  10.     .map(elem => irisDataset.getDistinctClasses().indexOf(elem)); 
  11.  
  12.  
  13. //實(shí)例化分類器 
  14. const gaussianNB = new GaussianNB(); 
  15. // 進(jìn)行訓(xùn)練 
  16. gaussianNB.train(dataSet, labels); 
  17.  
  18. const predictDataset = [[5.1,3.5,1.4,0.2]]; 
  19.  
  20. // 進(jìn)行預(yù)測(cè) 
  21. const result = gaussianNB.predict(predictDataset); 
  22.  
  23. // 結(jié)果轉(zhuǎn)換為對(duì)應(yīng)的文本形式 
  24. console.log(result.map(value => irisDataset.getDistinctClasses()[value])); 

1.1.5 支持向量機(jī)

一、定義

支持向量機(jī)(SVM)是一類按監(jiān)督學(xué)習(xí)方式對(duì)數(shù)據(jù)進(jìn)行二元分類的廣義線性分類器,其決策邊界是對(duì)學(xué)習(xí)樣本求解的最大邊距超平面。

二、優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

  • 有嚴(yán)格的數(shù)學(xué)理論支持,可解釋性強(qiáng),不依靠統(tǒng)計(jì)方法,簡(jiǎn)化了通常的分類和回歸問(wèn)題。
  • 上述支持向量決定了最終結(jié)果,對(duì)異常值不敏感,可以幫助抓住關(guān)鍵樣本,剔除大量冗余樣本
  • 該算法簡(jiǎn)單且具有較好的“魯棒性”
  • 計(jì)算的復(fù)雜度取決于支持向量的數(shù)目,而不是樣本空間的維數(shù),某種意義上避免了“維數(shù)災(zāi)難”
  • 泛化能力較強(qiáng)

2.缺點(diǎn)

  • 對(duì)大規(guī)模訓(xùn)練樣本難以實(shí)施:SVM的空間消耗主要是存儲(chǔ)訓(xùn)練樣本和核矩陣,由于SVM是借助二次規(guī)劃來(lái)求解支持向量,而求解二次規(guī)劃將涉及m階矩陣的運(yùn)算,當(dāng)m數(shù)目很大時(shí)該矩陣的存儲(chǔ)和計(jì)算將耗費(fèi)大量的機(jī)器內(nèi)存和運(yùn)算時(shí)間。
  • 解決多分類問(wèn)題困難:經(jīng)典的支持向量機(jī)算法只給出了二類分類算法,解決多分類問(wèn)題需要通過(guò)多個(gè)二類支持向量機(jī)的組合來(lái)解決(一對(duì)多組合模式、一對(duì)一組合模式和SVM決策樹(shù))。
  • 對(duì)參數(shù)和核函數(shù)選擇敏感:支持向量機(jī)性能的優(yōu)劣主要取決于核函數(shù)的選取。

三、應(yīng)用場(chǎng)景

SVM在各領(lǐng)域的模式識(shí)別問(wèn)題中有應(yīng)用,包括人像識(shí)別、文本分類、手寫(xiě)字符識(shí)別、生物信息學(xué)等。

四、重要知識(shí)點(diǎn)

1.重要概念

(1) 線性可分:在二維空間上,兩類點(diǎn)被一條直線完全分開(kāi)叫做線性可分

(2)最大間隔超平面:從二維擴(kuò)展到多維空間中,將兩個(gè)點(diǎn)集完全正確地劃分開(kāi)就形成一個(gè)超平面,為了使這個(gè)超平面更具魯棒性,則會(huì)找最佳超平面(即為最大間隔超平面,該平面是以最大間隔把兩類樣本分開(kāi)的超平面)。(兩類樣本分別分割在該超平面的兩側(cè)、兩側(cè)距離超平面最近的樣本點(diǎn)到超平面的距離被最大化了)

(3)支持向量:樣本中距離超平面最近的一些點(diǎn)叫支持向量

(4)軟間隔:對(duì)于不能夠完全線性可分的樣本可引入軟間隔,相比于硬間隔的苛刻條件,軟間隔允許個(gè)別樣本出現(xiàn)在間隔帶里面。(注:硬間隔和軟間隔均是在說(shuō)樣本的完全線性可分或者大部分樣本點(diǎn)的線性可分)

2.對(duì)于線性不可分處理方式

將線性不可分樣本映射到高維空間中,使樣本在高維空間線性可分,此時(shí)由于維度提高會(huì)導(dǎo)致計(jì)算量增大,所以需要使用核函數(shù)幫助處理,引入核函數(shù)后就不需要計(jì)算高維甚至無(wú)窮維空間的內(nèi)積了。

3.引入核函數(shù)的好處

(1)減少了計(jì)算量

(2)減少了存儲(chǔ)數(shù)據(jù)的內(nèi)存使用量

4.常見(jiàn)核函數(shù)分類

(1)線性核函數(shù) (2)多項(xiàng)式核函數(shù) (3)高斯核函數(shù)

五、代碼

  1. const SVM = require('libsvm-js/asm'); 
  2.  
  3. const svm = new SVM({ 
  4.     kernel: SVM.KERNEL_TYPES.RBF, 
  5.     type: SVM.SVM_TYPES.C_SVC, 
  6.     gamma: 1, 
  7.     cost: 1 
  8. }); 
  9.  
  10. const dataSet = [[0, 0], [1, 1], [1, 0], [0, 1]]; 
  11. const labels = [0, 0, 1, 1]; 
  12. // 進(jìn)行訓(xùn)練 
  13. svm.train(dataSet, labels); 
  14.  
  15. // 進(jìn)行預(yù)測(cè) 
  16. const predictedLabel = svm.pred 

1.2 回歸算法

1.2.1 線性回歸

一、定義

線性回歸是利用回歸方程(函數(shù))對(duì)一個(gè)或多個(gè)自變量(特征值)和因變量(目標(biāo)值)之間關(guān)系進(jìn)行建模的一種分析方式。只有一個(gè)自變量的情況稱為單變量回歸,大于一個(gè)自變量的情況叫做多元回歸。

二、優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

  • 思想簡(jiǎn)單、容易實(shí)現(xiàn)、建模迅速,對(duì)于小數(shù)據(jù)量、簡(jiǎn)單關(guān)系情形的很有效
  • 是需要強(qiáng)大的非線性模型的基礎(chǔ)
  • 理解容易,其結(jié)果具有很好的可解釋型,有利于決策分析。
  • 能解決回歸問(wèn)題

缺點(diǎn)

  • 對(duì)于非線性數(shù)據(jù)或者數(shù)據(jù)特征間具有相關(guān)性多項(xiàng)式回歸難以建模
  • 難以很好地表達(dá)高度復(fù)雜的數(shù)據(jù)

三、應(yīng)用場(chǎng)景

  1. 趨勢(shì)線(時(shí)間序列數(shù)據(jù)的長(zhǎng)期走勢(shì))
  2. 流行病學(xué)
  3. 金融(分析和計(jì)算投資的系統(tǒng)風(fēng)險(xiǎn))
  4. 經(jīng)濟(jì)學(xué)(預(yù)測(cè)消費(fèi)支出、固定投資支出等)

四、重要知識(shí)點(diǎn)

  1. 回歸目的——預(yù)測(cè)數(shù)值型的目標(biāo)值
  2. 回歸性能評(píng)價(jià)指標(biāo)——均方誤差(MSE)
  3. 過(guò)擬合

(1)定義:一個(gè)建設(shè)在訓(xùn)練數(shù)據(jù)上能夠獲得比其它假設(shè)更好的擬合,但是在測(cè)試數(shù)據(jù)集上卻不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了過(guò)擬合現(xiàn)象。(模型過(guò)于復(fù)雜)

(2)原因:原始特征過(guò)多,存在一些嘈雜特征

(3)解決辦法:正則化

4.欠擬合

(1)定義:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)集上不能獲得很好的擬合,并且在測(cè)試數(shù)據(jù)集上也不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了欠擬合的現(xiàn)象。(模型過(guò)于簡(jiǎn)單)

(2)原因:學(xué)習(xí)到數(shù)據(jù)的特征過(guò)少

(3)解決辦法:增加數(shù)據(jù)的特征數(shù)量

5.正則化

(1)L2正則化

L2正則化可以使得其中一些W都很小(接近于0),削弱某個(gè)特征影響。Ridge回歸就是用的L2正則化。

(2)L1正則化

L1正則化可以使得其中一些W的值直接為0,刪除整個(gè)特征的影響。LASSO回歸用的就是L1正則化。

五、代碼

  1. const SimpleLinearRegression = require('ml-regression-simple-linear'); 
  2.  
  3. const x = [0.5, 1, 1.5, 2, 2.5]; 
  4. const y = [0, 1, 2, 3, 4]; 
  5.  
  6. const regression = new SimpleLinearRegression(x, y); 
  7.  
  8. const result = regression.predict(3); 
  9.  
  10. console.log(result); 

二、非監(jiān)督學(xué)習(xí)算法

2.1 K-均值聚類算法

一、定義

K均值聚類算法是一種迭代求解的聚類分析算法,其步驟為:

隨機(jī)設(shè)置K個(gè)特征空間內(nèi)的點(diǎn)作為初始的聚類中心

對(duì)于其它每個(gè)點(diǎn)計(jì)算到K個(gè)中心的距離,位置的點(diǎn)選擇最近的一個(gè)聚類中心點(diǎn)作為標(biāo)記類別

接著重新計(jì)算出每個(gè)聚類的新中心點(diǎn)(平均值)

如果計(jì)算得出的新中心點(diǎn)與原中心點(diǎn)一樣,則結(jié)束,否則重新進(jìn)行第二步過(guò)程

二、優(yōu)缺點(diǎn)

1.優(yōu)點(diǎn)

  • 原理簡(jiǎn)單,容易實(shí)現(xiàn),算法復(fù)雜度低
  • 可解釋度較強(qiáng)
  • 處理大數(shù)據(jù)集的時(shí)候,該算法可以保證較好的伸縮性
  • 當(dāng)簇近似高斯分布的時(shí)候效果很好

2.缺點(diǎn)

  • K值需要人為設(shè)定,不同K值得到的結(jié)果不一樣
  • 對(duì)初始的簇中心敏感,不同選取方式會(huì)得到不同結(jié)果
  • 對(duì)異常值敏感
  • 需樣本存在均值(限定數(shù)據(jù)種類)
  • 不適合太離散的分類、樣本類別不均衡的分類、非凸形狀的分類
  • 可能收斂到局部最小值

三、代碼

  1. const kmeans = require('ml-kmeans'); 
  2.  
  3. // 需要進(jìn)行聚類的全部數(shù)據(jù) 
  4. const data = [[1, 1, 1], [-1, -1, -1], [-1, -1, -1.5], [1, 2, 1]]; 
  5.  
  6. // 質(zhì)心 
  7. const centers = [[1, 2, 1], [-1, -1, -1]]; 
  8.  
  9. const ans = kmeans(data, 2, { 
  10.     initialization: centers 
  11. }); 
  12.  
  13. console.log(ans); 

本文轉(zhuǎn)載自微信公眾號(hào)「執(zhí)鳶者」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系執(zhí)鳶者眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 執(zhí)鳶者
相關(guān)推薦

2021-01-11 05:18:11

機(jī)器學(xué)習(xí)

2021-01-19 06:16:05

前端Babel 技術(shù)熱點(diǎn)

2021-06-29 08:28:12

算法順序表數(shù)據(jù)

2020-05-19 14:00:09

人工智能機(jī)器學(xué)習(xí)AI

2021-03-18 11:45:49

人工智能機(jī)器學(xué)習(xí)算法

2021-02-15 15:36:20

Vue框架數(shù)組

2020-06-15 17:05:46

前端二進(jìn)制瀏覽器

2011-04-18 10:47:06

XML

2011-04-12 14:09:55

XML

2022-02-17 20:07:45

Flex鴻蒙Flex組件

2020-05-06 09:10:08

機(jī)器學(xué)習(xí)無(wú)監(jiān)督機(jī)器學(xué)習(xí)有監(jiān)督機(jī)器學(xué)習(xí)

2021-09-29 07:41:27

前端技術(shù)編程

2019-07-29 10:39:39

前端性能優(yōu)化緩存

2022-11-14 08:44:56

前端門面模式接口

2022-11-30 17:05:33

代碼程序場(chǎng)景

2020-12-20 20:31:56

Python機(jī)器學(xué)習(xí)多元線性回歸

2021-12-01 07:02:16

虛擬化LinuxCPU

2021-10-11 11:58:41

Channel原理recvq

2022-05-09 11:52:38

Java卡片服務(wù)卡片

2022-03-04 15:43:36

文件管理模塊Harmony鴻蒙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)