九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
機(jī)器學(xué)習(xí)算法基礎(chǔ)(使用Python代碼)

介紹

谷歌的自動(dòng)駕駛汽車和機(jī)器人受到了很多媒體的關(guān)注,但該公司真正的未來(lái)是在機(jī)器學(xué)習(xí)領(lǐng)域,這種技術(shù)能使計(jì)算機(jī)變得更聰明,更個(gè)性化。-Eric Schmidt(Google董事長(zhǎng))

我們可能生活在人類歷史上最具決定性的時(shí)期。從大型的電腦主機(jī)到個(gè)人電腦再到云計(jì)算的時(shí)代。但是,它的定義并不是發(fā)生了什么,而是未來(lái)幾年我們將面臨什么。

對(duì)于我這樣的人來(lái)說,這段時(shí)期真的是讓人興奮和著迷的,因?yàn)殡S著技術(shù)的發(fā)展,各種工具和技術(shù)都實(shí)現(xiàn)了飛躍化,現(xiàn)在歡迎人類來(lái)到數(shù)據(jù)科學(xué)的世界!

今天,作為一名數(shù)據(jù)科學(xué)家,我可以用每小時(shí)幾美元的成本,用復(fù)雜算法構(gòu)建數(shù)據(jù)處理機(jī)器。但是實(shí)現(xiàn)這并不容易!因?yàn)槲倚枰媾R度過無(wú)數(shù)個(gè)黑暗的日日夜夜。

機(jī)器學(xué)習(xí)算法類型

從廣義上講,有3種類型的機(jī)器學(xué)習(xí)算法。

1.監(jiān)督學(xué)習(xí)

工作原理:該算法由一個(gè)目標(biāo)/結(jié)果變量(或因變量)組成,該變量將從給定的一組預(yù)測(cè)變量(自變量)中預(yù)測(cè)。使用這些變量集,我們生成一個(gè)將輸入映射到所需輸出的函數(shù)。訓(xùn)練過程繼續(xù)進(jìn)行,直到模型在訓(xùn)練數(shù)據(jù)上達(dá)到所需的準(zhǔn)確度。監(jiān)督學(xué)習(xí)的例子:回歸,決策樹,隨機(jī)森林,KNN,邏輯回歸等。

2.無(wú)監(jiān)督學(xué)習(xí)

工作原理:在此算法中,我們沒有任何目標(biāo)或結(jié)果變量來(lái)進(jìn)行預(yù)測(cè)/估計(jì)。它用于將人群進(jìn)行聚類到不同群體中,廣泛用于將客戶劃分到不同的群體中去并進(jìn)行具體的干預(yù)。無(wú)監(jiān)督學(xué)習(xí)的例子:Apriori算法,K-means。

3.強(qiáng)化學(xué)習(xí):

工作原理:使用這種算法,機(jī)器經(jīng)過培訓(xùn),可以做出具體決策。它的工作原理是這樣的:機(jī)器暴露在一個(gè)環(huán)境中,在這個(gè)環(huán)境中,它通過反復(fù)試驗(yàn)不斷地訓(xùn)練自己。機(jī)器從過去的經(jīng)驗(yàn)中學(xué)習(xí),并嘗試獲取盡可能好的知識(shí),以做出準(zhǔn)確的業(yè)務(wù)決策。強(qiáng)化學(xué)習(xí)的例子:馬爾可夫決策過程

常用機(jī)器學(xué)習(xí)算法列表

以下是常用機(jī)器學(xué)習(xí)算法的列表。這些算法幾乎可以應(yīng)用于任何數(shù)據(jù)問題:

  1. 線性回歸

  2. 邏輯回歸

  3. 決策樹

  4. SVM

  5. 樸素貝葉斯

  6. k近鄰

  7. K均值

  8. 隨機(jī)森林

  9. 降維算法

  10. 梯度增強(qiáng)算法

    1. GBM

    2. XGBoost

    3. LightGBM

    4. CatBoost

1.線性回歸

線性回歸用于根據(jù)連續(xù)變量估算實(shí)際值(房屋成本,通話成本,總銷售額等)。在這里,我們通過擬合一條直線來(lái)建立自變量和因變量之間的關(guān)系。該最佳擬合線稱為回歸線,并由線性方程Y = a * X + b表示。

理解線性回歸的最佳方法是重溫這種童年經(jīng)歷。讓我們假設(shè),你讓一個(gè)五年級(jí)的孩子,通過體重增加的順序來(lái)安排他們班級(jí)中的人,而不是通過問他們的體重!你覺得孩子會(huì)怎么做?他/她可能會(huì)在人的身高和體型上進(jìn)行(視覺分析)安排,并使用這些可見參數(shù)的組合進(jìn)行排列。這就是現(xiàn)實(shí)生活中的線性回歸!這個(gè)孩子實(shí)際上已經(jīng)發(fā)現(xiàn)高度和體格將通過一個(gè)關(guān)系與體重聯(lián)系起來(lái),就像上面的方程一樣。

在這個(gè)等式中:

  • Y - 因變量

  • a - 坡度

  • X - 自變量

  • b - 攔截

這些系數(shù)a和b是基于最小化數(shù)據(jù)點(diǎn)和回歸線之間的距離的平方差的總和而算出的。

請(qǐng)看下面的例子。在這里,我們確定了線性方程y = 0.2811x + 13.9的最佳擬合線?,F(xiàn)在使用這個(gè)方程,我們可以求出重量,而知道一個(gè)人的身高。

創(chuàng)建本指南背后的想法是簡(jiǎn)化世界各地有抱負(fù)的數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)愛好者的旅程。通過本指南,我將幫助您解決機(jī)器學(xué)習(xí)問題并從經(jīng)驗(yàn)中獲益。我提供了對(duì)各種機(jī)器學(xué)習(xí)算法的高級(jí)理解以及運(yùn)行它們的R&Python代碼。這些應(yīng)該足以弄臟你的手。

線性回歸主要有兩種類型:簡(jiǎn)單線性回歸和多元線性回歸。簡(jiǎn)單線性回歸的特征在于一個(gè)自變量。而多元線性回歸(顧名思義)的特征是多個(gè)(超過1個(gè))的自變量。在找到最佳擬合線時(shí),可以擬合多項(xiàng)式或曲線回歸。這些被稱為多項(xiàng)式或曲線回歸。

Python代碼

#Import Library
#Import其他必要的庫(kù),如pandas,numpy ......
from sklearn import linear_model
#讀取訓(xùn)練集和測(cè)試集
#識(shí)別特征和響應(yīng)變量以及值必須是數(shù)字和numpy數(shù)組
x_train=input_variables_values_training_datasets
y_train=target_variables_values_training_datasets
x_test=input_variables_values_test_datasets
#創(chuàng)建線性回歸對(duì)象 
linear = linear_model.LinearRegression()
#使用訓(xùn)練集訓(xùn)練模型并檢查分?jǐn)?shù)
linear.fit(x_train, y_train)
linear.score(x_train, y_train)
#方程系數(shù)和截距
print('Coefficient: \n', linear.coef_)
print('Intercept: \n', linear.intercept_)
#預(yù)測(cè)輸出
predicted = linear.predict(x_test)

2.邏輯回歸

不要被它的名字搞混了!邏輯回歸是一種分類而非回歸算法。它用于根據(jù)給定的自變量集估計(jì)離散值(二進(jìn)制值,如0/1,是/否,真/假)。簡(jiǎn)單來(lái)說,它通過將數(shù)據(jù)擬合到logit函數(shù)來(lái)預(yù)測(cè)事件發(fā)生的概率。因此,它也被稱為logit回歸。由于它預(yù)測(cè)概率,因此其輸出值介于0和1之間(如預(yù)期的那樣)。

讓我們?cè)僖淮瓮ㄟ^一個(gè)簡(jiǎn)單的例子來(lái)嘗試?yán)斫膺@一點(diǎn)。

假設(shè)你的朋友給你出了一個(gè)難題讓你來(lái)解決。那只有2個(gè)結(jié)果場(chǎng)景 - 要么你成功的解決了它,要么你沒能解決它?,F(xiàn)在想象一下,你正在進(jìn)行各種各樣的解謎/測(cè)驗(yàn),試圖了解你擅長(zhǎng)哪些科目。這項(xiàng)研究的結(jié)果應(yīng)該是這樣的 - 如果給你一個(gè)基于三角測(cè)量的十年級(jí)問題,你有70%的可能解決它。另一方面,如果是五年級(jí)的歷史問題,獲得答案的概率僅為30%。這就是邏輯回歸為您提供的。

在數(shù)學(xué)中,結(jié)果的對(duì)數(shù)概率被建模為預(yù)測(cè)變量的線性組合。

odds = p /(1-p)=事件發(fā)生概率/非事件發(fā)生概率
ln(賠率)= ln(p /(1-p))
logit(p)= ln(p /(1-p))= b0 + b1X1 + b2X2 + b3X3 .... + bkXk

上面,p是存在感興趣特征的概率。它選擇的參數(shù)最大化的觀察了樣本值的可能性,而不是使誤差平方和最小化(如普通回歸)。

現(xiàn)在,你可能會(huì)問,為什么要記錄對(duì)數(shù)?為簡(jiǎn)單起見,我們只是說這是復(fù)制躍階函數(shù)的最佳數(shù)學(xué)方法之一。我可以介紹的更加仔細(xì),但是這就會(huì)超出這篇文章所要描述的。

Python代碼

#Import Library
from sklearn.linear_model import LogisticRegression
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的x(預(yù)測(cè)期)
# Create logistic regression object
model = LogisticRegression()
#使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X, y)
model.score(X, y)
#查看方程系數(shù)和截距
print('Coefficient: \n', model.coef_)
print('Intercept: \n', model.intercept_)
#預(yù)測(cè)輸出
predicted= model.predict(x_test)

此外..

為了改進(jìn)模型,可以嘗試許多不同的步驟:

  • 包括互動(dòng)條款

  • 刪除功能

  • 正則化技術(shù)

  • 使用非線性模型

3.決策樹

這是我最喜歡的算法之一,我經(jīng)常使用它。決策樹是一種監(jiān)督學(xué)習(xí)算法,主要用于分類問題。讓人驚喜的是,它適用于分類因變量和連續(xù)因變量。在該算法中,我們將總體分成兩個(gè)或更多個(gè)同類集。這是基于最重要的屬性/獨(dú)立變量來(lái)完成的,以盡可能地形成不同的群體。

在上圖中,您可以看到人群根據(jù)多個(gè)屬性分為四個(gè)不同的群體,以識(shí)別“他們是否會(huì)出去玩”。為了將人口分成不同的異構(gòu)群體,決策樹使用了各種技術(shù),如基尼系數(shù),信息增益,卡方,熵。

理解決策樹如何工作的最好方法是玩Jezzball--一款來(lái)自微軟的經(jīng)典游戲(如下圖所示)?;旧希阌幸粋€(gè)移動(dòng)墻壁的房間,你需要?jiǎng)?chuàng)建墻壁,以便最大限度的區(qū)域被球清除。

所以,每次你用墻隔開房間時(shí),你都是試圖在同一個(gè)房間里創(chuàng)造2個(gè)不同的群體。決策樹以非常類似的方式工作,通過將一個(gè)群體分成盡可能多的不同群體。

Python代碼

#導(dǎo)入 Library庫(kù)
#導(dǎo)入其他必要的庫(kù),如pandas, numpy...
from sklearn import tree
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的X(預(yù)測(cè)器)
#創(chuàng)建樹對(duì)象
model = tree.DecisionTreeClassifier(criterion='gini') #對(duì)于分類,這里可以將算法更改為基尼系數(shù)或信息增益,默認(rèn)為基尼系數(shù) 
# model = tree.DecisionTreeRegressor() for regression
#使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X, y)
model.score(X, y)
#預(yù)測(cè)輸出
predicted= model.predict(x_test)

4. SVM(支持向量機(jī))

這是一種分類方法。在此算法中,我們將每個(gè)數(shù)據(jù)項(xiàng)繪制為n維空間中的點(diǎn)(其中n是你擁有特征的數(shù)量),每個(gè)特性的值是特定坐標(biāo)的值。

例如,如果我們只有兩個(gè)特征,分別是一個(gè)人的身高和頭發(fā)長(zhǎng)度,我們首先在二維空間中繪制這兩個(gè)變量,其中每個(gè)點(diǎn)有兩個(gè)坐標(biāo)(這些坐標(biāo)稱為支持向量

現(xiàn)在,找到一條線,這條線在兩個(gè)不同分類的數(shù)據(jù)組之間進(jìn)行分隔。這樣的話這條直線最近的點(diǎn)的距離都是最遠(yuǎn)的。

在上面的例子中,將數(shù)據(jù)分成兩個(gè)不同分類組的線是黑色的,因?yàn)閮蓚€(gè)最接近的點(diǎn)距離線最遠(yuǎn)。這條線是我們的分類器。然后,根據(jù)測(cè)試數(shù)據(jù)落在線路兩側(cè)的位置,我們可以將新數(shù)據(jù)分類為哪一類。

可以將此算法視為在n維空間中玩JezzBall。游戲中的調(diào)整是:

  • 您可以在任何角度繪制線條/平面(而不是像經(jīng)典游戲中那樣只能畫水平或垂直線)

  • 游戲的目的是在不同的房間隔離不同顏色的球。

  • 并且球沒有移動(dòng)。

Python代碼

#Import Library
from sklearn import svm
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的X(預(yù)測(cè)器)
# 創(chuàng)建SVM分類對(duì)象
model = svm.svc() # 有各種各樣的選型相關(guān),這對(duì)于分類來(lái)說很簡(jiǎn)單,可以參考函數(shù)的詳細(xì)信息
# 使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X, y)
model.score(X, y)
#輸出預(yù)測(cè)
predicted= model.predict(x_test)

5.樸素貝葉斯

它是一種基于貝葉斯定理的分類技術(shù) ,假設(shè)在預(yù)測(cè)變量之間具有獨(dú)立性。簡(jiǎn)單來(lái)說,樸素貝葉斯分類器假設(shè)類中某個(gè)特定特征的存在與任何其他特征的存在無(wú)關(guān)。例如,如果水果是紅色的,圓形的,直徑約3英寸,則可以認(rèn)為它是蘋果。即使這些特征相互依賴或依賴于其他特征的存在,一個(gè)樸素的貝葉斯分類器會(huì)認(rèn)為所有這些特性都獨(dú)立地促成了這種水果是蘋果的概率。

樸素貝葉斯模型易于構(gòu)建,特別適用于非常大的數(shù)據(jù)集。除簡(jiǎn)單之外,樸素貝葉斯的性能甚至超過了非常復(fù)雜的分類方法。

貝葉斯定理提供了一種從P(c),P(x)和P(x | c)計(jì)算后驗(yàn)概率P(c | x)的方法。請(qǐng)看下面的方程:

方程中,

  • Pc | x)是給定預(yù)測(cè)器(屬性)的類(目標(biāo))的后驗(yàn)概率。

  • PC ^)是類的先驗(yàn)概率。

  • Px | c)為似然值,即給定類別的預(yù)測(cè)器概率。

  • Px)是預(yù)測(cè)器的先驗(yàn)概率。

示例: 讓我們用一個(gè)例子來(lái)理解它。下面我有一個(gè)天氣訓(xùn)練數(shù)據(jù)集和相應(yīng)的目標(biāo)變量'Play'?,F(xiàn)在,我們需要根據(jù)天氣情況對(duì)玩家是否出去玩進(jìn)行分類。讓我們按照以下步驟執(zhí)行它。

第1步:將數(shù)據(jù)集轉(zhuǎn)換為頻率表

步驟2:通過找到陰天概率為0.29和出去玩的概率為0.64的概率來(lái)創(chuàng)建似然表。

步驟3:現(xiàn)在,使用樸素貝葉斯方程計(jì)算每個(gè)類的后驗(yàn)概率。具有最高后驗(yàn)概率的一類就是預(yù)測(cè)的結(jié)果。

問題:如果天氣晴朗,玩家會(huì)出去玩,這個(gè)說法是否正確?

我們可以使用上面討論的方法解決它,所以P(出去| 陽(yáng)光充足)= P(陽(yáng)光充足 | 出去)* P(出去)/ P(陽(yáng)光充足)

這里有P(陽(yáng)光充足 |出去)= 3/9 = 0.33,P(陽(yáng)光充足)= 5/14 = 0.36,P(出去)= 9/14 = 0.64

現(xiàn)在,P(出去| 陽(yáng)光充足)= 0.33 * 0.64 / 0.36 = 0.60,概率更高。

樸素貝葉斯使用類似的方法根據(jù)各種屬性預(yù)測(cè)不同類別的概率。該算法主要用于文本分類,并且具有多個(gè)類的問題。

Python代碼

#Import Library
from sklearn.naive_bayes import GaussianNB
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的X(預(yù)測(cè)器)
# Create SVM classification object model = GaussianNB() # 對(duì)于多項(xiàng)式類,還有其他的分布,如伯努利樸素貝葉斯,可以查看函數(shù)的詳細(xì)內(nèi)容
# 使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X, y)
#輸出預(yù)測(cè)
predicted= model.predict(x_test)

6. KNN(k-近鄰)

KNN可以用于分類和回歸問題。然而,它更廣泛地用于行業(yè)中的分類問題。K近鄰是一種簡(jiǎn)單的算法,它存儲(chǔ)所有可用的案例,并通過其k個(gè)近鄰的點(diǎn)進(jìn)行多數(shù)投票對(duì)新案例進(jìn)行分類。分配給該類的情況在由距離函數(shù)測(cè)量的其K個(gè)最近鄰中決定。

這些距離函數(shù)可以是歐幾里得距離,曼哈頓距離,閔可夫斯基和漢明距離。前三個(gè)函數(shù)用于連續(xù)函數(shù),第四個(gè)函數(shù)(漢明)用于分類變量。如果K = 1,則將該案例簡(jiǎn)單地分配給其最近鄰的類別。有時(shí)候,選擇K的值在執(zhí)行KNN建模時(shí)是一個(gè)挑戰(zhàn)。

KNN很容易映射到我們的現(xiàn)實(shí)生活中。如果你想了解一個(gè)你不了解的人,你可以通過他/她的朋友和他/她所處在的圈子,輕松的了解到他/她是什么樣的人!

選擇KNN之前需要考慮的事項(xiàng):

  • KNN在計(jì)算上很昂貴

  • 變量應(yīng)該歸一化,否則較大范圍的變量會(huì)產(chǎn)生偏差

  • 在使用KNN之前需要進(jìn)行一些預(yù)處理工作比如:異常值、噪聲的去除

Python代碼

#Import Library
from sklearn.neighbors import KNeighborsClassifier
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的X(預(yù)測(cè)器)
# 創(chuàng)建KNN分類器對(duì)象模型 
KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5
# 使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X, y)
#輸出預(yù)測(cè)
predicted= model.predict(x_test)

7. K-Means

K-Means是一種無(wú)監(jiān)督算法,可以解決聚類問題。其過程遵循一種簡(jiǎn)單易行的方法,通過一定數(shù)量的簇(假設(shè)有k個(gè)簇)對(duì)給定數(shù)據(jù)集進(jìn)行分類。集群內(nèi)的數(shù)據(jù)點(diǎn)對(duì)于同一個(gè)組來(lái)說是同構(gòu)和異構(gòu)的。

還記得從墨跡中找出形狀嗎?k-Means的意思就有點(diǎn)類似于從墨跡中找形狀。你看這個(gè)形狀然后把它分散開來(lái),然后解釋這里有多少不同的簇!

K-means如何形成簇:

  1. K-means為稱為中心的每個(gè)簇選擇k個(gè)點(diǎn)。

  2. 每個(gè)數(shù)據(jù)點(diǎn)形成一個(gè)離中心最近的簇,即K簇。

  3. 根據(jù)現(xiàn)有集群成員查找每個(gè)集群的質(zhì)心。然后,生成新的質(zhì)心。

  4. 當(dāng)我們有新的質(zhì)心時(shí),重復(fù)第二步和第三步.找到每個(gè)數(shù)據(jù)點(diǎn)與新質(zhì)心的最近距離,并與新的k-簇相關(guān)聯(lián)。重復(fù)此過程直到收斂發(fā)生,即質(zhì)心不會(huì)改變。

如何確定K的值:

在K-means中,我們有簇,每個(gè)簇都有自己的質(zhì)心。質(zhì)心和簇內(nèi)數(shù)據(jù)點(diǎn)之間的差的平方和構(gòu)成該簇的平方值的總和。此外,當(dāng)添加所有簇的平方和時(shí),它在聚類解的平方值之和內(nèi)變?yōu)榭偤汀?/p>

我們知道隨著聚類數(shù)量的增加,這個(gè)值會(huì)繼不斷減小,但是如果你繪制出結(jié)果,你可能會(huì)看到平方和會(huì)急劇下降到某個(gè)k值,然后會(huì)慢得多。在這里,我們可以找到最佳的簇?cái)?shù)。

Python代碼

#Import Library
from sklearn.cluster import KMeans
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的X(預(yù)測(cè)器)
# 創(chuàng)建K-means分類器對(duì)象模型
k_means = KMeans(n_clusters=3, random_state=0)
# 使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X)
#輸出預(yù)測(cè)
predicted= model.predict(x_test)

8.隨機(jī)森林

隨機(jī)森林是決策樹集合的專業(yè)術(shù)語(yǔ)。在隨機(jī)森林中,我們收集了決策樹(俗稱“森林”)。為了根據(jù)屬性對(duì)新對(duì)象進(jìn)行分類,每個(gè)樹都給出一個(gè)分類,然后通過每個(gè)數(shù)進(jìn)行投票。新的對(duì)象選擇那個(gè)投票最多的分類(在森林中的所有樹中)。

每棵樹的種植和生長(zhǎng)方式如下:

  1. 如果訓(xùn)練集中的案例數(shù)是N,那么N個(gè)案例的樣本是隨機(jī)抽取,并進(jìn)行替換。這個(gè)樣本將是用于作為樹的訓(xùn)練集。

  2. 如果存在M個(gè)輸入變量,則指定數(shù)字m << M,使得在每個(gè)節(jié)點(diǎn)處,從M中隨機(jī)選擇m個(gè)變量,并且使用這些m上的最佳分割來(lái)分割節(jié)點(diǎn)。在森林生長(zhǎng)期間,m的值保持不變。

  3. 每棵樹都盡可能地生長(zhǎng)。不需要剪枝。

  • Pyhon代碼

#Import Library
from sklearn.ensemble import RandomForestClassifier
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的X(預(yù)測(cè)器)
#創(chuàng)建隨機(jī)森林對(duì)象
model= RandomForestClassifier()
# 使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X, y)
#輸出預(yù)測(cè)
predicted= model.predict(x_test)

9.維度降低算法

在過去的4到5年中,每個(gè)可能階段的數(shù)據(jù)捕獲都呈指數(shù)級(jí)增長(zhǎng)。企業(yè)/政府機(jī)構(gòu)/研究機(jī)構(gòu)不僅提供新的資源,而且還非常詳細(xì)地捕獲數(shù)據(jù)。

例如:電子商務(wù)公司正在捕捉有關(guān)客戶的更多詳細(xì)信息,例如他們的人口統(tǒng)計(jì)數(shù)據(jù),網(wǎng)絡(luò)抓取歷史記錄,他們喜歡或不喜歡的內(nèi)容,購(gòu)買歷史記錄,反饋以及許多其他人,比最近的雜貨店主更多地給予他們個(gè)性化的關(guān)注。

作為一名數(shù)據(jù)科學(xué)家,我們提供的數(shù)據(jù)也包含許多功能,這對(duì)于構(gòu)建良好的穩(wěn)健模型非常有用,但是存在挑戰(zhàn)。你如何確定1000或2000以外的重要變量?在這種情況下,降維算法可以幫助我們與各種其他算法一起使用,例如決策樹,隨機(jī)森林,PCA,因子分析,基于相關(guān)矩陣的識(shí)別,缺失值比率等。

Python代碼

#Import Library
from sklearn import decomposition
#假設(shè)你擁有訓(xùn)練和測(cè)試數(shù)據(jù)集作為訓(xùn)練和測(cè)試
# Create PCA obeject pca= decomposition.PCA(n_components=k) #k=min的默認(rèn)值(n個(gè)樣本,n個(gè)特征)
# 進(jìn)行因子分析
#fa= decomposition.FactorAnalysis()
#使用PCA降低訓(xùn)練數(shù)據(jù)集的維數(shù)
train_reduced = pca.fit_transform(train)
#減少測(cè)試數(shù)據(jù)集的維數(shù)
test_reduced = pca.transform(test)
#更多細(xì)節(jié)請(qǐng)查看幫助文檔

10.梯度增強(qiáng)算法

10.1 GBM

GBM是一種用于處理大量數(shù)據(jù)進(jìn)行預(yù)測(cè)的增強(qiáng)算法,具有較高的預(yù)測(cè)能力。Boosting實(shí)際上是一種學(xué)習(xí)算法集合,它結(jié)合了多個(gè)基本預(yù)測(cè)器的預(yù)測(cè)能力,以提高單個(gè)預(yù)測(cè)器的穩(wěn)健性。它將多個(gè)弱預(yù)測(cè)器或平均預(yù)測(cè)器組合成一個(gè)強(qiáng)大的預(yù)測(cè)器。這些增強(qiáng)算法在Kaggle,AV Hackathon,CrowdAnalytix等數(shù)據(jù)科學(xué)競(jìng)賽中始終運(yùn)行良好。

Python代碼

#Import Library
from sklearn.ensemble import GradientBoostingClassifier
#假設(shè)你有用于訓(xùn)練數(shù)據(jù)集的X(預(yù)測(cè)器)和Y(目標(biāo)),以及測(cè)試集的X(預(yù)測(cè)器)
#創(chuàng)建梯度增強(qiáng)分類器對(duì)象
model= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)
#使用訓(xùn)練集訓(xùn)練模型,并檢查成績(jī)
model.fit(X, y)
#輸出預(yù)測(cè)
predicted= model.predict(x_test)

10.2 XGBoost

另一種經(jīng)典的梯度增強(qiáng)算法,在一些Kaggle比賽中被認(rèn)為是決定輸贏的選擇。

XGBoost具有極高的預(yù)測(cè)能力,它同時(shí)具有線性模型和樹模型的學(xué)習(xí)算法,使得該算法的速度幾乎是現(xiàn)有的梯度增強(qiáng)技術(shù)的10倍,是確保事件精度的最佳選擇。

支持包括各種目標(biāo)函數(shù),包括回歸,分類和排序。

關(guān)于XGBoost最有趣的事情之一是,它也被稱為正則化增強(qiáng)技術(shù)。這有助于減少過度擬合建模,并對(duì)Scala,Java,R,Python,Julia和C ++等一系列語(yǔ)言提供強(qiáng)大的支持。

支持在包含GCE,AWS,Azure和Yarn集群的許多機(jī)器上進(jìn)行分布式和廣泛的訓(xùn)練。XGBoost還可以與Spark,F(xiàn)link和其他云數(shù)據(jù)流系統(tǒng)集成,并在每次升級(jí)過程中進(jìn)行內(nèi)置交叉驗(yàn)證。

Python代碼

from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X = dataset[:,0:10]
Y = dataset[:,10:]
seed = 1

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed)

model = XGBClassifier()

model.fit(X_train, y_train)

#對(duì)測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè)
y_pred = model.predict(X_test)

10.3 LightGBM

LightGBM是一種使用基于樹的學(xué)習(xí)算法的梯度增強(qiáng)框架。它被設(shè)計(jì)成為分布式和具有高效性,有以下優(yōu)點(diǎn),:

  • 更快的培訓(xùn)速度和更高的效率

  • 降低內(nèi)存使用

  • 更準(zhǔn)確的精度

  • 支持并行和GPU學(xué)習(xí)

  • 能夠處理大規(guī)模數(shù)據(jù)

該框架是一種基于決策樹算法,快速高性能的梯度增強(qiáng)框架,,用于排序,分類和許多其他機(jī)器學(xué)習(xí)任務(wù)。它是在Microsoft的分布式機(jī)器學(xué)習(xí)工具包項(xiàng)目下開發(fā)的。

由于LightGBM基于決策樹算法,因此它以最佳擬合分割樹葉,而其他提升算法則以深度或水平方向分割而不是樹葉方向分割。因此,當(dāng)在Light GBM中生長(zhǎng)在相同的葉子上時(shí),葉子算法可以比水平算法減少更多的損失,因此導(dǎo)致更好的精度,這是任何現(xiàn)有的增強(qiáng)算法都很難實(shí)現(xiàn)的。

而且,它非常的快,因此才有了“Light”這個(gè)詞。

Python代碼:

data = np.random.rand(500, 10) # 500個(gè)實(shí)體,每個(gè)包含10個(gè)特性
label = np.random.randint(2, size=500) #二進(jìn)制目標(biāo)

train_data = lgb.Dataset(data, label=label)
test_data = train_data.create_valid('test.svm')

param = {'num_leaves':31, 'num_trees':100, 'objective':'binary'}
param['metric'] = 'auc'

num_round = 10
bst = lgb.train(param, train_data, num_round, valid_sets=[test_data])

bst.save_model('model.txt')

#7個(gè)實(shí)體,每個(gè)包含10個(gè)特性
data = np.random.rand(7, 10)
ypred = bst.predict(data)

10.4 Catboost

CatBoost是Yandex最近開發(fā)的一種開源的機(jī)器學(xué)習(xí)算法。它可以輕松地與Google的TensorFlow和Apple的Core ML等深度學(xué)習(xí)框架進(jìn)行集成。

關(guān)于CatBoost最好的優(yōu)點(diǎn)是它不像其他ML模型那樣需要大量的數(shù)據(jù)訓(xùn)練,并且可以處理各種數(shù)據(jù)格式; 并不會(huì)削弱它的強(qiáng)大能力。

但是在Catboost之前,請(qǐng)確保已妥善處理好缺失的數(shù)據(jù)了。

Catboost可以在不顯示類型轉(zhuǎn)換錯(cuò)誤的情況下自動(dòng)處理分類變量,這有助于您專注于更好地優(yōu)化模型,而不是整理出瑣碎的錯(cuò)誤。

Python代碼:

import pandas as pd
import numpy as np

from catboost import CatBoostRegressor

#讀取訓(xùn)練集和測(cè)試集的文件
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")

#為訓(xùn)練集和測(cè)試集計(jì)算缺失值
train.fillna(-999, inplace=True)
test.fillna(-999,inplace=True)

#為建模和驗(yàn)證集創(chuàng)建訓(xùn)練集,以檢查模型性能
X = train.drop(['Item_Outlet_Sales'], axis=1)
y = train.Item_Outlet_Sales

from sklearn.model_selection import train_test_split

X_train, X_validation, y_train, y_validation = train_test_split(X, y, train_size=0.7, random_state=1234)
categorical_features_indices = np.where(X.dtypes != np.float)[0]

#導(dǎo)入庫(kù)并構(gòu)建模型
from catboost import CatBoostRegressormodel=CatBoostRegressor(iterations=50, depth=3, learning_rate=0.1, loss_function='RMSE')

model.fit(X_train, y_train,cat_features=categorical_features_indices,eval_set=(X_validation, y_validation),plot=True)

submission = pd.DataFrame()

submission['Item_Identifier'] = test['Item_Identifier']
submission['Outlet_Identifier'] = test['Outlet_Identifier']
submission['Item_Outlet_Sales'] = model.predict(test)

結(jié)束語(yǔ)

到目前為止,我相信,你已經(jīng)了解這些常用的機(jī)器學(xué)習(xí)算法。如果您熱衷于掌握機(jī)器學(xué)習(xí),請(qǐng)立即開始處理問題,通過對(duì)問題進(jìn)行處理,并應(yīng)用這些代碼,那你肯定會(huì)感到興趣,然后在機(jī)器學(xué)習(xí)這條道路上走下去!

Essentials of Machine Learning Algorithms (with Python and R Codes)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
先馬后看!詳解線性回歸、樸素貝葉斯、隨機(jī)森林在R和Python中的實(shí)現(xiàn)應(yīng)用?。ǜ酱a)
從貝葉斯角度,看深度學(xué)習(xí)的屬性和改進(jìn)方法
【干貨】Python無(wú)監(jiān)督學(xué)習(xí)的4大聚類算法
給初學(xué)者的十大機(jī)器學(xué)習(xí)算法
你必須熟練掌握的機(jī)器學(xué)習(xí)十大算法
0基礎(chǔ)小白必知的10種機(jī)器學(xué)習(xí)算法
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服