国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python實(shí)現(xiàn)logistic分類算法代碼

瀏覽:9日期:2022-08-05 10:06:53

最近在看吳恩達(dá)的機(jī)器學(xué)習(xí)課程,自己用python實(shí)現(xiàn)了其中的logistic算法,并用梯度下降獲取最優(yōu)值。

logistic分類是一個(gè)二分類問(wèn)題,而我們的線性回歸函數(shù)

python實(shí)現(xiàn)logistic分類算法代碼

的取值在負(fù)無(wú)窮到正無(wú)窮之間,對(duì)于分類問(wèn)題而言,我們希望假設(shè)函數(shù)的取值在0~1之間,因此logistic函數(shù)的假設(shè)函數(shù)需要改造一下

python實(shí)現(xiàn)logistic分類算法代碼

由上面的公式可以看出,0 < h(x) < 1,這樣,我們可以以1/2為分界線

python實(shí)現(xiàn)logistic分類算法代碼

cost function可以這樣定義

python實(shí)現(xiàn)logistic分類算法代碼

其中,m是樣本的數(shù)量,初始時(shí)θ可以隨機(jī)給定一個(gè)初始值,算出一個(gè)初始的J(θ)值,再執(zhí)行梯度下降算法迭代,直到達(dá)到最優(yōu)值,我們知道,迭代的公式主要是每次減少一個(gè)偏導(dǎo)量

python實(shí)現(xiàn)logistic分類算法代碼

如果將J(θ)代入化簡(jiǎn)之后,我們發(fā)現(xiàn)可以得到和線性回歸相同的迭代函數(shù)

python實(shí)現(xiàn)logistic分類算法代碼

按照這個(gè)迭代函數(shù)不斷調(diào)整θ的值,直到兩次J(θ)的值差值不超過(guò)某個(gè)極小的值之后,即認(rèn)為已經(jīng)達(dá)到最優(yōu)解,這其實(shí)只是一個(gè)相對(duì)較優(yōu)的解,并不是真正的最優(yōu)解。 其中,α是學(xué)習(xí)速率,學(xué)習(xí)速率越大,就能越快達(dá)到最優(yōu)解,但是學(xué)習(xí)速率過(guò)大可能會(huì)讓懲罰函數(shù)最終無(wú)法收斂,整個(gè)過(guò)程python的實(shí)現(xiàn)如下

import mathALPHA = 0.3DIFF = 0.00001def predict(theta, data): results = [] for i in range(0, data.__len__()): temp = 0 for j in range(1, theta.__len__()): temp += theta[j] * data[i][j - 1] temp = 1 / (1 + math.e ** (-1 * (temp + theta[0]))) results.append(temp) return resultsdef training(training_data): size = training_data.__len__() dimension = training_data[0].__len__() hxs = [] theta = [] for i in range(0, dimension): theta.append(1) initial = 0 for i in range(0, size): hx = theta[0] for j in range(1, dimension): hx += theta[j] * training_data[i][j] hx = 1 / (1 + math.e ** (-1 * hx)) hxs.append(hx) initial += (-1 * (training_data[i][0] * math.log(hx) + (1 - training_data[i][0]) * math.log(1 - hx))) initial /= size iteration = initial initial = 0 counts = 1 while abs(iteration - initial) > DIFF: print('第', counts, '次迭代, diff=', abs(iteration - initial)) initial = iteration gap = 0 for j in range(0, size): gap += (hxs[j] - training_data[j][0]) theta[0] = theta[0] - ALPHA * gap / size for i in range(1, dimension): gap = 0 for j in range(0, size):gap += (hxs[j] - training_data[j][0]) * training_data[j][i] theta[i] = theta[i] - ALPHA * gap / size for m in range(0, size):hx = theta[0]for j in range(1, dimension): hx += theta[j] * training_data[i][j]hx = 1 / (1 + math.e ** (-1 * hx))hxs[i] = hxiteration += -1 * (training_data[i][0] * math.log(hx) + (1 - training_data[i][0]) * math.log(1 - hx)) iteration /= size counts += 1 print(’training done,theta=’, theta) return thetaif __name__ == ’__main__’: training_data = [[1, 1, 1, 1, 0, 0], [1, 1, 0, 1, 0, 0], [1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 1, 1], [0, 1, 0, 0, 0, 1],[0, 0, 0, 0, 1, 1]] test_data = [[0, 1, 0, 0, 0], [0, 0, 0, 0, 1]] theta = training(training_data) res = predict(theta, test_data) print(res)

運(yùn)行結(jié)果如下

python實(shí)現(xiàn)logistic分類算法代碼

以上這篇python實(shí)現(xiàn)logistic分類算法代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产精品久久久久久久久免费观看 | 免费播放国产性色生活片 | 国产精品午夜国产小视频 | 亚洲免费网站观看视频 | 天干夜天天夜天干天ww | 亚洲欧美成人在线 | 免费看欧美一级片 | 国产免费爱在线观看视频 | 一级亚洲 | 国产精选在线 | 99日韩| 免费看国产精品久久久久 | 国产欧美一区二区三区视频 | 一区二区不卡久久精品 | 亚洲综合区 | 国产黄色一级网站 | 国产成人高清在线观看播放 | 男的操美女 | 亚洲国产成人精品一区二区三区 | a在线v | 欧美最新的精品videoss | 国产亚洲女在线精品 | 国产欧美在线播放 | 午夜宅男在线永久免费观看网 | 国产一区二区三区久久精品小说 | 欧美一级成人毛片视频 | 91久久国产精品 | 久久在线观看免费视频 | 一级女人毛片 | 可以看毛片的网站 | 韩国精品一区二区三区四区五区 | 国产在线步兵一区二区三区 | 久久久久久久久久综合情日本 | 日韩 国产 欧美 | 成人免费黄色网址 | 国产亚洲精品九九久在线观看 | 私人毛片免费高清影视院丶 | 男女国产视频 | 精品国产一二三区在线影院 | 久久久网久久久久合久久久久 | b毛片|