[轉(zhuǎn)載]機(jī)器學(xué)習(xí)(1):Logistic回歸原理及其實(shí)現(xiàn)

原文鏈接:http://www.cnblogs.com/cv-pr/p/7081861.html

Logistic回歸是機(jī)器學(xué)習(xí)中非常經(jīng)典的一個(gè)方法仙蚜,主要用于解決二分類問題,它是多分類問題softmax的基礎(chǔ)相种,而softmax在深度學(xué)習(xí)中的網(wǎng)絡(luò)后端做為常用的分類器,接下來我們將從原理和實(shí)現(xiàn)來闡述該算法的思想。

1.原理

擬合的效果圖如下所示:

w

迭代的梯度變化非炒福快押逼,五次就能達(dá)到非常好的結(jié)果,如下所示:

[ 4.54704357]

[ 0.19111694]

[ 0.2380104]

[ 0.01743344]

[? 8.45306379e-05]

[? 1.95907862e-09]

[? 1.90137901e-16]

[? 1.90137901e-16]

[? 1.90137901e-16]

[? 1.90137901e-16]

我們使用了python實(shí)現(xiàn)Logistic回歸惦界,注意:我們這里對(duì)H

是直接的求逆挑格,如果特征維度很高的情況下,這會(huì)消耗較大的計(jì)算亮沾歪,因此我們可以采用更有效的求解方法漂彤,如Cholesky分解法,最后貼上馬農(nóng)最愛的代碼:

import numpy as np

from matplotlib import pyplot as plt

class LogisticClassifier:

def __init__(self):

print("init");

def logistic(self,Xa,wa):

val = 1/(1+np.exp(-Xa.dot(wa)));

return val;

def train(self,X,t,iter_num):

print("start to training");

Xa = np.array(X)

xsize = Xa.shape

dim = xsize[1]+1

num = xsize[0]

Xa = np.c_[Xa,np.ones([num,1])]

ta = np.array(t)

print dim,num

wa = 0.5*np.ones([dim,1])

for it in range(iter_num):

ya = self.logistic(Xa,wa)

deriv_wa = Xa.T.dot(ya-ta)

R = np.diag((ya*(1-ya)).flat)

H = Xa.T.dot(R).dot(Xa)

delta_w = np.linalg.inv(H).dot(deriv_wa)

wa = wa - delta_w;

print np.linalg.norm(delta_w.T, 2, 1)

#print wa

return wa

if __name__ == "__main__":

print ('This is main of module "hello.py"')

logCls = LogisticClassifier();

#construct data

X = [[0.5],[0.75],[1],[1.25],[1.5],[1.75],[1.75],[2],[2.25],[2.5],[2.75],[3],[3.25],[3.5],[4],[4.25],[4.5],[4.75],[5],[5.5]]

t = [[0],[0],[0],[0],[0],[0],[1],[0],[1],[0],[1],[0],[1],[0],[1],[1],[1],[1],[1],[1]]

iter_num = 10;

#training weight

w = logCls.train(X, t, iter_num)

print ("learned weight:\n")

print w

#draw and show the result

pos_t = [x for i, x in enumerate(t) if x == [1]]

pos_X = [X[i] for i, x in enumerate(t) if x == [1]]

neg_t = [x for i, x in enumerate(t) if x == [0]]

neg_X = [X[i] for i, x in enumerate(t) if x == [0]]

plt.scatter(pos_X,pos_t,color="r",marker='o',s = 100)

plt.scatter(neg_X,neg_t,color="g",marker='o',s = 100)

Xfitted? = np.array(np.linspace(0,6,100))

XfittedC = np.c_[Xfitted,np.ones([100,1])]

Yfitted = logCls.logistic(XfittedC, w)

plt.plot(Xfitted.flat,Yfitted.flat,color="b",linewidth= 5)

#reset the axes

ax = plt.gca()

#no bonding box

ax.spines['top'].set_color('none')

ax.spines['right'].set_color('none')

#set as zero

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0.5))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',3))

plt.xlabel("X",fontsize="xx-large")

plt.ylabel("t",fontsize="xx-large")

plt.title("Logistic method,learned weight:[%f,%f]"%(w[0],w[1]),fontsize="xx-large")

plt.legend(["Fitted function","Postive Samples","Negative Samples"],fontsize="xx-large",loc='upper left');

plt.show()

3.參考資料

[1].Logistic回歸與梯度下降法

[2].Logistic回歸與牛頓迭代法

Make Change - Focus on Computer Vision and Pattern Recognition

版權(quán)聲明:本文為博主原創(chuàng)文章灾搏,未經(jīng)博主允許不得轉(zhuǎn)載

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挫望,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子确镊,更是在濱河造成了極大的恐慌士骤,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕾域,死亡現(xiàn)場(chǎng)離奇詭異拷肌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旨巷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門巨缘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人采呐,你說我怎么就攤上這事若锁。” “怎么了斧吐?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵又固,是天一觀的道長。 經(jīng)常有香客問我煤率,道長仰冠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任蝶糯,我火速辦了婚禮洋只,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昼捍。我一直安慰自己识虚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布妒茬。 她就那樣靜靜地躺著担锤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乍钻。 梳的紋絲不亂的頭發(fā)上肛循,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天蛛株,我揣著相機(jī)與錄音,去河邊找鬼育拨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欢摄,可吹牛的內(nèi)容都是我干的熬丧。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼怀挠,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼析蝴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绿淋,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤闷畸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吞滞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佑菩,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年裁赠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了殿漠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡佩捞,死狀恐怖绞幌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情一忱,我是刑警寧澤莲蜘,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站帘营,受9級(jí)特大地震影響票渠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仪吧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一庄新、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薯鼠,春花似錦择诈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郊艘,卻和暖如春荷科,著一層夾襖步出監(jiān)牢的瞬間唯咬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國打工畏浆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胆胰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓刻获,卻偏偏與公主長得像蜀涨,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝎毡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容