摘要:機器學習算法類型從廣義上講,有種類型的機器學習算法。強化學習的例子馬爾可夫決策過程常用機器學習算法列表以下是常用機器學習算法的列表。我提供了對各種機器學習算法的高級理解以及運行它們的代碼。決策樹是一種監(jiān)督學習算法,主要用于分類問題。
介紹
谷歌的自動駕駛汽車和機器人受到了很多媒體的關(guān)注,但該公司真正的未來是在機器學習領(lǐng)域,這種技術(shù)能使計算機變得更聰明,更個性化。-Eric Schmidt(Google董事長)
我們可能生活在人類歷史上最具決定性的時期。從大型的電腦主機到個人電腦再到云計算的時代。但是,它的定義并不是發(fā)生了什么,而是未來幾年我們將面臨什么。
對于我這樣的人來說,這段時期真的是讓人興奮和著迷的,因為隨著技術(shù)的發(fā)展,各種工具和技術(shù)都實現(xiàn)了飛躍化,現(xiàn)在歡迎人類來到數(shù)據(jù)科學的世界!
今天,作為一名數(shù)據(jù)科學家,我可以用每小時幾美元的成本,用復雜算法構(gòu)建數(shù)據(jù)處理機器。但是實現(xiàn)這并不容易!因為我需要面臨度過無數(shù)個黑暗的日日夜夜。
機器學習算法類型從廣義上講,有3種類型的機器學習算法。
1.監(jiān)督學習工作原理:該算法由一個目標/結(jié)果變量(或因變量)組成,該變量將從給定的一組預測變量(自變量)中預測。使用這些變量集,我們生成一個將輸入映射到所需輸出的函數(shù)。訓練過程繼續(xù)進行,直到模型在訓練數(shù)據(jù)上達到所需的準確度。監(jiān)督學習的例子:回歸,決策樹,隨機森林,KNN,邏輯回歸等。
2.無監(jiān)督學習工作原理:在此算法中,我們沒有任何目標或結(jié)果變量來進行預測/估計。它用于將人群進行聚類到不同群體中,廣泛用于將客戶劃分到不同的群體中去并進行具體的干預。無監(jiān)督學習的例子:Apriori算法,K-means。
3.強化學習:工作原理:使用這種算法,機器經(jīng)過培訓,可以做出具體決策。它的工作原理是這樣的:機器暴露在一個環(huán)境中,在這個環(huán)境中,它通過反復試驗不斷地訓練自己。機器從過去的經(jīng)驗中學習,并嘗試獲取盡可能好的知識,以做出準確的業(yè)務決策。強化學習的例子:馬爾可夫決策過程
常用機器學習算法列表以下是常用機器學習算法的列表。這些算法幾乎可以應用于任何數(shù)據(jù)問題:
線性回歸
邏輯回歸
決策樹
SVM
樸素貝葉斯
k近鄰
K均值
隨機森林
降維算法
梯度增強算法
GBM
XGBoost
LightGBM
CatBoost
1.線性回歸線性回歸用于根據(jù)連續(xù)變量估算實際值(房屋成本,通話成本,總銷售額等)。在這里,我們通過擬合一條直線來建立自變量和因變量之間的關(guān)系。該最佳擬合線稱為回歸線,并由線性方程Y = a * X + b表示。
理解線性回歸的最佳方法是重溫這種童年經(jīng)歷。讓我們假設(shè),你讓一個五年級的孩子,通過體重增加的順序來安排他們班級中的人,而不是通過問他們的體重!你覺得孩子會怎么做?他/她可能會在人的身高和體型上進行(視覺分析)安排,并使用這些可見參數(shù)的組合進行排列。這就是現(xiàn)實生活中的線性回歸!這個孩子實際上已經(jīng)發(fā)現(xiàn)高度和體格將通過一個關(guān)系與體重聯(lián)系起來,就像上面的方程一樣。
在這個等式中:
Y - 因變量
a - 坡度
X - 自變量
b - 攔截
這些系數(shù)a和b是基于最小化數(shù)據(jù)點和回歸線之間的距離的平方差的總和而算出的。
請看下面的例子。在這里,我們確定了線性方程y = 0.2811x + 13.9的最佳擬合線?,F(xiàn)在使用這個方程,我們可以求出重量,而知道一個人的身高。
創(chuàng)建本指南背后的想法是簡化世界各地有抱負的數(shù)據(jù)科學家和機器學習愛好者的旅程。通過本指南,我將幫助您解決機器學習問題并從經(jīng)驗中獲益。我提供了對各種機器學習算法的高級理解以及運行它們的R&Python代碼。這些應該足以弄臟你的手。
線性回歸主要有兩種類型:簡單線性回歸和多元線性回歸。簡單線性回歸的特征在于一個自變量。而多元線性回歸(顧名思義)的特征是多個(超過1個)的自變量。在找到最佳擬合線時,可以擬合多項式或曲線回歸。這些被稱為多項式或曲線回歸。
Python代碼
Import Library Import其他必要的庫,如pandas,numpy ......from sklearn import linear_model
讀取訓練集和測試集 識別特征和響應變量以及值必須是數(shù)字和numpy數(shù)組x_train=input_variables_values_training_datasets
y_train=target_variables_values_training_datasets
x_test=input_variables_values_test_datasets
linear = linear_model.LinearRegression()
使用訓練集訓練模型并檢查分數(shù)linear.fit(x_train, y_train)
linear.score(x_train, y_train)
print("Coefficient: n", linear.coef_)
print("Intercept: n", linear.intercept_)
predicted = linear.predict(x_test)
2.邏輯回歸不要被它的名字搞混了!邏輯回歸是一種分類而非回歸算法。它用于根據(jù)給定的自變量集估計離散值(二進制值,如0/1,是/否,真/假)。簡單來說,它通過將數(shù)據(jù)擬合到logit函數(shù)來預測事件發(fā)生的概率。因此,它也被稱為logit回歸。由于它預測概率,因此其輸出值介于0和1之間(如預期的那樣)。
讓我們再一次通過一個簡單的例子來嘗試理解這一點。
假設(shè)你的朋友給你出了一個難題讓你來解決。那只有2個結(jié)果場景 - 要么你成功的解決了它,要么你沒能解決它?,F(xiàn)在想象一下,你正在進行各種各樣的解謎/測驗,試圖了解你擅長哪些科目。這項研究的結(jié)果應該是這樣的 - 如果給你一個基于三角測量的十年級問題,你有70%的可能解決它。另一方面,如果是五年級的歷史問題,獲得答案的概率僅為30%。這就是邏輯回歸為您提供的。
在數(shù)學中,結(jié)果的對數(shù)概率被建模為預測變量的線性組合。
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)在,你可能會問,為什么要記錄對數(shù)?為簡單起見,我們只是說這是復制躍階函數(shù)的最佳數(shù)學方法之一。我可以介紹的更加仔細,但是這就會超出這篇文章所要描述的。
Python代碼
Import Libraryfrom sklearn.linear_model import LogisticRegression
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的x(預測期) Create logistic regression objectmodel = LogisticRegression()
使用訓練集訓練模型,并檢查成績model.fit(X, y)
model.score(X, y)
print("Coefficient: n", model.coef_)
print("Intercept: n", model.intercept_)
predicted= model.predict(x_test)
此外..為了改進模型,可以嘗試許多不同的步驟:
包括互動條款
刪除功能
正則化技術(shù)
使用非線性模型
3.決策樹這是我最喜歡的算法之一,我經(jīng)常使用它。決策樹是一種監(jiān)督學習算法,主要用于分類問題。讓人驚喜的是,它適用于分類因變量和連續(xù)因變量。在該算法中,我們將總體分成兩個或更多個同類集。這是基于最重要的屬性/獨立變量來完成的,以盡可能地形成不同的群體。
在上圖中,您可以看到人群根據(jù)多個屬性分為四個不同的群體,以識別“他們是否會出去玩”。為了將人口分成不同的異構(gòu)群體,決策樹使用了各種技術(shù),如基尼系數(shù),信息增益,卡方,熵。
理解決策樹如何工作的最好方法是玩Jezzball--一款來自微軟的經(jīng)典游戲(如下圖所示)?;旧?,你有一個移動墻壁的房間,你需要創(chuàng)建墻壁,以便最大限度的區(qū)域被球清除。
所以,每次你用墻隔開房間時,你都是試圖在同一個房間里創(chuàng)造2個不同的群體。決策樹以非常類似的方式工作,通過將一個群體分成盡可能多的不同群體。
Python代碼 導入 Library庫 導入其他必要的庫,如pandas, numpy...from sklearn import tree
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的X(預測器) 創(chuàng)建樹對象model = tree.DecisionTreeClassifier(criterion="gini") #對于分類,這里可以將算法更改為基尼系數(shù)或信息增益,默認為基尼系數(shù)?
model = tree.DecisionTreeRegressor() for regression 使用訓練集訓練模型,并檢查成績model.fit(X, y)
model.score(X, y)
predicted= model.predict(x_test)
4. SVM(支持向量機)這是一種分類方法。在此算法中,我們將每個數(shù)據(jù)項繪制為n維空間中的點(其中n是你擁有特征的數(shù)量),每個特性的值是特定坐標的值。
例如,如果我們只有兩個特征,分別是一個人的身高和頭發(fā)長度,我們首先在二維空間中繪制這兩個變量,其中每個點有兩個坐標(這些坐標稱為支持向量)
現(xiàn)在,找到一條線,這條線在兩個不同分類的數(shù)據(jù)組之間進行分隔。這樣的話這條直線最近的點的距離都是最遠的。
在上面的例子中,將數(shù)據(jù)分成兩個不同分類組的線是黑色的,因為兩個最接近的點距離線最遠。這條線是我們的分類器。然后,根據(jù)測試數(shù)據(jù)落在線路兩側(cè)的位置,我們可以將新數(shù)據(jù)分類為哪一類。
可以將此算法視為在n維空間中玩JezzBall。游戲中的調(diào)整是:
您可以在任何角度繪制線條/平面(而不是像經(jīng)典游戲中那樣只能畫水平或垂直線)
游戲的目的是在不同的房間隔離不同顏色的球。
并且球沒有移動。
Python代碼 Import Libraryfrom sklearn import svm
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的X(預測器) 創(chuàng)建SVM分類對象model = svm.svc() # 有各種各樣的選型相關(guān),這對于分類來說很簡單,可以參考函數(shù)的詳細信息
使用訓練集訓練模型,并檢查成績model.fit(X, y)
model.score(X, y)
predicted= model.predict(x_test)
5.樸素貝葉斯它是一種基于貝葉斯定理的分類技術(shù) ,假設(shè)在預測變量之間具有獨立性。簡單來說,樸素貝葉斯分類器假設(shè)類中某個特定特征的存在與任何其他特征的存在無關(guān)。例如,如果水果是紅色的,圓形的,直徑約3英寸,則可以認為它是蘋果。即使這些特征相互依賴或依賴于其他特征的存在,一個樸素的貝葉斯分類器會認為所有這些特性都獨立地促成了這種水果是蘋果的概率。
樸素貝葉斯模型易于構(gòu)建,特別適用于非常大的數(shù)據(jù)集。除簡單之外,樸素貝葉斯的性能甚至超過了非常復雜的分類方法。
貝葉斯定理提供了一種從P(c),P(x)和P(x | c)計算后驗概率P(c | x)的方法。請看下面的方程:
方程中,
P(c | x)是給定預測器(屬性)的類(目標)的后驗概率。
P(C ^)是類的先驗概率。
P(x | c)為似然值,即給定類別的預測器概率。
P(x)是預測器的先驗概率。
示例:?讓我們用一個例子來理解它。下面我有一個天氣訓練數(shù)據(jù)集和相應的目標變量"Play"。現(xiàn)在,我們需要根據(jù)天氣情況對玩家是否出去玩進行分類。讓我們按照以下步驟執(zhí)行它。
第1步:將數(shù)據(jù)集轉(zhuǎn)換為頻率表
步驟2:通過找到陰天概率為0.29和出去玩的概率為0.64的概率來創(chuàng)建似然表。
步驟3:現(xiàn)在,使用樸素貝葉斯方程計算每個類的后驗概率。具有最高后驗概率的一類就是預測的結(jié)果。
問題:如果天氣晴朗,玩家會出去玩,這個說法是否正確?
我們可以使用上面討論的方法解決它,所以P(出去| 陽光充足)= P(陽光充足 | 出去)* P(出去)/ P(陽光充足)
這里有P(陽光充足 |出去)= 3/9 = 0.33,P(陽光充足)= 5/14 = 0.36,P(出去)= 9/14 = 0.64
現(xiàn)在,P(出去| 陽光充足)= 0.33 * 0.64 / 0.36 = 0.60,概率更高。
樸素貝葉斯使用類似的方法根據(jù)各種屬性預測不同類別的概率。該算法主要用于文本分類,并且具有多個類的問題。
Python代碼 Import Libraryfrom sklearn.naive_bayes import GaussianNB
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的X(預測器) Create SVM classification object model = GaussianNB() # 對于多項式類,還有其他的分布,如伯努利樸素貝葉斯,可以查看函數(shù)的詳細內(nèi)容 使用訓練集訓練模型,并檢查成績model.fit(X, y)
輸出預測predicted= model.predict(x_test)
6. KNN(k-近鄰)KNN可以用于分類和回歸問題。然而,它更廣泛地用于行業(yè)中的分類問題。K近鄰是一種簡單的算法,它存儲所有可用的案例,并通過其k個近鄰的點進行多數(shù)投票對新案例進行分類。分配給該類的情況在由距離函數(shù)測量的其K個最近鄰中決定。
這些距離函數(shù)可以是歐幾里得距離,曼哈頓距離,閔可夫斯基和漢明距離。前三個函數(shù)用于連續(xù)函數(shù),第四個函數(shù)(漢明)用于分類變量。如果K = 1,則將該案例簡單地分配給其最近鄰的類別。有時候,選擇K的值在執(zhí)行KNN建模時是一個挑戰(zhàn)。
KNN很容易映射到我們的現(xiàn)實生活中。如果你想了解一個你不了解的人,你可以通過他/她的朋友和他/她所處在的圈子,輕松的了解到他/她是什么樣的人!
選擇KNN之前需要考慮的事項:
KNN在計算上很昂貴
變量應該歸一化,否則較大范圍的變量會產(chǎn)生偏差
在使用KNN之前需要進行一些預處理工作比如:異常值、噪聲的去除
Python代碼 Import Libraryfrom sklearn.neighbors import KNeighborsClassifier
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的X(預測器) 創(chuàng)建KNN分類器對象模型?KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5
使用訓練集訓練模型,并檢查成績model.fit(X, y)
輸出預測predicted= model.predict(x_test)
7. K-MeansK-Means是一種無監(jiān)督算法,可以解決聚類問題。其過程遵循一種簡單易行的方法,通過一定數(shù)量的簇(假設(shè)有k個簇)對給定數(shù)據(jù)集進行分類。集群內(nèi)的數(shù)據(jù)點對于同一個組來說是同構(gòu)和異構(gòu)的。
還記得從墨跡中找出形狀嗎?k-Means的意思就有點類似于從墨跡中找形狀。你看這個形狀然后把它分散開來,然后解釋這里有多少不同的簇!
K-means如何形成簇:
K-means為稱為中心的每個簇選擇k個點。
每個數(shù)據(jù)點形成一個離中心最近的簇,即K簇。
根據(jù)現(xiàn)有集群成員查找每個集群的質(zhì)心。然后,生成新的質(zhì)心。
當我們有新的質(zhì)心時,重復第二步和第三步.找到每個數(shù)據(jù)點與新質(zhì)心的最近距離,并與新的k-簇相關(guān)聯(lián)。重復此過程直到收斂發(fā)生,即質(zhì)心不會改變。
如何確定K的值:
在K-means中,我們有簇,每個簇都有自己的質(zhì)心。質(zhì)心和簇內(nèi)數(shù)據(jù)點之間的差的平方和構(gòu)成該簇的平方值的總和。此外,當添加所有簇的平方和時,它在聚類解的平方值之和內(nèi)變?yōu)榭偤汀?/p>
我們知道隨著聚類數(shù)量的增加,這個值會繼不斷減小,但是如果你繪制出結(jié)果,你可能會看到平方和會急劇下降到某個k值,然后會慢得多。在這里,我們可以找到最佳的簇數(shù)。
Python代碼 Import Libraryfrom sklearn.cluster import KMeans
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的X(預測器) 創(chuàng)建K-means分類器對象模型k_means = KMeans(n_clusters=3, random_state=0)
使用訓練集訓練模型,并檢查成績model.fit(X)
輸出預測predicted= model.predict(x_test)
8.隨機森林隨機森林是決策樹集合的專業(yè)術(shù)語。在隨機森林中,我們收集了決策樹(俗稱“森林”)。為了根據(jù)屬性對新對象進行分類,每個樹都給出一個分類,然后通過每個數(shù)進行投票。新的對象選擇那個投票最多的分類(在森林中的所有樹中)。
每棵樹的種植和生長方式如下:
如果訓練集中的案例數(shù)是N,那么N個案例的樣本是隨機抽取,并進行替換。這個樣本將是用于作為樹的訓練集。
如果存在M個輸入變量,則指定數(shù)字m << M,使得在每個節(jié)點處,從M中隨機選擇m個變量,并且使用這些m上的最佳分割來分割節(jié)點。在森林生長期間,m的值保持不變。
每棵樹都盡可能地生長。不需要剪枝。
Pyhon代碼
Import Libraryfrom sklearn.ensemble import RandomForestClassifier
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的X(預測器) 創(chuàng)建隨機森林對象model= RandomForestClassifier()
使用訓練集訓練模型,并檢查成績model.fit(X, y)
輸出預測predicted= model.predict(x_test)
9.維度降低算法在過去的4到5年中,每個可能階段的數(shù)據(jù)捕獲都呈指數(shù)級增長。企業(yè)/政府機構(gòu)/研究機構(gòu)不僅提供新的資源,而且還非常詳細地捕獲數(shù)據(jù)。
例如:電子商務公司正在捕捉有關(guān)客戶的更多詳細信息,例如他們的人口統(tǒng)計數(shù)據(jù),網(wǎng)絡(luò)抓取歷史記錄,他們喜歡或不喜歡的內(nèi)容,購買歷史記錄,反饋以及許多其他人,比最近的雜貨店主更多地給予他們個性化的關(guān)注。
作為一名數(shù)據(jù)科學家,我們提供的數(shù)據(jù)也包含許多功能,這對于構(gòu)建良好的穩(wěn)健模型非常有用,但是存在挑戰(zhàn)。你如何確定1000或2000以外的重要變量?在這種情況下,降維算法可以幫助我們與各種其他算法一起使用,例如決策樹,隨機森林,PCA,因子分析,基于相關(guān)矩陣的識別,缺失值比率等。
Python代碼 Import Libraryfrom sklearn import decomposition
假設(shè)你擁有訓練和測試數(shù)據(jù)集作為訓練和測試 Create PCA obeject pca= decomposition.PCA(n_components=k) #k=min的默認值(n個樣本,n個特征) 進行因子分析 fa= decomposition.FactorAnalysis() 使用PCA降低訓練數(shù)據(jù)集的維數(shù)train_reduced = pca.fit_transform(train)
減少測試數(shù)據(jù)集的維數(shù)test_reduced = pca.transform(test)
更多細節(jié)請查看幫助文檔 10.梯度增強算法 10.1 GBMGBM是一種用于處理大量數(shù)據(jù)進行預測的增強算法,具有較高的預測能力。Boosting實際上是一種學習算法集合,它結(jié)合了多個基本預測器的預測能力,以提高單個預測器的穩(wěn)健性。它將多個弱預測器或平均預測器組合成一個強大的預測器。這些增強算法在Kaggle,AV Hackathon,CrowdAnalytix等數(shù)據(jù)科學競賽中始終運行良好。
Python代碼 Import Libraryfrom sklearn.ensemble import GradientBoostingClassifier
假設(shè)你有用于訓練數(shù)據(jù)集的X(預測器)和Y(目標),以及測試集的X(預測器) 創(chuàng)建梯度增強分類器對象model= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)
使用訓練集訓練模型,并檢查成績model.fit(X, y)
輸出預測predicted= model.predict(x_test)
10.2 XGBoost另一種經(jīng)典的梯度增強算法,在一些Kaggle比賽中被認為是決定輸贏的選擇。
XGBoost具有極高的預測能力,它同時具有線性模型和樹模型的學習算法,使得該算法的速度幾乎是現(xiàn)有的梯度增強技術(shù)的10倍,是確保事件精度的最佳選擇。
支持包括各種目標函數(shù),包括回歸,分類和排序。
關(guān)于XGBoost最有趣的事情之一是,它也被稱為正則化增強技術(shù)。這有助于減少過度擬合建模,并對Scala,Java,R,Python,Julia和C ++等一系列語言提供強大的支持。
支持在包含GCE,AWS,Azure和Yarn集群的許多機器上進行分布式和廣泛的訓練。XGBoost還可以與Spark,F(xiàn)link和其他云數(shù)據(jù)流系統(tǒng)集成,并在每次升級過程中進行內(nèi)置交叉驗證。
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)
對測試數(shù)據(jù)進行預測y_pred = model.predict(X_test)
10.3 LightGBMLightGBM是一種使用基于樹的學習算法的梯度增強框架。它被設(shè)計成為分布式和具有高效性,有以下優(yōu)點,:
更快的培訓速度和更高的效率
降低內(nèi)存使用
更準確的精度
支持并行和GPU學習
能夠處理大規(guī)模數(shù)據(jù)
該框架是一種基于決策樹算法,快速高性能的梯度增強框架,,用于排序,分類和許多其他機器學習任務。它是在Microsoft的分布式機器學習工具包項目下開發(fā)的。
由于LightGBM基于決策樹算法,因此它以最佳擬合分割樹葉,而其他提升算法則以深度或水平方向分割而不是樹葉方向分割。因此,當在Light GBM中生長在相同的葉子上時,葉子算法可以比水平算法減少更多的損失,因此導致更好的精度,這是任何現(xiàn)有的增強算法都很難實現(xiàn)的。
而且,它非常的快,因此才有了“Light”這個詞。
Python代碼:
data = np.random.rand(500, 10) # 500個實體,每個包含10個特性
label = np.random.randint(2, size=500) #二進制目標
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個實體,每個包含10個特性data = np.random.rand(7, 10)
ypred = bst.predict(data)
CatBoost是Yandex最近開發(fā)的一種開源的機器學習算法。它可以輕松地與Google的TensorFlow和Apple的Core ML等深度學習框架進行集成。
關(guān)于CatBoost最好的優(yōu)點是它不像其他ML模型那樣需要大量的數(shù)據(jù)訓練,并且可以處理各種數(shù)據(jù)格式; 并不會削弱它的強大能力。
但是在Catboost之前,請確保已妥善處理好缺失的數(shù)據(jù)了。
Catboost可以在不顯示類型轉(zhuǎn)換錯誤的情況下自動處理分類變量,這有助于您專注于更好地優(yōu)化模型,而不是整理出瑣碎的錯誤。
Python代碼:
import pandas as pd
import numpy as np
from catboost import CatBoostRegressor
讀取訓練集和測試集的文件train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
train.fillna(-999, inplace=True)
test.fillna(-999,inplace=True)
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]
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)
到目前為止,我相信,你已經(jīng)了解這些常用的機器學習算法。如果您熱衷于掌握機器學習,請立即開始處理問題,通過對問題進行處理,并應用這些代碼,那你肯定會感到興趣,然后在機器學習這條道路上走下去!
Essentials of Machine Learning Algorithms (with Python and R Codes)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43711.html
摘要:在這里我分享下我個人入門機器學習的經(jīng)歷,希望能對大家能有所幫助。相關(guān)學習鏈接,,入門后的體驗在入門了機器學習之后,在實際工作中,絕大多數(shù)的情況下你并不需要去創(chuàng)造一個新的算法。 機器學習在很多眼里就是香餑餑,因為機器學習相關(guān)的崗位在當前市場待遇不錯,但同時機器學習在很多人面前又是一座大山,因為發(fā)現(xiàn)它太難學了。在這里我分享下我個人入門機器學習的經(jīng)歷,希望能對大家能有所幫助。 PS:這篇文章...
馬上就要開始啦這次共組織15個組隊學習 涵蓋了AI領(lǐng)域從理論知識到動手實踐的內(nèi)容 按照下面給出的最完備學習路線分類 難度系數(shù)分為低、中、高三檔 可以按照需要參加 - 學習路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
閱讀 3254·2023-04-25 20:35
閱讀 3613·2019-08-30 15:54
閱讀 1993·2019-08-30 15:43
閱讀 2183·2019-08-29 15:14
閱讀 1890·2019-08-29 11:17
閱讀 3382·2019-08-26 13:36
閱讀 696·2019-08-26 10:15
閱讀 2838·2019-08-23 15:41