BAT機器學習面試1000題系列(71-75題)
71.請寫出一段Python代碼實現刪除一個list裡面的重複元素 @Tom_junsong,http://www.cnblogs.com/tom-gao/p/6645859.html
1,使用set函數,set(list)2,使用字典函數,>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]>>> b={}>>>b=b.fromkeys(a)
>>>c=list(b.keys())>>> c72.編程用sort進行排序,然後從最後一個元素開始判斷 a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
@Tom_junsong,http://www.cnblogs.com/tom-gao/p/6645859.htmla.sort()last=a[-1]for i inrange(len(a)-2,-1,-1):if last==a[i]:del a[i]else:last=a[i]
print(a)73.Python裡面如何生成隨機數? @Tom_junsong,http://www.cnblogs.com/tom-gao/p/6645859.html
random模塊 隨機整數:random.randint(a,b):返回隨機整數x,a<=x<=b random.randrange(start,stop,[,step]):返回一個範圍在(start,stop,step)之間的隨機整數,不包括結束值。 隨機實數:random.random( ):返回0到1之間的浮點數 random.uniform(a,b):返回指定範圍內的浮點數。更多Python筆試面試題請看:http://python.jobbole.com/85231/74.說說常見的損失函數
對於給定的輸入X,由f(X)給出相應的輸出Y,這個輸出的預測值f(X)與真實值Y可能一致也可能不一致(要知道,有時損失或誤差是不可避免的),用一個損失函數來度量預測錯誤的程度。損失函數記為L(Y, f(X))。
常用的損失函數有以下幾種(基本引用自《統計學習方法》):
如此,SVM有第二種理解,即最優化+損失最小,或如@夏粉_百度所說「可從損失函數和優化演算法角度看SVM,boosting,LR等演算法,可能會有不同收穫」。關於SVM的更多理解請參考:http://blog.csdn.net/v_july_v/article/details/7624837
75.簡單介紹下logistics回歸
Logistic回歸目的是從特徵學習出一個0/1分類模型,而這個模型是將特性的線性組合作為自變數,由於自變數的取值範圍是負無窮到正無窮。因此,使用logistic函數(或稱作sigmoid函數)將自變數映射到(0,1)上,映射後的值被認為是屬於y=1的概率。
假設函數
其中x是n維特徵向量,函數g就是logistic函數。
而
的圖像是
可以看到,將無窮映射到了(0,1)。
而假設函數就是特徵屬於y=1的概率。
從而,當我們要判別一個新來的特徵屬於哪個類時,只需求
即可,若
大於0.5就是y=1的類,反之屬於y=0類。
此外,
只和
有關,
>0,那麼
,而g(z)只是用來映射,真實的類別決定權還是在於
。再者,當
時,
=1,反之
=0。如果我們只從
出發,希望模型達到的目標就是讓訓練數據中y=1的特徵
,而是y=0的特徵
。Logistic回歸就是要學習得到
,使得正例的特徵遠大於0,負例的特徵遠小於0,而且要在全部訓練實例上達到這個目標。
接下來,嘗試把logistic回歸做個變形。首先,將使用的結果標籤y = 0和y = 1替換為y = -1,y = 1,然後將
(
)中的
替換為b,最後將後面的
替換為
(即
)。如此,則有了
。也就是說除了y由y=0變為y=-1外,線性分類函數跟logistic回歸的形式化表示
沒區別。
進一步,可以將假設函數
中的g(z)做一個簡化,將其簡單映射到y=-1和y=1上。映射關係如下:
推薦閱讀:
※如何用C語言生成(0,1)之間的隨機浮點數?
※我感覺c語言的隨機數很奇怪,請大師詳答?
※真實隨機數如何產生?為什麼說真實隨機數可以抵抗惡意攻擊?
※可以通過未賦值的變數產生隨機數嗎?
※一個無理數現有精度的下一位是否是隨機的?