BAT機器學習面試1000題系列(71-75題)

71.請寫出一段Python代碼實現刪除一個list裡面的重複元素 @Tom_junsong,cnblogs.com/tom-gao/p/6

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())

>>> c

72.編程用sort進行排序,然後從最後一個元素開始判斷 a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]

@Tom_junsong,cnblogs.com/tom-gao/p/6

a.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,cnblogs.com/tom-gao/p/6

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筆試面試題請看:python.jobbole.com/8523

74.說說常見的損失函數

對於給定的輸入X,由f(X)給出相應的輸出Y,這個輸出的預測值f(X)與真實值Y可能一致也可能不一致(要知道,有時損失或誤差是不可避免的),用一個損失函數來度量預測錯誤的程度。損失函數記為L(Y, f(X))。

常用的損失函數有以下幾種(基本引用自《統計學習方法》):

如此,SVM有第二種理解,即最優化+損失最小,或如@夏粉_百度所說「可從損失函數和優化演算法角度看SVM,boosting,LR等演算法,可能會有不同收穫」。關於SVM的更多理解請參考:blog.csdn.net/v_july_v/

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語言的隨機數很奇怪,請大師詳答?
真實隨機數如何產生?為什麼說真實隨機數可以抵抗惡意攻擊?
可以通過未賦值的變數產生隨機數嗎?
一個無理數現有精度的下一位是否是隨機的?

TAG:随机数 | Python教程 | 在线机器学习 |