1. 程式人生 > >python機器學習庫的使用

python機器學習庫的使用

常見機器學習演算法名單
1.線性迴歸
線性迴歸通常用於根據連續變數估計實際數值(房價、呼叫次數、總銷售額等)。我們通過擬合最佳直線來建立自變數和因變數的關係。這條最佳直線叫做迴歸線,並且用 Y= a *X + b 這條線性等式來表示。
理解線性迴歸的最好辦法是回顧一下童年。假設在不問對方體重的情況下,讓一個五年級的孩子按體重從輕到重的順序對班上的同學排序,你覺得這個孩子會怎麼做?他(她)很可能會目測人們的身高和體型,綜合這些可見的引數來排列他們。這是現實生活中使用線性迴歸的例子。實際上,這個孩子發現了身高和體型與體重有一定的關係,這個關係看起來很像上面的等式。
在這個等式中:Y:因變數 a:斜率 x:自變數  b :截距
係數 a 和 b 可以通過最小二乘法獲得。線性迴歸的兩種主要型別是一元線性迴歸和多元線性迴歸。一元線性迴歸的特點是隻有一個自變數。多元線性迴歸的特點正如其名,存在多個自變數。找最佳擬合直線的時候,你可以擬合到多項或者曲線迴歸。這些就被叫做多項或曲線迴歸
Python 程式碼
from sklearn import linear_model
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()
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.邏輯迴歸
別被它的名字迷惑了!這是一個分類演算法而不是一個迴歸演算法。該演算法可根據已知的一系列因變數估計離散數值(比方說二進位制數值 0 或 1 ,是或否,真或假)。簡單來說,它通過將資料擬合進一個邏輯函式來預估一個事件出現的概率。因此,它也被叫做邏輯迴歸。因為它預估的是概率,所以它的輸出值大小在 0 和 1 之間(正如所預計的一樣)。
讓我們再次通過一個簡單的例子來理解這個演算法。
假設你的朋友讓你解開一個謎題。這隻會有兩個結果:你解開了或是你沒有解開。想象你要解答很多道題來找出你所擅長的主題。這個研究的結果就會像是這樣:假設題目是一道十年級的三角函式題,你有 70%的可能會解開這道題。然而,若題目是個五年級的歷史題,你只有30%的可能性回答正確。這就是邏輯迴歸能提供給你的資訊。
從數學上看,在結果中,機率的對數使用的是預測變數的線性組合模型。
odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence
ln(odds) = ln(p/(1-p))
logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk
p 是我們感興趣的特徵出現的概率。
Python程式碼
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
model.score(X, y)
print('Coefficient: n', model.coef_)
print('Intercept: n', model.intercept_)
predicted= model.predict(x_test)
3.決策樹
這個監督式學習演算法通常被用於分類問題。令人驚奇的是,它同時適用於分類變數和連續因變數。在這個演算法中,我們將總體分成兩個或更多的同類群。這是根據最重要的屬性或者自變數來分成儘可能不同的組別
Python程式碼
from sklearn import tree
 model = tree.DecisionTreeClassifier(criterion='gini') 
model.fit(X, y)
model.score(X, y)
predicted= model.predict(x_test)


4.SVM
大名鼎鼎的SVM,想必大家都很熟悉了吧。這是一種分類方法。在這個演算法中,我們將每個資料在N維空間中用點標出(N是你所有的特徵總數),每個特徵的值是一個座標的值。
Python程式碼
from sklearn import svm
tor) and Y (target) for training data set and x_test(predictor) of test_dataset
model = svm.svc() 
model.fit(X, y)
model.score(X, y)
predicted= model.predict(x_test)
5.樸素貝葉斯
在預示變數間相互獨立的前提下,根據貝葉斯定理可以得到樸素貝葉斯這個分類方法。用更簡單的話來說,一個樸素貝葉斯分類器假設一個分類的特性與該分類的其它特性不相關。樸素貝葉斯模型易於建造,且對於大型資料集非常有用。雖然簡單,但是樸素貝葉斯的表現卻超越了非常複雜的分類方法。
Python程式碼
from sklearn.naive_bayes import GaussianNB
model.fit(X, y)
predicted= model.predict(x_test)
6.K最近鄰演算法
該演算法可用於分類問題和迴歸問題。然而,在業界內,K – 最近鄰演算法更常用於分類問題。K – 最近鄰演算法是一個簡單的演算法。它儲存所有的案例,通過周圍k個案例中的大多數情況劃分新的案例。根據一個距離函式,新案例會被分配到它的 K 個近鄰中最普遍的類別中去。這些距離函式可以是歐式距離、曼哈頓距離、明式距離或者是漢明距離。前三個距離函式用於連續函式,第四個函式(漢明函式)則被用於分類變數。如果 K=1,新案例就直接被分到離其最近的案例所屬的類別中。有時候,使用 KNN 建模時,選擇 K 的取值是一個挑戰。
Python程式碼
from sklearn.neighbors import KNeighborsClassifier
KNeighborsClassifier(n_neighbors=6) 
model.fit(X, y)
predicted= model.predict(x_test)


7.K均值演算法
K – 均值演算法是一種非監督式學習演算法,它能解決聚類問題。使用 K – 均值演算法來將一個數據歸入一定數量的叢集(假設有 k 個叢集)的過程是簡單的。一個叢集內的資料點是均勻齊次的,並且異於別的叢集。
K – 均值演算法給每個叢集選擇k個點。這些點稱作為質心。每一個數據點與距離最近的質心形成一個叢集,也就是 k 個叢集。根據現有的類別成員,找出每個類別的質心。現在我們有了新質心。當我們有新質心後,重複步驟 2 和步驟 3。找到距離每個資料點最近的質心,並與新的k叢集聯絡起來。重複這個過程,直到資料都收斂了,也就是當質心不再改變。
K – 均值演算法涉及到叢集,每個叢集有自己的質心。一個叢集內的質心和各資料點之間距離的平方和形成了這個叢集的平方值之和。同時,當所有叢集的平方值之和加起來的時候,就組成了叢集方案的平方值之和。
我們知道,當叢集的數量增加時,K值會持續下降。但是,如果你將結果用圖表來表示,你會看到距離的平方總和快速減少。到某個值 k 之後,減少的速度就大大下降了。在此,我們可以找到叢集數量的最優值。
Python程式碼
from sklearn.cluster import KMeans
k_means = KMeans(n_clusters=3, random_state=0)
model.fit(X)
predicted= model.predict(x_test)
8.隨機森林演算法
隨機森林是表示決策樹總體的一個專有名詞。在隨機森林演算法中,我們有一系列的決策樹(因此又名“森林”)。為了根據一個新物件的屬性將其分類,每一個決策樹有一個分類,稱之為這個決策樹“投票”給該分類。這個森林選擇獲得森林裡(在所有樹中)獲得票數最多的分類。
每棵樹是像這樣種植養成的:如果訓練集的案例數是 N,則從 N 個案例中用重置抽樣法隨機抽取樣本。這個樣本將作為“養育”樹的訓練集。假如有 M 個輸入變數,則定義一個數字 m<<M。m 表示,從 M 中隨機選中 m 個變數,這 m 個變數中最好的切分會被用來切分該節點。在種植森林的過程中,m 的值保持不變。儘可能大地種植每一棵樹,全程不剪枝。
Python程式碼
library(randomForest)
x <- cbind(x_train,y_train)
fit <- randomForest(Species ~ ., x,ntree=500)
summary(fit)
predicted= predict(fit,x_test)
9.降維演算法
Python程式碼
from sklearn import decomposition
train_reduced = pca.fit_transform(train)
 test_reduced = pca.transform(test)
10.Gradient Boost 和 Adaboost 演算法
當我們要處理很多資料來做一個有高預測能力的預測時,我們會用到 GBM 和 AdaBoost 這兩種 boosting 演算法。boosting 演算法是一種整合學習演算法。它結合了建立在多個基礎估計值基礎上的預測結果,來增進單個估計值的可靠程度。這些 boosting 演算法通常在資料科學比賽如 Kaggl、AV Hackathon、CrowdAnalytix 中很有效。
Python程式碼
from sklearn.ensemble import GradientBoostingClassifier
model= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)
model.fit(X, y)
predicted= model.predict(x_test)