機器學習算法的基本知識(使用Python和R代碼)

2020-11-26 電子產品世界

  本篇 文章 是 原文 的譯文,然後自己對其中做了一些修改和添加內容(隨機森林和降維算法)。文章簡潔地介紹了機器學習的主要算法和一些偽 代碼 ,對於 初學者 有很大幫助,是一篇不錯的 總結 文章,後期可以通過文中提到的算法展開去做一些實際問題。

本文引用地址:http://www.eepw.com.cn/article/201710/370117.htm

  引言

  Google 的自駕車和機器人得到了很多新聞,但公司的真正未來是機器學習,這種技術使計算機變得更 智能 ,更個性化。-Eric Schm id t (Google Chair man)

  我們可能生活在人類歷史上最具影響力的時期——計算從大型 主機 到PC移動到 雲 計算的時期。 但是使這段時期有意義的不是發生了什麼,而是在未來幾年裡我們的方式。

  這個時期令像我這樣的一個人興奮的就是,隨著計算機的推動,工具和技術的民主化。 今天,作為 數據科學 家,我可以每小時為幾個玩偶構建具有複雜算法的 數據 處理機。 但到達這裡並不容易,我已經度過了許多黑暗的日日夜夜。

  誰可以從本指南中獲益最多

  我今天發布的可能是我創造的最有價值的指南。

  創建本指南背後的理念是簡化全球有抱負的數據科學家和機器學習愛好者的旅程。 本指南能夠使你在研究機器學習問題的過程中獲取經驗。 我提供了關於各種機器學習算法以及R&Python代碼的高級理解以及運行它們,這些應該足以使你得心順手。

    

 

  machine learning

  我故意跳過了這些技術背後的 統計 數據,因為你不需要在開始時就了解它們。 所以,如果你正在尋找對這些算法的統計學理解,你應該看看別的文章。 但是,如果你正在尋找並開始構建機器學習項目,那麼這篇文章給你帶來極大好處。

  3類機器學習算法(廣義上)

  監督學習

  工作原理 :該算法由一組目標/結果變量(或因變量)組成,該變量將根據給定的一組預測變量(獨立變量)進行預測。 使用這些變量集,我們生成一個將輸入映射到所需輸出的函數。 訓練過程繼續進行執行,直到 模型 達到培訓數據所需的準確度水平。 監督學習的例子:回歸,決策樹,隨機森林,KNN,邏輯回歸等

  無監督學習

  如何工作:在這個算法中,我們沒有任何目標或結果變量來預測/估計。 用於不同群體的群體聚類和用於不同群體的客戶進行特定幹預。 無監督學習的例子:Apriori算法,K-means。

  加強學習:

  工作原理:使用這種算法,機器受到學習和訓練,作出具體決定。 它以這種方式工作:機器暴露在一個環境中,它連續不斷地使用試錯。 該機器從過去的經驗中學習,並嘗試捕獲最好的知識,以做出準確的業務決策。 加強學習示例:馬爾可夫決策過程

  常見機器學習算法

  以下是常用機器學習算法的列表。 這些算法幾乎可以應用於任何數據問題:

  線性回歸

  邏輯回歸

  決策樹

  SVM

  樸素貝葉斯

  KNN

  K-Means

  隨機森林

  降維算法

  Gradient Boost&Adaboost

  1.線性回歸

  它用於基於連續變量來估計實際價值(房屋成本,電話數量,總銷售額等)。在這裡,我們通過擬合最佳線來建立獨立變量和因變量之間的關係。這個最佳擬合線被稱為回歸線,由線性方程Y = a * X + b表示。

  理解線性回歸的最好方法是回想童年的經歷。比如,你要求五年級的孩子通過體重來從小到大排序班裡的 學生 ,而事先不告訴學生們的體重!你認為孩子會做什麼?他/她很可能在身高和體格上分析 人物 的體重,並使用這些可視 參數 的組合進行排列。這是現實生活中的線性回歸!孩子實際上已經弄清楚,身高和體格將有一個關係與體重相關聯,看起來就像上面的等式。

  在這個方程式中:

  Y-因變量

  a – 斜率

  X – 自變量

  b – 截距

  這些係數a和b是基於最小化數據點和回歸線之間的距離的平方差之和導出的。

  看下面的例子。這裡我們確定了線性方程y = 0.2811x + 13.9的最佳擬合線。現在使用這個方程,我們可以找到一個人(身高已知)的體重。

    

 

  線性回歸

  線性回歸主要有兩種類型:簡單線性回歸和多元線性回歸。 簡單線性回歸的特徵在於一個自變量。 而且,多元線性回歸(顧名思義)的特徵是多個(多於1個)自變量。 在找到最佳擬合線的同時,可以擬合多項式或曲線回歸線,這些被稱為多項式或曲線回歸。

  Python Code

  #Import Library

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

  from sklearn import linear_model

  import numpy as np

  #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

  x_train=np.random.rand(4,4)

  print(x_train)

  # y_train=target_variables_values_training_datasets

  y_train=np.random.rand(4,4)

  print(y_train)

  # x_test=input_variables_values_test_datasets

  x_test=np.random.rand(4,4)

  print(x_test)

  # 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)

  print('predicted:/n',predicted)

  [[ 0.98267731 0.23364069 0.35133775 0.92826309]

  [ 0.80538991 0.05637806 0.87662175 0.3960776 ]

  [ 0.54686738 0.6816495 0.99747716 0.32531085]

  [ 0.19189509 0.87105462 0.88158122 0.25056621]]

  [[ 0.55541608 0.56859636 0.40616234 0.14683524]

  [ 0.09937835 0.63874553 0.92062536 0.32798326]

  [ 0.87174236 0.779044 0.79119392 0.06912842]

  [ 0.87907434 0.53175367 0.01371655 0.11414196]]

  [[ 0.37568516 0.17267374 0.51647046 0.04774661]

  [ 0.38573914 0.85335136 0.11647555 0.0758696 ]

  [ 0.67559384 0.57535368 0.88579261 0.26278658]

  [ 0.13829782 0.28328756 0.51170484 0.04260013]]

  Coefficient:

  [[ 0.55158868 1.45901817 0.31224322 0.49538173]

  [ 0.6995448 0.40804135 0.59938423 0.09084578]

  [ 1.79010371 0.21674532 1.60972012 -0.046387 ]

  [-0.31562917 -0.53767439 -0.16141312 -0.2154683 ]]

  Intercept:

  [-0.89705102 -0.50908061 -1.9260686 0.83934127]

  predicted:

  [[-0.25297601 0.13808785 -0.38696891 0.53426883]

  [ 0.63472658 0.18566989 -0.86662193 0.22361739]

  [ 0.72181277 0.75309881 0.82170796 0.11715048]

  [-0.22656611 0.01383581 -0.79537442 0.55159912]]

  R Code

  #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

  x <- cbind(x_train,y_train)

  # Train the model using the training sets and check score

  linear <- lm(y_train ~ ., data = x)

  summary(linear)

  #Predict Output

  predicted= predict(linear,x_test)

  2.邏輯回歸

  不要因為它的名字而感到困惑,邏輯回歸是一個分類算法而不是回歸算法。它用於基於給定的一組自變量來估計離散值(二進位值,如0/1,是/否,真/假)。簡單來說,它通過將數據擬合到lo git 函數來預測事件發生的概率。因此,它也被稱為logit回歸。由於它預測概率,其輸出值在0和1之間(如預期的那樣)。

  再次,讓我們通過一個簡單的例子來嘗試理解這一點。

  假設你的朋友給你一個難題解決。只有2個結果場景 - 你能解決和不能解決。現在想像,你正在被許多猜謎或者簡單測驗,來試圖理解你擅長的科目。這項研究的結果將是這樣的結果 - 如果給你一個10級的三角形問題,那麼你有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是感興趣特徵的概率。 它選擇最大化觀察樣本值的可能性的參數,而不是最小化平方誤差的總和(如在普通回歸中)。

  現在,你可能會問,為什麼要採用log? 為了簡單起見,讓我們來說,這是複製階梯函數的最好的數學方法之一。 我可以進一步詳細介紹,但這將會打破這篇文章的目的。

    

 

  邏輯回歸

  Python Code

  #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)

  R Code

  x <- cbind(x_train,y_train)

  # Train the model using the training sets and check score

  logistic <- glm(y_train ~ ., data = x,family='binomial')

  summary(logistic)

  #Predict Output

  predicted= predict(logistic,x_test)

  3.決策樹

  這是我最喜歡的算法之一,我經常使用它。 它是一種主要用於分類問題的監督學習算法,令人驚訝的是,它可以適用於分類和連·續因變量。 在該算法中,我們將群體分為兩個或多個均勻集合。 這是基於最重要的屬性/自變量來做出的並將它們分為不同的組。關於決策樹的更多細節,你可以閱讀決策樹簡介

    

 

  決策樹

  在上圖中,您可以看到根據多個屬性將群體分為四個不同的群組,以確定用戶「是否可以玩」。為了 將人口分為不同的特徵群體,它使用了諸如Gini,信息增益,卡方,熵等各種技術。

    

 

  JezzBall

  了解決策樹如何運作的最佳方法是播放Jezzball - 微軟 的經典遊戲(下圖)。 大體上就是,來一起在屏幕上滑動手指,築起牆壁,掩住移動的球吧。

  Python Code

  #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)

  R Code

  library(rpart)

  x <- cbind(x_train,y_train)

  # grow tree

  fit <- rpart(y_train ~ ., data = x,method="class")

  summary(fit)

  #Predict Output

  predicted= predict(fit,x_test)

  4.SVM(支持向量機)

  這是一種分類方法。 在這個算法中,我們將每個數據項目繪製為n維 空間 中的一個點(其中n是擁有的特徵數),每個特徵的值是特定坐標的值。

  例如,如果我們有一個人的「高度」和「頭髮長度」這兩個特徵,我們首先將這兩個變量繪製在二維空間中,其中每個點都有兩個坐標(這些坐標稱為支持向量)

    

 

  支持向量機

  現在,我們將找到一些可以將數據分割成兩類的線。 而我們想要的線,就是使得兩組數據中最近點到分割線的距離最長的線。

    

 

  最佳分割 直線

  在上述示例中,將數據分成兩個不同分類的組的線是黑線,因為兩個最接近的點距離線最遠(紅線也可以,但不是一最遠)。 這條線是我們的分類器, 然後根據 測試 數據位於線路兩邊的位置,我們可以將新數據分類為什麼類別。

  Python Code

  #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)

  R Code

  library(e1071)

  x <- cbind(x_train,y_train)

  # Fitting model

  fit <-svm(y_train ~ ., data = x)

  summary(fit)

  #Predict Output

  predicted= predict(fit,x_test)

  5. 樸素貝葉斯

  它是基於貝葉斯定理的分類技術,假設預測因子之間是獨立的。 簡單來說,樸素貝葉斯分類器假設類中特定特徵的存在與任何其他特徵的存在無關。 例如,如果果實是紅色,圓形,直徑約3英寸,則果實可能被認為是 蘋果 。 即使這些特徵依賴於彼此或其他特徵的存在,一個樸素的貝葉斯分類器將考慮的是所有屬性來單獨地貢獻這個果實是蘋果的概率。

  樸素貝葉斯模型易於構建,對於非常大的數據集尤其有用。 除了簡單之外,樸素貝葉斯也被稱為超高級分類方法。

  貝葉斯定理提供了一種由P(c),P(x)和P(x | c)計算概率P(c | x)的方法。 看下面的等式

    

 

  樸素貝葉斯

  其中:

  P(c | x)是在x條件下c發生的概率。

  P(c)是c發生的概率。

  P(x | c)在c條件下x發生的概率。

  P(x)是x發生的概率。

  示例:

  讓我們用一個例子來理解它。 下面我有一個天氣和相應的目標變量「玩遊戲」的訓練數據集。 現在,我們需要根據天氣條件對玩家是否玩遊戲進行分類。 我們按照以下步驟執行。

  步驟1:將數據集轉換為頻率表

  步驟2:通過發現像「Overcast」概率= 0.29和播放概率為0.64的概率來創建似然表。

    

 

  例子

  步驟3:現在,使用樸素貝葉斯方程來計算每個類的概率。 其中概率最高的情況就是是預測的結果。

  問題:

  如果天氣晴朗,玩家會玩遊戲,這個說法是正確的嗎?

  我們可以使用上述方法解決,所以P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)

  這裡,P(Sunny | Yes)= 3/9 = 0.33,P(Sunny)= 5/14 = 0.36,P(Yes)= 9/14 = 0.64

  現在,P(Yes | Sunny)= 0.33 * 0.64 / 0.36 = 0.60,該事件發生的概率還是比較高的。

  樸素貝葉斯使用類似的方法根據各種屬性預測不同分類的概率,該算法主要用於文本分類和具有多個類的問題。

  Python Code

  #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)

  R Code

  library(e1071)

  x <- cbind(x_train,y_train)

  # Fitting model

  fit <-naiveBayes(y_train ~ ., data = x)

  summary(fit)

  #Predict Output

  predicted= predict(fit,x_test)

  6. KNN (K-近鄰算法)

  它可以用於分類和回歸問題, 然而,它在行業中被廣泛地應用於分類問題。 K-近鄰算法用於存儲所有訓練樣本集(所有已知的案列),並通過其k個鄰近數據多數投票對新的數據(或者案列)進行分類。通常,選擇k個最近鄰數據中出現次數最多的分類作為新數據的分類。

  這些計算機的距離函數可以是歐幾裡德,曼哈頓,閔可夫斯基和漢明距離。 前三個函數用於連續函數,第四個函數用於分類變量。 如果K = 1,則簡單地將該情況分配給其最近鄰的類。 有時,選擇K在執行KNN建模時是一個難點。

    

 

  K-近鄰算法

  KNN可以輕鬆映射到我們的現實生活中。 如果你想了解一個人,你沒有任何信息,你可能想知道先去了解他的親密的朋友和他活動的圈子,從而獲得他/她的信息!

  選擇KNN之前要考慮的事項:

  KNN在計算上是昂貴的

  變量應該被歸一化,否則更高的範圍變量可以偏移它

  在進行KNN之前,預處理階段的工作更像去除離群值、噪聲值

  Python Code

  #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)

  R Code

  library(knn)

  x <- cbind(x_train,y_train)

  # Fitting model

  fit <-knn(y_train ~ ., data = x,k=5)

  summary(fit)

  #Predict Output

  predicted= predict(fit,x_test)

  7. K-Means

  它是解決聚類問題的一種無監督算法。 其過程遵循一種簡單而簡單的方式,通過一定數量的聚類(假設k個聚類)對給定的數據集進行分類。 集群 內的數據點與對等組是同構的和異構的。

  嘗試從油墨印跡中找出形狀?(見下圖) k means 與這個活動相似, 你通過墨水漬形狀來判斷有多少群體存在!

    

 

  K-Means

  下面兩點感覺原文解釋的不是很清楚,自己然後查了下國內的解釋方法

  K-means如何形成集群

  (1) 從 n個數據對象任意選擇 k 個對象作為初始聚類中心;

  (2) 根據每個聚類對象的均值(中心對象),計算每個對象與這些中心對象的距離;並根據最小距離重新對相應對象進行劃分;

  (3) 重新計算每個(有變化)聚類的均值(中心對象)

  (4) 循環(2)到(3)直到每個聚類不再發生變化為止參考

  例子

  K-Means例子

  從上圖中,我們可以看到,A,B,C,D,E是五個在圖中點。而灰色的點是我們的種子點,也就是我們用來找點群的點。有兩個種子點,所以K=2。

  然後,K-Means的算法如下:

  隨機在圖中取K(這裡K=2)個種子點。

  然後對圖中的所有點求到這K個種子點的距離,假如點Pi離種子點Si最近,那麼Pi屬於Si點群。(上圖中,我們可以看到A,B屬於上面的種子點,C,D,E屬於下面中部的種子點)

  接下來,我們要移動種子點到屬於他的「點群」的中心。(見圖上的第三步)

  然後重複第2)和第3)步,直到,種子點沒有移動(我們可以看到圖中的第四步上面的種子點聚合了A,B,C,下面的種子點聚合了D,E)。 參考

  K值如何確定

  在實際應用中,由於Kmean一般作為數據預處理,或者用於輔助分聚類貼標籤。所以k一般不會設置很大。可以通過枚舉,令k從2到一個固定值如10,在每個k值上重複運行數次kmeans(避免局部最優解),並計算當前k的平均輪廓係數,最後選取輪廓係數最大的值對應的k作為最終的集群數目。參考

  我們知道隨著群集數量的增加,該值不斷減少,但是如果繪製結果,則可能會發現平方距離的總和急劇下降到k的某個值,然後再慢一些。 在這裡,我們可以找到最佳聚類數。

    

 

  k值

  Python Code

  #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)

  R Code

  library(cluster)

  fit <- kmeans(X, 3) # 5 cluster solution

  8. Random Forest(隨機樹林)

  隨機森林(Random Forest)是一個包含多個決策樹的分類器, 其輸出的類別由個別樹輸出類別的眾數而定。(相當於許多不同領域的專家對數據進行分類判斷,然後投票)

    

 

  隨機樹林

  感覺原文沒有將什麼實質內容,給大家推進這一篇 Random Forest入門

  9. 降維算法

  在過去的4-5年中, 數據挖掘 在每個可能的階段都呈指數級增長。 公司/政府機構/研究機構不僅有新的來源,而且他們正在非常詳細地挖掘數據。

  例如: 電子商務 公司正在捕獲更多關於客戶的細節,例如人口統計,網絡爬網歷史,他們喜歡或不喜歡的內容,購買歷史記錄,反饋信息等等,給予他們個性化的關注,而不是離你最近的雜貨店主。

  作為數據科學家,我們提供的數據還包括許多功能,這對建立良好的穩健模型是非常有用的,但是有一個挑戰。 你如何識別出1000或2000年高度重要的變量? 在這種情況下,維數降低算法可以幫助我們與決策樹,隨機森林,PCA,因子分析,基於相關矩陣,缺失值比等的其他算法一起使用。

  要了解更多有關此算法的信息,您可以閱讀 「 Beginners Guide To Learn Dimension Reduction Techniques 「.

  Python Code

  #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)

  For more detail on this, please refer this link.

  R Code

  library(stats)

  pca <- princomp(train, cor = TRUE)

  train_reduced <- predict(pca,train)

  test_reduced <- predict(pca,test)

  10. Gradient Boosting & AdaBoost

  當我們處理大量數據以預測高預測能力時,GBM&AdaBoost是更加強大的算法。 Boosting是一種綜合學習算法,它結合了幾個基本估計器的預測,以提高單個估計器的魯棒性。 它將多個弱或平均預測值組合到一個強大的預測變量上。 這些提升算法在數據科學比賽中總是能夠很好地運行,如Kaggle,AV Hackathon,CrowdAnalytix。

  More: Know about Gradient and AdaBoost in detail

  Python Code

  #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)

  R Code

  library(caret)

  x <- cbind(x_train,y_train)

  # Fitting model

  fitControl <- trainControl( method = "repeatedcv", number = 4, repeats = 4)

  fit <- train(y ~ ., data = x, method = "gbm", trControl = fitControl,verbose = FALSE)

  predicted= predict(fit,x_test,type= "prob")[,2]

  結束語

  現在我相信,你會有一個常用的機器學習算法的想法。 我在寫這篇文章和提供R和Python中的代碼的唯一意圖就是讓你馬上開始。 如果您想要掌握機器學習,請將算法運用實際問題,體會其中的樂趣

相關焦點

  • 機器學習算法一覽(附python和R代碼)
    原標題:機器學習算法一覽(附python和R代碼) 寫這篇文章的目的,就是希望它可以讓有志於從事數據科學和機器學習的諸位在學習算法的路上少走些路。我會在文章中舉例一些機器學習的問題,你們也可以在思考解決這些問題的過程中得到啟發。我也會寫下對於各種機器學習算法的一些個人理解,並且提供R和Python的執行代碼。讀完這篇文章,讀者們至少可以行動起來親手試試寫一個機器學習的程序。
  • 機器學習算法基礎(使用Python代碼)
    機器學習算法類型從廣義上講,有3種類型的機器學習算法。1.監督學習工作原理:該算法由一個目標/結果變量(或因變量)組成,該變量將從給定的一組預測變量(自變量)中預測。使用這些變量集,我們生成一個將輸入映射到所需輸出的函數。
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    上一篇文章中介紹了機器學習的簡單知識,還有python中進行機器學習實踐需要的生態環境,接下來將會通過鳶尾花分類這個例子對機器學習做一個簡要的介紹。通過一步一步地實現這個項目來介紹以下內容。導入和使用python中機器學習的各個方面的類庫。導入數據,並通過描述性分析、可視化等對數據進行分析。創建六個模型,並從中選擇準確度最高的模型。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    共4天8節,講解機器學習和深度學習的模型理論和代碼實踐,梳理機器學習、深度學習、計算機視覺的技術框架,從根本上解決如何使用模型、優化模型的問題;每次課中,首先闡述算法理論和少量公式推導,然後使用真實數據做數據挖掘、機器學習、深度學習的數據分析、特徵選擇、調參和結果比較。
  • 用R也可以跑Python了
    最近的KDnuggets Analytics的軟體調查中,Python和R位居數據科學和機器學習軟體的前兩名。如果你真的想提高你在數據科學領域的能力,這兩種語言你確實都應該學習。」)第二步:在conda環境下安裝「r-reticulate」和「numpy」;conda_install(「r-reticulate」,「numpy」)
  • 回歸、分類與聚類:三大方向剖解機器學習算法的優缺點(附Python和R...
    所以,當你使用一個固定的數據測試集來評估性能,挑選最適合算法時,你應該針對你的問題嘗試多種不同的算法。當然,你所使用的算法必須要適合於你試圖解決的問題,這也就有了如何選擇正確的機器學習任務這一問題。做個類比,如果你需要打掃你的房子,你可能會用吸塵器、掃帚或者是拖把,但是你絕不會掏出一把鏟子然後開始挖地。
  • 小白學數據小抄放送 Python,R,大數據,機器學習
    它提供了Python學習的必備包和一些有用的學習技巧等資源。 2. Python基礎小抄表 這張由Datacamp製作的小抄表覆蓋了所有Python數據科學需要的基礎知識。如果你剛開始用Python,可以留著這張做快速參考。背下這些小抄的代碼變量、數據類型函數、字符串操作、類型轉換、列表和常用操作。尤其是它列出了重要的Python包,給出了用於選擇並導入包的小抄代碼。
  • 業界| 四大機器學習程式語言對比:R、Python、MATLAB、Octave
    MJ Bahmani 參與:張倩、路 本文作者是一位機器學習工程師,他比較了四種機器學習程式語言(工具):R、Python、MATLAB 和 OCTAVE。二者存在一些重要差異,但使用 S 寫的很多代碼在 R 下運行時無需修改。
  • 基本初等函數 指數函數 代碼篇
    本文首發於微信公眾號:"算法與編程之美",歡迎關注,及時了解更多此系列博客。由於機器學習和數學密切相關,尤其是數學中的函數,因此我們非常有必要複習和了解基本的函數知識。上一篇文章中,我們為大家介紹了基本初等函數中的指數函數 基本初等函數 指數函數,本文將為大家介紹如何利用python語言完成函數的繪製。
  • 【算法系列】凸優化的應用——Python求解優化問題(附代碼)
    37:02 來源: 統計學家 舉報   優化問題一般可分為兩大類:無約束優化問題和約束優化問題
  • 小白學數據28張小抄放送 Python,R,大數據,機器學習
    它提供了Python學習的必備包和一些有用的學習技巧等資源。 2. Python基礎小抄表 這張由Datacamp製作的小抄表覆蓋了所有Python數據科學需要的基礎知識。如果你剛開始用Python,可以留著這張做快速參考。背下這些小抄的代碼變量、數據類型函數、字符串操作、類型轉換、列表和常用操作。尤其是它列出了重要的Python包,給出了用於選擇並導入包的小抄代碼。
  • 放棄PK,擁抱合作——R和 Python 能做出什麼新花樣?
    我們可以利用R的統計能力和Python的編程能力嗎?那麼,當我們可以很容易地在R或Python腳本中嵌入SQL代碼時,為什麼不將R和Python混合在一起呢?基本上有兩種方法可以同時在一個項目中使用Python和R。
  • 代碼詳解:Python虛擬環境的原理及使用
    本指南先介紹虛擬環境的基礎知識以及使用方法,然後再深入介紹虛擬環境背後的工作原理。注意:本指南在macOS Mojave系統上使用最新版本的Python 3.7.x。目錄· 為什麼使用虛擬環境?· 什麼是虛擬環境?· 使用虛擬環境· 管理環境· 虛擬環境如何運行?1.
  • Python機器學習10:機器學習中的六種分類算法及實現(上)
    在機器學習中,可以使用多種算法模型解決同一個問題,那麼如何從中選擇出最佳的算法模型呢?當然,這個問題沒有一種固定的答案,需要根據不同的問題,嘗試使用多種機器學習方法,比較各種算法模型在該問題上的效果,最終才能決定究竟選擇哪一種模型。
  • 高斯混合模型(GMM):理念、數學、EM算法和python實現
    看起來很討厭,但這個問題有一個很好的解決方案:Expectation-Maximization(EM)算法。數學EM算法是一種迭代算法,用於在無法直接找到參數的情況下尋找模型的最大似然估計(MLE)。它包括兩個步驟:期望步驟和最大化步驟。
  • 使用Python中的線性回歸通過語音診斷帕金森氏病
    本文,我們將創建一個簡單的python機器學習算法,以便能夠通過聲音來診斷該人是否為患者。我們將使用一組(健康者和帕金森病患者)音頻文件庫,通過對音頻進行一些測量來構建我們的機器學習數據集。這些測量是通過parselmouth庫實現的,它允許在python代碼中使用praat。(parselmouth.readthedocs.io/en/stable/)然後,我們為每種類型的測量創建一個列表,再創建一個列表用來表示病人是否健康。在列表被填入後用來構建機器學習數據集。
  • Python趣味打怪:60秒學會一個例子,147段代碼助你從入門到大師
    不要害怕學習的過程枯燥無味,這裡有程式設計師jackzhenguo打造的一份中文Python「糖果包」:147個代碼小樣,60秒一口,營養又好玩,從Python基礎到機器學習盡皆囊括。>例子是有趣的例子,教程也是正經教程,學習路徑清晰、系統,先一起來看看完整目錄:學習路徑施工完成:1、Python基礎2、Python字符串和正則化3、Python文件4、Python日期5、Python利器6、Python畫圖7、Python實戰施工中:Python基礎算法
  • Python和人工智慧有什麼關係?Python 和人工智慧的區別是什麼?
    ,而這些代碼往往需要或者只支持Python進行調用。人工智慧是一個大的範疇,包括很多方面的應用,比如機器學習,在機器學習中的回歸算法,它們是通過統計分析所有數據來建立多因式,然後求解式子,而在這個過程中程式語言起到的作用是清洗數據、處理數據、建立關係求解結果的作用,python適用於數據清洗且學習成本低,所以在一定程度上,好一部分人傾向於將python應用於人工智慧應用領域。
  • Python入門5大機器學習算法(附代碼),你知道哪幾個?
    對於開發人員來說,Python在機器學習上的應用非常令人高興,因為它比C ++和Java等語言要簡單。 Python也是一種非常便攜的語言,因為它可以在Linux,Windows,Mac OS和UNIX平臺上使用。 Python也很受開發人員的歡迎,因為它允許開發人員創建交互式,可解釋式性,模塊化,動態,可移植和高級的代碼,這使得它比Java語言更獨特。
  • python機器學習:常用庫的介紹及安裝
    1、為了學習方便,建議大家安裝Anaconda(由於平臺不讓給出網站連結,所以具體連結直接百度搜一下就可以得到),為什麼建議使用這個軟體呢,因為安裝了這個軟體後本身就自帶了IPython、Numpy、pandas,scikit-learn等庫,不用你去在一步一步的去安裝其他的庫;並且該軟體兼容性不錯,可以在Mac OS, windows和linux上運行,一勞永逸,非常方便。