1. 程式人生 > >100天搞定機器學習|Day4-6 邏輯迴歸

100天搞定機器學習|Day4-6 邏輯迴歸

邏輯迴歸avik-jain介紹的不是特別詳細,下面再嘮叨一遍這個演算法。

1.模型

在分類問題中,比如判斷郵件是否為垃圾郵件,判斷腫瘤是否為陽性,目標變數是離散的,只有兩種取值,通常會編碼為0和1。假設我們有一個特徵X,畫出散點圖,結果如下所示。這時候如果我們用線性迴歸去擬合一條直線:hθ(X) = θ0+θ1X,若Y≥0.5則判斷為1,否則為0。這樣我們也可以構建出一個模型去進行分類,但是會存在很多的缺點,比如穩健性差、準確率低。而邏輯迴歸對於這樣的問題會更加合適。

邏輯迴歸假設函式如下,它對θTX作了一個函式g變換,對映至0到1的範圍之內,而函式g稱為sigmoid function或者logistic function,函式影象如下圖所示。當我們輸入特徵,得到的hθ(x)其實是這個樣本屬於1這個分類的概率值。也就是說,邏輯迴歸是用來得到樣本屬於某個分類的概率。

2.評價

回想起之前線性迴歸中所用到的損失函式:

 如果在邏輯迴歸中也運用這種損失函式,得到的函式J是一個非凸函式,存在多個區域性最小值,很難進行求解,因此需要換一個cost函式。重新定義個cost函式如下:

當實際樣本屬於1類別時,如果預測概率也為1,那麼損失為0,預測正確。相反,如果預測為0,那麼損失將是無窮大。這樣構造的損失函式是合理的,並且它還是一個凸函式,十分方便求得引數θ,使得損失函式J達到最小。

3.優化

我們已經定義好了損失函式J(θ),接下來的任務就是求出引數θ。我們的目標很明確,就是找到一組θ,使得我們的損失函式J(θ)最小。最常用的求解方法有兩種:批量梯度下降法(batch gradient descent), 牛頓迭代方法((Newton's method)。兩種方法都是通過迭代求得的數值解,但是牛頓迭代方法的收斂速度更加快。

“ 實驗-分割線 ” 第0步:資料預覽 資料集連結:https://pan.baidu.com/s/1TkUe-7-Q_jX5IT2qrXzeuA 提取碼:hrrm 該資料集包含了社交網路中使用者的資訊。這些資訊涉及使用者ID,性別,年齡以及預估薪資。一家汽車公司剛剛推出了他們新型的豪華SUV,我們嘗試預測哪些使用者會購買這種全新SUV。並且在最後一列用來表示使用者是否購買。我們將建立一種模型來預測使用者是否購買這種SUV,該模型基於兩個變數,分別是年齡和預計薪資。因此我們的特徵矩陣將是這兩列。我們嘗試尋找使用者年齡與預估薪資之間的某種相關性,以及他是否購買SUV的決定。

步驟1 | 資料預處理

匯入庫

import numpy as npimport matplotlib.pyplot as pltimport pandas as pd

匯入資料集

dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
Y = dataset.iloc[:,4].values

將資料集分成訓練集和測試集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)

特徵縮放

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

步驟2 | 邏輯迴歸模型

該項工作的庫將會是一個線性模型庫,之所以被稱為線性是因為邏輯迴歸是一個線性分類器,這意味著我們在二維空間中,我們兩類使用者(購買和不購買)將被一條直線分割。然後匯入邏輯迴歸類。下一步我們將建立該類的物件,它將作為我們訓練集的分類器。

將邏輯迴歸應用於訓練集

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_train, y_train)

步驟3 | 預測

預測測試集結果

y_pred = classifier.predict(X_test)

步驟4 | 評估預測

我們預測了測試集。 現在我們將評估邏輯迴歸模型是否正確的學習和理解。因此這個混淆矩陣將包含我們模型的正確和錯誤的預測。

生成混淆矩陣

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

視覺化

from matplotlib.colors import ListedColormap
X_set,y_set=X_train,y_train
X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],                c = ListedColormap(('red', 'green'))(i), label=j)

plt. title(' LOGISTIC(Training set)')
plt. xlabel(' Age')
plt. ylabel(' Estimated Salary')
plt. legend()
plt. show()

X_set,y_set=X_test,y_test
X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],                c = ListedColormap(('red', 'green'))(i), label=j)

plt. title(' LOGISTIC(Test set)')
plt. xlabel(' Age')
plt. ylabel(' Estimated Salary')
plt. legend()
plt. show()

>首發於微信公眾號:機器學習與統計學 歡迎掃碼關注,   
 
 </div> 
 <div class=

相關推薦

100機器學習|Day4-6 邏輯迴歸

邏輯迴歸avik-jain介紹的不是特別詳細,下面再嘮叨一遍這個演算法。 1.模型 在分類問題中,比如判斷郵件是否為垃圾郵件,判斷

100機器學習|Day3多元線性迴歸

前情回顧 第二天100天搞定機器學習|Day2簡單線性迴歸分析,我們學習了簡單線性迴歸分析,這個模型非常簡單,很容易理解。實現方

100機器學習|Day15 樸素貝葉斯

Day15,開始學習樸素貝葉斯,先了解一下貝爺,以示敬意。 托馬斯·貝葉斯 (Thomas Bayes),英國神學家、數學家、數理統計學家和哲學家,1702年出生於英國倫敦,做過神甫;1742年成為英國皇家學會會員;1763年4月7日逝世。貝葉斯曾是對概率論與統計的早期發展有重大影響的兩位(貝葉斯和布萊斯·帕

100機器學習|Day17-18 神奇的邏輯迴歸

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day23-25 決策樹及Python實現

演算法部分不再細講,之前發過很多: 【算法系列】決策樹 決策樹(Decision Tree)ID3演算法 決策樹(Decision Tree)C4.5演算法 決策樹(Decision Tree)CART演算法 ID3、C4.5、CART三種決策樹的區別 實驗: 匯入需要用到的python庫 import

100機器學習|Day 30-32 微積分的本質

3blue1brown系列課程,精美的動畫,配上生動的講解,非常適合幫助建立數學的形象思維,非常值得反覆觀看: http://www.3blue1brown.com/ 嗶哩嗶哩: https://space.bilibili.com/88461692 作者還把製作視訊的用到的程式碼放到了 github

100機器學習|Day33-34 隨機森林

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day35 深度學習之神經網路的結構

100天搞定機器學習|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9-12

100機器學習|Day36用有趣的方式解釋梯度下降演算法

本文為3Blue1Brown神經網路課程講解第二部分《Gradient descent, how neural networks learn 》的學習筆記,觀看地址:www.bilibili.com/video/av16144388前文我們已經搭建了一個包含兩個隱藏層的神經網路,我們需要這樣一種演算法:網路得

100機器學習|day37 無公式理解反向傳播演算法之精髓

 100天搞定機器學習(Day1-34) 100天搞定機器學習|Day35 深度學習之神經網路的結構 100天搞定機器學習|Day36 深度學習之梯度下降演算法 本篇為100天搞定機器學習之第37天,亦為3Blue1Brown《深度學習之反向傳播演算法》學習筆記。 上集提到我們

100機器學習|day38 反向傳播演算法推導

往期回顧 100天搞定機器學習|(Day1-36) 100天搞定機器學習|Day37無公式理解反向傳播演算法之精髓 上集我們學習了反向傳播演算法的原理,今天我們深入講解其中的微積分理論,展示在機器學習中,怎麼理解鏈式法則。 我們從一個最簡單的網路講起,每層只有一個神經元,圖上這個網路就是由三個權重

100機器學習|day39 Tensorflow Keras手寫數字識別

提示:建議先看day36-38的內容 TensorFlow™ 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,

100機器學習|day40-42 Tensorflow Keras識別貓狗

100天搞定機器學習|1-38天 100天搞定機器學習|day39 Tensorflow Keras手寫數字識別 前文我們用keras的Sequential 模型實現mnist手寫數字識別,準確率0.9713。今天我們完成day40-42的課程,實現貓、狗的識別。 本文資料集下載地址 https://down

100機器學習|day43 幾張GIF理解K-均值聚類原理

前文推薦 如何正確使用「K均值聚類」? KMeans演算法是典型的基於距離的聚類演算法,採用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標。 K個初始聚類中心點的選取對聚類結果具有較大的影響,因為在該演算法第一步

100機器學習|Day56 隨機森林工作原理及調參實戰(信用卡欺詐預測)

本文是對100天搞定機器學習|Day33-34 隨機森林的補充 前文對隨機森林的概念、工作原理、使用方法做了簡單介紹,並提供了分類和迴歸的例項。 本期我們重點講一下: 1、整合學習、Bagging和隨機森林概念及相互關係 2、隨機森林引數解釋及設定建議 3、隨機森林模型調參實戰 4、隨機森林模型優缺點總結 整

機器學習筆記(6)-邏輯迴歸與最大熵模型

Logistic迴歸 Logistic 迴歸雖然名字叫回歸,但是它是用來做分類的。其主要思想是: 根據現有資料對分類邊界線建立迴歸公式,以此進行分類。假設現在有一些資料點,我們用一條直線對這些點進行擬合(這條直線稱為最佳擬合直線),這個擬合的過程就叫做迴歸。

從0到1 | 0基礎/轉行如何用3個月機器學習

寫這篇文章的初衷是現在好多朋友都想了解如何入門/轉行機器學習,搭上人工智慧這列二十一世紀的快車。再加上這個問題每隔一陣子就會有人提及,因此想寫篇文章來個一勞永逸。 文章的宗旨: 指出學習中的一些誤區 提供客觀可行的學習表 給出進階學習的建議 目標讀者是: 零基礎,對人工智慧感興趣的讀者 有基

機器學習PPT筆記-1

Introduction of Deep Learning some introductions Machine Learning is close to Looking for a Function The model is a set of fun

機器學習筆記(6) 線性迴歸

先從最簡單的例子開始,假設我們有一組樣本(如下圖的一個個黑色的圓點),只有一個特徵,如下圖,橫軸是特徵值,縱軸是label。比如橫軸是房屋面積,縱軸是房屋價格. 現在我們要做什麼呢?我們試圖找到一條直線y=ax+b,可以儘量好的擬合這些點. 你可能要問了,為啥是直線,不是曲線,不是折線?因為我們的前提

數學推導+純Python實現機器學習演算法:邏輯迴歸

自本系列第一講推出以來,得到了不少同學的反響和贊成,也有同學留言說最好能把數學推導部分寫的詳細點,筆者只能說盡力,因為打公式實在是太浪費時間了。。本節要和大家一起學習的是邏輯(logistic)迴歸模型,繼續按照手推公式+純 Python 的寫作套路。 邏輯迴歸本質上跟邏輯這個詞不是很搭邊,叫這個名字完