中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

10行代碼實現機器學習的案例分析-創新互聯

創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

專注于為中小企業提供成都網站建設、網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業通城免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了成百上千家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。

不懂10行代碼實現機器學習的案例分析?其實想解決這個問題也不難,下面讓小編帶著大家一起學習怎么去解決,希望大家閱讀完這篇文章后大所收獲。

開始

小強會去看電影嗎?

如花,小倩,小明和小強,他們是好基友,經常相約去看電影。但小強不是每次都去,以下是他們前四次相約去看電影的情況:(1 表示去看電影,0 表示沒去看電影)

如花小倩小明小強
1011
1101
0010
0100

假如第五次相約看電影,如花不去,小倩和小明要去,那么小強會去嗎?

如花小倩小明小強
1011
1101
0010
0100
011?

我們人腦對以上數據進行分析,很容易看出,小強對如花有意思,如花去,小強就去,如花不去,小強就不去,所以得出結論,小強不去。

人腦思考分析的過程,怎么轉換成讓計算機思考呢?

上代碼
from numpy import array, exp, random, dot
X = array([[1,0,1],[1,1,0],[0,0,1],[0,1,0]])
y = array([[1,1,0,0]]).T
random.seed(1)
weights = 2 * random.random((3,1)) - 1
for _ in range(10000):
    output = 1/(1+exp(-dot(X, weights)))
    error = y - output
    delta = error * output * (1-output)
    weights += dot(X.T, delta)
    
p = 1/(1+exp(-dot([[1,0,0]], weights)))[0][0]
print("小強去不去:", "不去" if  p > 0.5 else "去")

不算用于打印的代碼,剛好10行。如果很少用Python進行科學計算的同學可能會有點蒙蔽,不要著急,下面我對每行代碼進行解釋。

導入類庫
from numpy import array, exp, random, dot

numpy 可以說是 Python 科學計算的基石,用起來非常方便。 對于數學計算方便,我們主要導入了 array、exp、random、dot

  • array: 創建矩陣
  • exp:以自然常數e為底的指數函數
  • random: 生產0~1的隨機數
  • dot: 矩陣相乘
生成數據
X = array([
[1,0,1],[1,1,0],[0,0,1],[0,1,0]
])
y = array([[1,1,0,0]]).T

將上表四人相約看電影的數據生成代碼,注意第二行有個 .T 是轉置的意思,將行向量轉成列向量,如下:

[           [
  [1,0,1],    [1],
  [1,1,0],    [1],
  [0,0,1],    [0],
  [0,1,0],    [0],    
]           ]
生成隨機權重
# 設置隨機因子,讓每次生成的隨機數都一樣,方便代碼調試。
random.seed(1)
# 生成一個范圍為 -1 ~ 1,3列的行向量。
weights = 2 * random.random((3,1))-1

為什么要設置權重?

以第一次看電影為例,[1,0,1] 對應 [1],他們之間存在某種關聯,如下:

1*w1 + 0*w2 + 1*w3 = 1

w1,w2,w3,表示的就是權重。

如果我們能求出w1,w2,w3,是不是就可以把第五次([0,1,1])的代入,得到小強去不去看電影。

0*w1 + 1*w2 + 1*w3 = 小強去嗎?

怎么求出權重?

我們把第一條數據求出的權重,很難代入后面三條數據。

所以我們隨機一組權重,代入每一組數據,得到誤差,再修改權重,得到新的誤差,如此反復,直至誤差最小化,我們就把這個過程叫做機器學習

優化權重
for _ in range(10000):
    # 用 sigmoid函數將計算結果進行轉換
    output = 1/(1+exp(-dot(X, weights)))
    # 用真實值減去計算結果求出誤差
    error = y - output
    # 計算增量
    delta = error * output*(1-output)    
    # 得到新的權重
    weights += dot(X.T, delta)

循環往復 10000 次,讓誤差不斷變小,最終得到最優的權重,將權重代入第五次的數據就可以推算出小強去不去看電影了。

為什么要用 sigmoid 函數?

由于計算結果的范圍是正無窮到負無窮,用 sigmoid 函數轉換成 0~1,方便進行分類,比如大于0.5 去看電影,小于0.5 不去看電影。

怎么計算增量?

delta = error * output*(1-output)

將上面這句分拆成兩句代碼好理解一些:

# 計算斜率,也就是對計算結果進行求導
slope = output*(1-output)
# 基于 error 計算出 delta,用于更新權重delta = error * slope

斜率是什么?

由于計算結果被 sigmoid 函數轉換后為0~1的平滑曲線。 要想 error 越小,計算結果就要無線趨近于0或1,越趨近于0或者1斜率越小

為什么要用讓 error 乘以斜率?

在梯度下降法中,越靠近最優點,斜率越小,所以在斜率最小的地方,我們要減小 delta 的變化,以免錯過最優點。

預測結果
p = 1/(1+exp(-dot([[1,0,0]], weights)))[0][0]
print("小強去不去:", "不去" if  p > 0.5 else "去")
// => 不去

將經過10000次優化后的權重代入[1,0,0],計算出 p0.9999253713868242,大于 0.5 且無限接近于1,所以小明會去看電影。



網站名稱:10行代碼實現機器學習的案例分析-創新互聯
分享網址:http://m.2m8n56k.cn/article44/dipgee.html

成都網站建設公司_創新互聯,為您提供網站內鏈、面包屑導航、網站維護定制網站、建站公司、微信公眾號

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 国产精品黄色片 | 成人软件18免费网站 | 国产v片在线播放免费观 | 欧美 日韩 国产 在线 | 国产一级高清 | 亚洲最新视频在线观看 | 国产一级在线观看 | 91精品国产爱久久久久久 | 精品欧美一区二区三区免费观看 | 欧美高清视频在线观看 | 热久久91| 精品手机在线视频 | 99久久免费看国产精品 | 久久精品综合免费观看 | 黄色a免费 | 真正国产乱子伦高清对白 | 成人国产精品高清在线观看 | 亚洲欧洲国产精品 | 经典日韩 | 911精品国产91久久久久 | 92午夜国产福利视频1000 | 99国产精品农村一级毛片 | 美女张开腿让男人捅爽 | 国产欧美一区二区精品性色 | 手机看片免费基地你懂的 | 国产精品亚洲欧美日韩久久 | 夜色邦合成福利网站 | 国产成人免费片在线视频观看 | 免费一级毛片不卡在线播放 | 国产a级一级久久毛片 | 久久影院一区二区三区 | 美女张开腿让男人桶爽免费网站 | 99久久精品久久久久久婷婷 | 国产一级片免费看 | 国产日本亚洲欧美 | 亚洲欧美日韩精品久久 | 国内自拍第一页 | 久草手机在线播放 | 亚洲高清在线观看 | 久久国产精品高清一区二区三区 | 国产在线播放一区 |