一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

一文了解機器學習知識點及其算法(附python代碼)

 timtxu 2017-06-20

老師,我建議你多掛點人

如果不讓小明通過答辯,他會不會跳樓?

這個社會在極嚴厲的懲罰不讀書的人

寒門如何出貴子

機器學習發(fā)展到現(xiàn)在,已經(jīng)形成較為完善的知識體系,同時大量的數(shù)據(jù)科學家的研究成果也讓現(xiàn)實問題的處理有了相對成熟的應對算法。

所以對于一般的機器學習來說,解決問題的方式變的非常簡單:熟悉這些基本的算法,并且遇到實際的問題能夠系統(tǒng)地運用這些思想來解決。

這篇文章將對機器學習算法進行分類的詳細描述,并介紹幾個常用的機器學習算法(附python代碼),這些足夠解決平時的大多數(shù)問題。

回歸算法(Regression Algorithms)

回歸是關(guān)注變量之間關(guān)系的建模,利用模型預測誤差測量進行反復提煉。回歸方法是統(tǒng)計工作,已納入統(tǒng)計機器學習。這可能是令人困惑,因為我們可以用回歸來引用各類的問題及各類算法,回歸其實是一個過程。

普通最小二乘法 Ordinary Least Squares

邏輯回歸 Logistic Regression

逐步回歸 Stepwise Regression

多元自適應回歸 MARS

局部散點平滑估計 LOESS

基于實例的方法(Instance-based Algorithms)

基于實例的學習模型是使用那些對于模型很重要訓練數(shù)據(jù),這類方法通常使用基于示例數(shù)據(jù)的數(shù)據(jù)庫,用新數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù)以一種相似度方式從中找到最佳匹配,從而作出預測。出于這個原因,基于實例的方法也被稱為贏家通吃所有的方法和基于記憶的學習。重點放在存儲實例之間的相似性度量表現(xiàn)上。

k最鄰近算法 k-Nearest Neighbour ,kNN

學習矢量量化 Learning Vector Quantization ,LVQ

自組織映射 Self-Organizing Map ,SOM

局部加權(quán)學習 Locally Weighted Learning ,LWL

正則化方法(regularization Algorithms)

正則化方法是其他算法(回歸算法)的延伸,根據(jù)算法的復雜度對算法進行調(diào)整。正則化方法通常對簡單模型予以獎勵而對復雜算法予以懲罰?;谡齽t化方法的擴展 (典型是基于regression回歸方法) 可能比較復雜,越簡單可能會利于推廣,下面列出的正則化方法是因為它們比較流行 強大簡單。

嶺回歸數(shù)值計算方法 Ridge Regression

至少絕對的收縮和選擇算子 LASSO

彈性網(wǎng)絡 Elastic Net

決策樹算法(Decision Tree Algorithms)

決策樹方法是建立一種基于數(shù)據(jù)的實際屬性值的決策模型。決策使用樹型結(jié)構(gòu)直至基于一個給定記錄的預測決策得到。決策樹的訓練是在分類和回歸兩方面的數(shù)據(jù)上進行的。

分類回歸樹 Classification and Regression Tree ,CART

迭代二叉樹3代 Iterative Dichotomiser 3 ,ID3

卡方自動交互檢測 CHAID

多元自適應回歸樣條 MARS

梯度推進機 Gradient Boosting Machines ,GBM

單層決策樹 Decision Stump

貝葉斯方法(Bayesian Algorithms)

貝葉斯分析方法(Bayesian Analysis)提供了一種計算假設(shè)概率的方法,這種方法是基于假設(shè)的先驗概率、給定假設(shè)下觀察到不同數(shù)據(jù)的概率以及觀察到的數(shù)據(jù)本身而得出的。其方法為,將關(guān)于未知參數(shù)的先驗信息與樣本信息綜合,再根據(jù)貝葉斯公式,得出后驗信息,然后根據(jù)后驗信息去推斷未知參數(shù)的方法。

樸素貝葉斯 Naive Bayes

平均單依賴估計 AODE

貝葉斯置信網(wǎng)絡 Bayesian Belief Network ,BBN

內(nèi)核方法(Kernel Methods)

最有名的當屬支持向量機的方法, 內(nèi)核方法更關(guān)注將數(shù)據(jù)映射到高維空間向量,在那里可以進行一些分類或回歸問題的建模。

支持向量機 Support Vector Machines ,SVM

徑向基函數(shù) Radial Basis Function ,RBF

線性鑒別分析 Linear Discriminate Analysis ,LDA

聚類算法(Clustering Algorithms)

聚類方法, 類似回歸,是屬于描述問題和方法的類別,聚集方法通常被建模于基于幾何中心centroid-based和層次組織等系統(tǒng)。所有的方法都是有關(guān)使用數(shù)據(jù)中固有的結(jié)構(gòu),這樣以便更好將數(shù)據(jù)組織為存在最大共性的分組。

聚類類似于分類,但與分類的目的不同,是針對數(shù)據(jù)的相似性和差異性將一組數(shù)據(jù)分為幾個類別。屬于同一類別的數(shù)據(jù)間的相似性很大,但不同類別之間數(shù)據(jù)的相似性很小,跨類的數(shù)據(jù)關(guān)聯(lián)性很低。

k-Means聚類方法

期望最大化算法 Expectation Maximisation ,EM

關(guān)聯(lián)規(guī)則學習(Association Rule Learning)

關(guān)聯(lián)規(guī)則的學習方法是提取那些能解釋觀察到的變量之間的數(shù)據(jù)關(guān)系的規(guī)則。這些規(guī)則可以用于在大型多維數(shù)據(jù)集里,以便能發(fā)現(xiàn)重要的和商業(yè)上對某個組織或公司有用的的關(guān)聯(lián)。

關(guān)聯(lián)規(guī)則的挖掘過程主要包括兩個階段:第一階段為從海量原始數(shù)據(jù)中找出所有的高頻項目組;第二極端為從這些高頻項目組產(chǎn)生關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則挖掘技術(shù)已經(jīng)被廣泛應用于金融行業(yè)企業(yè)中用以預測客戶的需求,各銀行在自己的ATM 機上通過捆綁客戶可能感興趣的信息供用戶了解并獲取相應信息來改善自身的營銷

Apriori 算法

Eclat 算法

人工神經(jīng)網(wǎng)絡(Artificial Neural Network)

人工神經(jīng)網(wǎng)絡模型的靈感來自于生物神經(jīng)網(wǎng)絡的結(jié)構(gòu)和功能。他們是一類的模式匹配,常用于回歸和分類問題。

神經(jīng)網(wǎng)絡作為一種先進的人工智能技術(shù),因其自身自行處理、分布存儲和高度容錯等特性非常適合處理非線性的以及那些以模糊、不完整、不嚴密的知識或數(shù)據(jù)為特征的處理問題,它的這一特點十分適合解決數(shù)據(jù)挖掘的問題。典型的神經(jīng)網(wǎng)絡模型主要分為三大類:第一類是以用于分類預測和模式識別的前饋式神經(jīng)網(wǎng)絡模型,其主要代表為函數(shù)型網(wǎng)絡、感知機;第二類是用于聯(lián)想記憶和優(yōu)化算法的反饋式神經(jīng)網(wǎng)絡模型,以Hopfield 的離散模型和連續(xù)模型為代表。第三類是用于聚類的自組織映射方法,以ART 模型為代表。雖然神經(jīng)網(wǎng)絡有多種模型及算法,但在特定領(lǐng)域的數(shù)據(jù)挖掘中使用何種模型及算法并沒有統(tǒng)一的規(guī)則,而且人們很難理解網(wǎng)絡的學習及決策過程

因為各種各樣的問題類型有數(shù)百種分支的算法。一些經(jīng)典的流行的方法:

感知器神經(jīng)網(wǎng)絡 Perceptron

反向傳播 Back-Propagation

霍普菲爾網(wǎng)絡 Hopfield Network

自組織映射 Self-Organizing Map ,SOM

學習矢量量化 Learning Vector Quantization ,LVQ

深度學習(Deep Learning)

深度學習方法是一個現(xiàn)代的人工神經(jīng)網(wǎng)絡方法升級版,利用豐富而又廉價的計算,建立更大和更復雜的神經(jīng)網(wǎng)絡,許多方法都是涉及半監(jiān)督學習(大型數(shù)據(jù)中包含很少有標記的數(shù)據(jù))。

受限波爾茲曼機 Restricted Boltzmann Machine ,RBM

深度置信網(wǎng)絡 Deep Belief Networks ,DBN

卷積神經(jīng)網(wǎng)絡 Convolutional Neural Network,CNN

堆棧式自動編碼器 Stacked Auto-encoders

類似群集clustering方法, 降維是尋求和利用數(shù)據(jù)的內(nèi)在結(jié)構(gòu),但在這種情況下,使用無監(jiān)督的方式只能較少的信息總結(jié)或描述數(shù)據(jù)。以監(jiān)督方式使用是有用的,能形成可視化的三維數(shù)據(jù)或簡化數(shù)據(jù)。

主成分分析 Principal Component Analysis ,PCA

偏最小二乘回歸 Partial Least Squares Regression ,PLS

薩蒙映射 Sammon Mapping

多維尺度 Multidimensional Scaling ,MDS

投影尋蹤 Projection Pursuit

由多個獨立訓練的弱模型組成,這些模型以某種方式結(jié)合進行整體預測。大量的精力需要投入學習什么弱類型以及它們的組合方式。這是一個非常強大的很受歡迎的技術(shù)類別:

Boosting/AdaBoost

自展輸入引導式聚合 Bootstrapped Aggregation

堆棧泛化 Stacked Generalization

梯度Boosting機器 Gradient Boosting Machines ,GBM

隨機森林 Random Forest

經(jīng)過上面的描述,機器學習的主流算法基本都已經(jīng)包括了。但是你肯定會想,這樣的分類是否真的科學?誠然,筆者并沒有找到完全科學的分類方式,按有無監(jiān)督的情況來進行分類似乎更準確一些。但是那只說明了算法本身的特征,而我們更需要的是從算法的功能用途來進行分類,這樣我們在遇到某一類問題時可以直接利用這些算法切入。

還有一些情況需要說明,比如支持向量機(SVM),既可以用于分類,也可用于回歸分析,很難歸于某一類。又比如一些具體的領(lǐng)域,如計算機視覺 (CV)、自然語言處理(NLP)、推薦系統(tǒng)等,復雜的實際情況更難使解決問題的算法歸于某一類,很可能是多種問題的集合。

這么多的算法,全部融會貫通真的是一件極其困難的事情,就算你全部掌握,也很難在具體問題中做出選擇。而對于實際的問題的處理,目前都有了主流的方法,以下10種算法是現(xiàn)在最流行的機器學習算法(含python代碼),幾乎可以解決絕大部分的問題。

1.線性回歸 Linear Regression

線性回歸是利用連續(xù)性變量來估計實際數(shù)值(例如房價,呼叫次數(shù)和總銷售額等)。我們通過線性回歸算法找出自變量和因變量間的最佳線性關(guān)系,圖形上可以確定一條最佳直線。這條最佳直線就是回歸線。這個回歸關(guān)系可以用Y=aX+b 表示。

Python 代碼:

#Import Library

#Import other necessary libraries like pandas, numpy...

from sklearn import linear_model

#Load Train and Test datasets

#Identify feature and response variable(s) and values must be numeric and numpy arrays

x_train=input_variables_values_training_datasets

y_train=target_variables_values_training_datasets

x_test=input_variables_values_test_datasets

# Create linear regression object

linear = linear_model.LinearRegression

# Train the model using the training sets and check score

linear.fit(x_train, y_train)

linear.score(x_train, y_train)

#Equation coefficient and Intercept

print('Coefficient: \n', linear.coef_)

print('Intercept: \n', linear.intercept_)

#Predict Output

predicted= linear.predict(x_test)

2.邏輯回歸 Logistic Regression

邏輯回歸其實是一個分類算法而不是回歸算法。通常是利用已知的自變量來預測一個離散型因變量的值(像二進制值0/1,是/否,真/假)。簡單來說,它就是通過擬合一個邏輯函數(shù)來預測一個事件發(fā)生的概率。所以它預測的是一個概率值,它的輸出值應該在0到1之間。

Python 代碼:

#Import Library

from sklearn.linear_model import LogisticRegression

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create logistic regression object

model = LogisticRegression

# Train the model using the training sets and check score

model.fit(X, y)

model.score(X, y)

#Equation coefficient and Intercept

print('Coefficient: \n', model.coef_)

print('Intercept: \n', model.intercept_)

#Predict Output

predicted= model.predict(x_test)

3.決策樹 Decision Tree

既可以運用于類別變量(categorical variables)也可以作用于連續(xù)變量。這個算法可以讓我們把一個總體分為兩個或多個群組。分組根據(jù)能夠區(qū)分總體的最重要的特征變量/自變量進行。

Python 代碼:

#Import Library

#Import other necessary libraries like pandas, numpy...

from sklearn import tree

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create tree object

model = tree.DecisionTreeClassifier(criterion='gini') # for classification, here you can change the algorithm as gini or entropy (information gain) by default it is gini

# model = tree.DecisionTreeRegressor for regression

# Train the model using the training sets and check score

model.fit(X, y)

model.score(X, y)

#Predict Output

predicted= model.predict(x_test)

4.支持向量機 SVM

給定一組訓練樣本,每個標記為屬于兩類,一個SVM訓練算法建立了一個模型,分配新的實例為一類或其他類,使其成為非概率二元線性分類。一個SVM模型的例子,如在空間中的點,映射,使得所述不同的類別的例子是由一個明顯的差距是盡可能寬劃分的表示。新的實施例則映射到相同的空間中,并預測基于它們落在所述間隙側(cè)上屬于一個類別。

Python 代碼:

#Import Library

from sklearn import svm

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create SVM classification object

model = svm.svc # there is various option associated with it, this is simple for classification. You can refer link, for mo# re detail.

# Train the model using the training sets and check score

model.fit(X, y)

model.score(X, y)

#Predict Output

predicted= model.predict(x_test)

5.樸素貝葉斯 Naive Bayes

樸素貝葉斯的思想基礎(chǔ)是這樣的:對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就認為此待分類項屬于哪個類別。

Python 代碼:

#Import Library

from sklearn.naive_bayes import GaussianNB

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create SVM classification object model = GaussianNB # there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)

6.K鄰近算法 KNN

這個算法既可以解決分類問題,也可以用于回歸問題,但工業(yè)上用于分類的情況更多。 KNN先記錄所有已知數(shù)據(jù),再利用一個距離函數(shù),找出已知數(shù)據(jù)中距離未知事件最近的K組數(shù)據(jù),最后按照這K組數(shù)據(jù)里最常見的類別預測該事件。

Python 代碼:

#Import Library

from sklearn.neighbors import KNeighborsClassifier

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create KNeighbors classifier object model

KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)

7.K-均值算法 K-means

首先從n個數(shù)據(jù)對象任意選擇 k 個對象作為初始聚類中心;而對于所剩下其它對象,則根據(jù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然 后再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復這一過程直到標準測度函數(shù)開始收斂為止。

Python 代碼:

#Import Library

from sklearn.cluster import KMeans

#Assumed you have, X (attributes) for training data set and x_test(attributes) of test_dataset

# Create KNeighbors classifier object model

k_means = KMeans(n_clusters=3, random_state=0)

# Train the model using the training sets and check score

model.fit(X)

#Predict Output

predicted= model.predict(x_test)

8.隨機森林 Random Forest

隨機森林是對決策樹集合的特有名稱。隨機森林里我們有多個決策樹(所以叫“森林”)。為了給一個新的觀察值分類,根據(jù)它的特征,每一個決策樹都會給出一個分類。隨機森林算法選出投票最多的分類作為分類結(jié)果。

Python 代碼:

#Import Library

from sklearn.ensemble import RandomForestClassifier

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create Random Forest object

model= RandomForestClassifier

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)

9.降維算法 Dimensionality Reduction Algorithms

我們手上的數(shù)據(jù)有非常多的特征。雖然這聽起來有利于建立更強大精準的模型,但它們有時候反倒也是建模中的一大難題。怎樣才能從1000或2000個變量里找到最重要的變量呢?這種情況下降維算法及其他算法,如決策樹,隨機森林,PCA,因子分析,相關(guān)矩陣,和缺省值比例等,就能幫我們解決難題。

Python 代碼:

#Import Library

from sklearn import decomposition

#Assumed you have training and test data set as train and test

# Create PCA obeject pca= decomposition.PCA(n_components=k) #default value of k =min(n_sample, n_features)

# For Factor analysis

#fa= decomposition.FactorAnalysis

# Reduced the dimension of training dataset using PCA

train_reduced = pca.fit_transform(train)

#Reduced the dimension of test dataset

test_reduced = pca.transform(test)

10.Gradient Boost/Adaboost算法

GBM和AdaBoost都是在有大量數(shù)據(jù)時提高預測準確度的boosting算法。Boosting是一種集成學習方法。它通過有序結(jié)合多個較弱的分類器/估測器的估計結(jié)果來提高預測準確度。這些boosting算法在DataCastke 、Kaggle等數(shù)據(jù)科學競賽中有出色發(fā)揮。

Python 代碼:

#Import Library

from sklearn.ensemble import GradientBoostingClassifier

#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

# Create Gradient Boosting Classifier object

model= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)

# Train the model using the training sets and check score

model.fit(X, y)

#Predict Output

predicted= model.predict(x_test)


-END-

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    91天堂免费在线观看| 久久热在线免费视频精品| 精品人妻精品一区二区三区| 中文字幕日韩一区二区不卡| 亚洲欧美日本视频一区二区| 日本欧美视频在线观看免费| 日本人妻的诱惑在线观看| 国产日本欧美特黄在线观看| 日本加勒比在线观看一区| 人人妻在人人看人人澡| 91日韩欧美在线视频| 国内外免费在线激情视频| 日本少妇中文字幕不卡视频| 日本午夜乱色视频在线观看| 国产午夜精品美女露脸视频| 中文字幕人妻综合一区二区 | 色丁香一区二区黑人巨大| 国产又大又黄又粗的黄色| 日韩人妻一区二区欧美| 日韩精品一区二区毛片 | 亚洲中文字幕在线乱码av| 经典欧美熟女激情综合网| 欧美日韩国内一区二区| 最新日韩精品一推荐日韩精品| 国产级别精品一区二区视频| 亚洲精品国男人在线视频| 日韩精品一区二区三区含羞含羞草| 一区二区三区亚洲天堂| 丝袜人妻夜夜爽一区二区三区| 欧美国产日产在线观看| 最近中文字幕高清中文字幕无| 久久中文字幕中文字幕中文| 黄色激情视频中文字幕| 青青草草免费在线视频| 精品少妇一区二区三区四区| 国产精品亚洲一区二区| 久久亚洲精品成人国产| 丰满人妻一二三区av| 91精品国产综合久久不卡| 国产精品日韩欧美第一页| 白白操白白在线免费观看 |