国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

機器學習實戰之logistic回歸

454398 ? 來源:itpub技術棧 ? 作者:itpub技術棧 ? 2020-09-29 15:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

logistic回歸是一種廣義的線性回歸,通過構造回歸函數,利用機器學習來實現分類或者預測。

原理

上一文簡單介紹了線性回歸,與邏輯回歸的原理是類似的。

預測函數(h)。該函數就是分類函數,用來預測輸入數據的判斷結果。過程非常關鍵,需要預測函數的“大概形式”, 比如是線性還是非線性的。 本文參考機器學習實戰的相應部分,看一下數據集。

// 兩個特征

-0.017612 14.053064 0

-1.395634 4.662541 1

-0.752157 6.538620 0

-1.322371 7.152853 0

0.423363 11.054677 0

0.406704 7.067335 1

如上圖,紅綠代表兩種不同的分類。可以預測分類函數大概是一條直線。Cost函數(損失函數):該函數預測的輸出h和訓練數據類別y之間的偏差,(h-y)或者其他形式。綜合考慮所有訓練數據的cost, 將其求和或者求平均,極為J函數, 表示所有訓練數據預測值和實際值的偏差。

顯然,J函數的值越小,表示預測的函數越準確(即h函數越準確),因此需要找到J函數的最小值。有時需要用到梯度下降。

具體過程

構造預測函數

邏輯回歸名為回歸,實際為分類,用于兩分類問題。 這里直接給出sigmoid函數。

接下來確定分類的邊界,上面有提到,該數據集需要一個線性的邊界。 不同數據需要不同的邊界。

確定了分類函數,將其輸入記做z ,那么

向量x是特征變量, 是輸入數據。此數據有兩個特征,可以表示為z = w0x0 + w1x1 + w2x2。w0是常數項,需要構造x0等于1(見后面代碼)。 向量W是回歸系數特征,T表示為列向量。 之后就是確定最佳回歸系數w(w0, w1, w2)。cost函數

綜合以上,預測函數為:

這里不做推導,可以參考文章 Logistic回歸總結

有了上述的cost函數,可以使用梯度上升法求函數J的最小值。推導見上述鏈接。

綜上:梯度更新公式如下:

接下來是python代碼實現:

# sigmoid函數和初始化數據

def sigmoid(z):

return 1 / (1 + np.exp(-z))

def init_data():

data = np.loadtxt(‘data.csv’)

dataMatIn = data[:, 0:-1]

classLabels = data[:, -1]

dataMatIn = np.insert(dataMatIn, 0, 1, axis=1) #特征數據集,添加1是構造常數項x0

return dataMatIn, classLabels

復制代碼

// 梯度上升

def grad_descent(dataMatIn, classLabels):

dataMatrix = np.mat(dataMatIn) #(m,n)

labelMat = np.mat(classLabels).transpose()

m, n = np.shape(dataMatrix)

weights = np.ones((n, 1)) #初始化回歸系數(n, 1)

alpha = 0.001 #步長

maxCycle = 500 #最大循環次數

for i in range(maxCycle):

h = sigmoid(dataMatrix * weights) #sigmoid 函數

weights = weights + alpha * dataMatrix.transpose() * (labelMat - h) #梯度

return weights

// 計算結果

if __name__ == ‘__main__’:

dataMatIn, classLabels = init_data()

r = grad_descent(dataMatIn, classLabels)

print(r)

輸入如下:

[[ 4.12414349]

[ 0.48007329]

[-0.6168482 ]]

上述w就是所求的回歸系數。w0 = 4.12414349, w1 = 0.4800, w2=-0.6168 之前預測的直線方程0 = w0x0 + w1x1 + w2x2, 帶入回歸系數,可以確定邊界。 x2 = (-w0 - w1*x1) / w2

畫出函數圖像:

def plotBestFIt(weights):

dataMatIn, classLabels = init_data()

n = np.shape(dataMatIn)[0]

xcord1 = []

ycord1 = []

xcord2 = []

ycord2 = []

for i in range(n):

if classLabels[i] == 1:

xcord1.append(dataMatIn[i][1])

ycord1.append(dataMatIn[i][2])

else:

xcord2.append(dataMatIn[i][1])

ycord2.append(dataMatIn[i][2])

fig = plt.figure()

ax = fig.add_subplot(111)

ax.scatter(xcord1, ycord1,s=30, c=‘red’, marker=‘s’)

ax.scatter(xcord2, ycord2, s=30, c=‘green’)

x = np.arange(-3, 3, 0.1)

y = (-weights[0, 0] - weights[1, 0] * x) / weights[2, 0] #matix

ax.plot(x, y)

plt.xlabel(‘X1’)

plt.ylabel(‘X2’)

plt.show()

如下:

算法改進

隨機梯度上升

上述算法中,每次循環矩陣都會進行m * n次乘法計算,時間復雜度是maxCycles* m * n。當數據量很大時, 時間復雜度是很大。 這里嘗試使用隨機梯度上升法來進行改進。 隨機梯度上升法的思想是,每次只使用一個數據樣本點來更新回歸系數。這樣就大大減小計算開銷。 算法如下:

def stoc_grad_ascent(dataMatIn, classLabels):

m, n = np.shape(dataMatIn)

alpha = 0.01

weights = np.ones(n)

for i in range(m):

h = sigmoid(sum(dataMatIn[i] * weights)) #數值計算

error = classLabels[i] - h

weights = weights + alpha * error * dataMatIn[i]

return weights

進行測試:

隨機梯度上升的改進

def stoc_grad_ascent_one(dataMatIn, classLabels, numIter=150):

m, n = np.shape(dataMatIn)

weights = np.ones(n)

for j in range(numIter):

dataIndex = list(range(m))

for i in range(m):

alpha = 4 / (1 + i + j) + 0.01 #保證多次迭代后新數據仍然有影響力

randIndex = int(np.random.uniform(0, len(dataIndex)))

h = sigmoid(sum(dataMatIn[i] * weights)) # 數值計算

error = classLabels[i] - h

weights = weights + alpha * error * dataMatIn[i]

del(dataIndex[randIndex])

return weights

可以對上述三種情況的回歸系數做個波動圖。 可以發現第三種方法收斂更快。 評價算法優劣勢看它是或否收斂,是否達到穩定值,收斂越快,算法越優。

總結

這里用到的梯度上升和梯度下降是一樣的,都是求函數的最值, 符號需要變一下。 梯度意味著分別沿著x, y的方向移動一段距離。(cost分別對x, y)的導數。

完整代碼請查看: github: logistic regression

參考文章: 機器學習之Logistic回歸與Python實現

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8553

    瀏覽量

    136928
  • Logistic
    +關注

    關注

    0

    文章

    11

    瀏覽量

    9067
  • 線性回歸
    +關注

    關注

    0

    文章

    41

    瀏覽量

    4565
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    人工智能與機器學習在這些行業的深度應用

    自人工智能和機器學習問世以來,多個在線領域的數字化格局迎來了翻天覆地的變化。這些技術從誕生之初就為企業賦予了競爭優勢,而在線行業正是受其影響最為顯著的領域。人工智能(AI)與機器學習
    的頭像 發表于 02-04 14:44 ?464次閱讀

    機器學習和深度學習中需避免的 7 個常見錯誤與局限性

    無論你是剛入門還是已經從事人工智能模型相關工作一段時間,機器學習和深度學習中都存在一些我們需要時刻關注并銘記的常見錯誤。如果對這些錯誤置之不理,日后可能會引發諸多麻煩!只要我們密切關注數據、模型架構
    的頭像 發表于 01-07 15:37 ?184次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>和深度<b class='flag-5'>學習</b>中需避免的 7 個常見錯誤與局限性

    從0到1,10+年資深LabVIEW專家,手把手教你攻克機器視覺+深度學習(5000分鐘實戰課)

    “告別檢測系統能力缺陷!10+年LabVIEW視覺資深專家手把手教你:5000+分鐘高清教程(含工具、算法原理、實戰操作、項目優化全流程講解)”——從傳統視覺算法→深度學習建模→工業級部署"
    的頭像 發表于 12-02 08:07 ?518次閱讀
    從0到1,10+年資深LabVIEW專家,手把手教你攻克<b class='flag-5'>機器</b>視覺+深度<b class='flag-5'>學習</b>(5000分鐘<b class='flag-5'>實戰</b>課)

    基于迅為RK3588開發板實現高性能機器狗主控解決方案-?AI能力實戰:YOLOv5目標檢測例程

    基于迅為RK3588開發板實現高性能機器狗主控解決方案-?AI能力實戰:YOLOv5目標檢測例程
    的頭像 發表于 11-28 11:32 ?1516次閱讀
    基于迅為RK3588開發板實現高性能<b class='flag-5'>機器</b>狗主控解決方案-?AI能力<b class='flag-5'>實戰</b>:YOLOv5目標檢測例程

    FPGA在機器學習中的具體應用

    隨著機器學習和人工智能技術的迅猛發展,傳統的中央處理單元(CPU)和圖形處理單元(GPU)已經無法滿足高效處理大規模數據和復雜模型的需求。FPGA(現場可編程門陣列)作為一種靈活且高效的硬件加速平臺
    的頭像 發表于 07-16 15:34 ?2884次閱讀

    【嘉楠堪智K230開發板試用體驗】K230機器視覺相關功能體驗

    、畫十字交叉、寫字符等多種操作。具體使用方法參考官方教程機器學習-畫圖 圖像檢測 K230能夠使用MicroPython進行邊緣檢測、線段檢測、圓形檢測、矩形檢測、快速線性回歸。官方在線文檔鏈接圖像檢測
    發表于 07-08 17:25

    機器學習異常檢測實戰:用Isolation Forest快速構建無標簽異常檢測系統

    本文轉自:DeepHubIMBA無監督異常檢測作為機器學習領域的重要分支,專門用于在缺乏標記數據的環境中識別異常事件。本文深入探討異常檢測技術的理論基礎與實踐應用,通過IsolationForest
    的頭像 發表于 06-24 11:40 ?1408次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>異常檢測<b class='flag-5'>實戰</b>:用Isolation Forest快速構建無標簽異常檢測系統

    辰:國內芯片須踏實前行,回歸技術本質

    迷人眼的宣傳中,深圳市瑞辰科技卻清醒地意識到:突破源于技術!芯片行業發展道阻且長,唯有腳踏實地,加大研發投入,回歸技術本質,才能具備真正的競爭力。死磕工藝,國產
    的頭像 發表于 06-11 16:50 ?1031次閱讀
    瑞<b class='flag-5'>之</b>辰:國內芯片須踏實前行,<b class='flag-5'>回歸</b>技術本質

    學電路設計分享學習心得、技術疑問及實戰成果

    活動介紹:隨著物聯網、智能硬件等領域的快速發展,硬件開發與電路設計技能成為電子工程師和創客的核心競爭力。為幫助剛入行的電子小白、高校大學生高效掌握從基礎理論到實戰應用的能力,電子發燒友平臺推出學習
    的頭像 發表于 05-20 08:07 ?612次閱讀
    學電路設計分享<b class='flag-5'>學習</b>心得、技術疑問及<b class='flag-5'>實戰</b>成果

    活動名單公布!學電路設計分享學習心得、技術疑問及實戰成果,贏取專屬禮品!

    實戰應用的能力,電子發燒友平臺推出學習 《硬件開發與電路設計速成實戰篇(入門到精通)》 系列課程活動,為提升學習效果、鼓勵學員互動,平臺計劃開展 “學電路設計,贏好禮,共成長” 評論
    發表于 05-14 09:53

    十大鮮為人知卻功能強大的機器學習模型

    本文轉自:QuantML當我們談論機器學習時,線性回歸、決策樹和神經網絡這些常見的算法往往占據了主導地位。然而,除了這些眾所周知的模型之外,還存在一些鮮為人知但功能強大的算法,它們能夠以驚人的效率
    的頭像 發表于 04-02 14:10 ?1091次閱讀
    十大鮮為人知卻功能強大的<b class='flag-5'>機器</b><b class='flag-5'>學習</b>模型

    樹莓派5 + Hailo AI加速器:工業級數值數據處理實戰,打通SQLite與機器學習全鏈路

    本文討論了在工業自動化背景下,開發者利用樹莓派5和HailoAI加速器進行工業級數值數據處理實戰,打通SQLite與機器學習全鏈路時遇到的問題及解決方案。關鍵要點包括:1.開發者需求:構建能從
    的頭像 發表于 03-25 09:22 ?1222次閱讀
    樹莓派5 + Hailo AI加速器:工業級數值數據處理<b class='flag-5'>實戰</b>,打通SQLite與<b class='flag-5'>機器</b><b class='flag-5'>學習</b>全鏈路

    請問STM32部署機器學習算法硬件至少要使用哪個系列的芯片?

    STM32部署機器學習算法硬件至少要使用哪個系列的芯片?
    發表于 03-13 07:34

    【免費送,全新AD25(入門+進階)兩套 PCB Layout視頻教程 】張飛實戰電子x志博PCB:攜手共創PCB學習新征程

    張飛實戰電子×志博PCB=攜手共創PCBLayout學習新征程領取課程請掃描后面的二維碼在電子科技浪潮奔涌的當下,PCB作為電子產品的“中樞神經”,其設計與制作技術的重要性不言而喻。張飛實戰電子與志
    的頭像 發表于 03-06 19:34 ?1319次閱讀
    【免費送,全新AD25(入門+進階)兩套 PCB Layout視頻教程 】張飛<b class='flag-5'>實戰</b>電子x志博PCB:攜手共創PCB<b class='flag-5'>學習</b>新征程

    《AI Agent 應用與項目實戰》----- 學習如何開發視頻應用

    再次感謝發燒友提供的閱讀體驗活動。本期跟隨《AI Agent 應用與項目實戰》這本書學習如何構建開發一個視頻應用。AI Agent是一種智能應用,能夠根據用戶需求和環境變化做出相應響應。通常基于深度
    發表于 03-05 19:52