免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

一文了解機(jī)器學(xué)習(xí)知識點(diǎn)及其算法(附python代碼)

 timtxu 2017-06-20

老師,我建議你多掛點(diǎn)人

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

這個社會在極嚴(yán)厲的懲罰不讀書的人

寒門如何出貴子

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

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

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

回歸算法(Regression Algorithms)

回歸是關(guān)注變量之間關(guān)系的建模,利用模型預(yù)測誤差測量進(jìn)行反復(fù)提煉?;貧w方法是統(tǒng)計(jì)工作,已納入統(tǒng)計(jì)機(jī)器學(xué)習(xí)。這可能是令人困惑,因?yàn)槲覀兛梢杂没貧w來引用各類的問題及各類算法,回歸其實(shí)是一個過程。

普通最小二乘法 Ordinary Least Squares

邏輯回歸 Logistic Regression

逐步回歸 Stepwise Regression

多元自適應(yīng)回歸 MARS

局部散點(diǎn)平滑估計(jì) LOESS

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

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

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

學(xué)習(xí)矢量量化 Learning Vector Quantization ,LVQ

自組織映射 Self-Organizing Map ,SOM

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

正則化方法(regularization Algorithms)

正則化方法是其他算法(回歸算法)的延伸,根據(jù)算法的復(fù)雜度對算法進(jìn)行調(diào)整。正則化方法通常對簡單模型予以獎勵而對復(fù)雜算法予以懲罰。基于正則化方法的擴(kuò)展 (典型是基于regression回歸方法) 可能比較復(fù)雜,越簡單可能會利于推廣,下面列出的正則化方法是因?yàn)樗鼈儽容^流行 強(qiáng)大簡單。

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

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

彈性網(wǎng)絡(luò) Elastic Net

決策樹算法(Decision Tree Algorithms)

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

分類回歸樹 Classification and Regression Tree ,CART

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

卡方自動交互檢測 CHAID

多元自適應(yīng)回歸樣條 MARS

梯度推進(jìn)機(jī) Gradient Boosting Machines ,GBM

單層決策樹 Decision Stump

貝葉斯方法(Bayesian Algorithms)

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

樸素貝葉斯 Naive Bayes

平均單依賴估計(jì) AODE

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

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

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

支持向量機(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ī)則學(xué)習(xí)(Association Rule Learning)

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

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

Apriori 算法

Eclat 算法

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

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

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

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

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

反向傳播 Back-Propagation

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

自組織映射 Self-Organizing Map ,SOM

學(xué)習(xí)矢量量化 Learning Vector Quantization ,LVQ

深度學(xué)習(xí)(Deep Learning)

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

受限波爾茲曼機(jī) Restricted Boltzmann Machine ,RBM

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

卷積神經(jīng)網(wǎng)絡(luò) 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

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

Boosting/AdaBoost

自展輸入引導(dǎo)式聚合 Bootstrapped Aggregation

堆棧泛化 Stacked Generalization

梯度Boosting機(jī)器 Gradient Boosting Machines ,GBM

隨機(jī)森林 Random Forest

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

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

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

1.線性回歸 Linear Regression

線性回歸是利用連續(xù)性變量來估計(jì)實(shí)際數(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

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

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

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.支持向量機(jī) SVM

給定一組訓(xùn)練樣本,每個標(biāo)記為屬于兩類,一個SVM訓(xùn)練算法建立了一個模型,分配新的實(shí)例為一類或其他類,使其成為非概率二元線性分類。一個SVM模型的例子,如在空間中的點(diǎn),映射,使得所述不同的類別的例子是由一個明顯的差距是盡可能寬劃分的表示。新的實(shí)施例則映射到相同的空間中,并預(yù)測基于它們落在所述間隙側(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àng),求解在此項(xiàng)出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就認(rèn)為此待分類項(xiàng)屬于哪個類別。

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ù)里最常見的類別預(yù)測該事件。

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ù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然 后再計(jì)算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復(fù)這一過程直到標(biāo)準(zhǔn)測度函數(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.隨機(jī)森林 Random Forest

隨機(jī)森林是對決策樹集合的特有名稱。隨機(jī)森林里我們有多個決策樹(所以叫“森林”)。為了給一個新的觀察值分類,根據(jù)它的特征,每一個決策樹都會給出一個分類。隨機(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ù)有非常多的特征。雖然這聽起來有利于建立更強(qiáng)大精準(zhǔn)的模型,但它們有時候反倒也是建模中的一大難題。怎樣才能從1000或2000個變量里找到最重要的變量呢?這種情況下降維算法及其他算法,如決策樹,隨機(jī)森林,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ù)時提高預(yù)測準(zhǔn)確度的boosting算法。Boosting是一種集成學(xué)習(xí)方法。它通過有序結(jié)合多個較弱的分類器/估測器的估計(jì)結(jié)果來提高預(yù)測準(zhǔn)確度。這些boosting算法在DataCastke 、Kaggle等數(shù)據(jù)科學(xué)競賽中有出色發(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)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多