精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

機器學(xué)習(xí)之用Python從零實現(xiàn)貝葉斯分類器

開發(fā) 后端 機器學(xué)習(xí)
通過本教程,你將學(xué)到樸素貝葉斯算法的原理和Python版本的逐步實現(xiàn)。

樸素貝葉斯算法簡單高效,在處理分類問題上,是應(yīng)該首先考慮的方法之一。

通過本教程,你將學(xué)到樸素貝葉斯算法的原理和Python版本的逐步實現(xiàn)。

更新:查看后續(xù)的關(guān)于樸素貝葉斯使用技巧的文章“Better Naive Bayes: 12 Tips To Get The Most From The Naive Bayes Algorithm” 

 

 

[[194741]] 

樸素貝葉斯分類器,Matt Buck保留部分版權(quán)

關(guān)于樸素貝葉斯

樸素貝葉斯算法是一個直觀的方法,使用每個屬性歸屬于某個類的概率來做預(yù)測。你可以使用這種監(jiān)督性學(xué)習(xí)方法,對一個預(yù)測性建模問題進行概率建模。

給定一個類,樸素貝葉斯假設(shè)每個屬性歸屬于此類的概率獨立于其余所有屬性,從而簡化了概率的計算。這種強假定產(chǎn)生了一個快速、有效的方法。

給定一個屬性值,其屬于某個類的概率叫做條件概率。對于一個給定的類值,將每個屬性的條件概率相乘,便得到一個數(shù)據(jù)樣本屬于某個類的概率。

我們可以通過計算樣本歸屬于每個類的概率,然后選擇具有最高概率的類來做預(yù)測。

通常,我們使用分類數(shù)據(jù)來描述樸素貝葉斯,因為這樣容易通過比率來描述、計算。一個符合我們目的、比較有用的算法需要支持數(shù)值屬性,同時假設(shè)每一個數(shù)值屬性服從正態(tài)分布(分布在一個鐘形曲線上),這又是一個強假設(shè),但是依然能夠給出一個健壯的結(jié)果。

預(yù)測糖尿病的發(fā)生

本文使用的測試問題是“皮馬印第安人糖尿病問題”。

這個問題包括768個對于皮馬印第安患者的醫(yī)療觀測細節(jié),記錄所描述的瞬時測量取自諸如患者的年紀,懷孕和血液檢查的次數(shù)。所有患者都是21歲以上(含21歲)的女性,所有屬性都是數(shù)值型,而且屬性的單位各不相同。

每一個記錄歸屬于一個類,這個類指明以測量時間為止,患者是否是在5年之內(nèi)感染的糖尿病。如果是,則為1,否則為0。

機器學(xué)習(xí)文獻中已經(jīng)多次研究了這個標準數(shù)據(jù)集,好的預(yù)測精度為70%-76%。

下面是pima-indians.data.csv文件中的一個樣本,了解一下我們將要使用的數(shù)據(jù)。

注意:下載文件,然后以.csv擴展名保存(如:pima-indians-diabetes.data.csv)。查看文件中所有屬性的描述。

  1. 6,148,72,35,0,33.6,0.627,50,1 
  2.  
  3. 1,85,66,29,0,26.6,0.351,31,0 
  4.  
  5. 8,183,64,0,0,23.3,0.672,32,1 
  6.  
  7. 1,89,66,23,94,28.1,0.167,21,0 
  8.  
  9. 0,137,40,35,168,43.1,2.288,33,1  

樸素貝葉斯算法教程

教程分為如下幾步:

1.處理數(shù)據(jù):從CSV文件中載入數(shù)據(jù),然后劃分為訓(xùn)練集和測試集。

2.提取數(shù)據(jù)特征:提取訓(xùn)練數(shù)據(jù)集的屬性特征,以便我們計算概率并做出預(yù)測。

3.單一預(yù)測:使用數(shù)據(jù)集的特征生成單個預(yù)測。

4.多重預(yù)測:基于給定測試數(shù)據(jù)集和一個已提取特征的訓(xùn)練數(shù)據(jù)集生成預(yù)測。

5.評估精度:評估對于測試數(shù)據(jù)集的預(yù)測精度作為預(yù)測正確率。

6.合并代碼:使用所有代碼呈現(xiàn)一個完整的、獨立的樸素貝葉斯算法的實現(xiàn)。

1.處理數(shù)據(jù)

首先加載數(shù)據(jù)文件。CSV格式的數(shù)據(jù)沒有標題行和任何引號。我們可以使用csv模塊中的open函數(shù)打開文件,使用reader函數(shù)讀取行數(shù)據(jù)。

我們也需要將以字符串類型加載進來屬性轉(zhuǎn)換為我們可以使用的數(shù)字。下面是用來加載匹馬印第安人數(shù)據(jù)集(Pima indians dataset)的loadCsv()函數(shù)。

  1. import csv 
  2.  
  3. def loadCsv(filename): 
  4.  
  5. lines = csv.reader(open(filename, "rb")) 
  6.  
  7. dataset = list(lines) 
  8.  
  9. for i in range(len(dataset)): 
  10.  
  11. dataset[i] = [float(x) for x in dataset[i]] 
  12.  
  13. return dataset  

我們可以通過加載皮馬印第安人數(shù)據(jù)集,然后打印出數(shù)據(jù)樣本的個數(shù),以此測試這個函數(shù)。

  1. filename = 'pima-indians-diabetes.data.csv' 
  2.  
  3. dataset = loadCsv(filename) 
  4.  
  5. print('Loaded data file {0} with {1} rows').format(filename, len(dataset))  

運行測試,你會看到如下結(jié)果: 

  1. Loaded data file iris.data.csv with 150 rows 

下一步,我們將數(shù)據(jù)分為用于樸素貝葉斯預(yù)測的訓(xùn)練數(shù)據(jù)集,以及用來評估模型精度的測試數(shù)據(jù)集。我們需要將數(shù)據(jù)集隨機分為包含67%的訓(xùn)練集合和包含33%的測試集(這是在此數(shù)據(jù)集上測試算法的通常比率)。

下面是splitDataset()函數(shù),它以給定的劃分比例將數(shù)據(jù)集進行劃分。

  1. import random 
  2.  
  3. def splitDataset(dataset, splitRatio): 
  4.  
  5.     trainSize = int(len(dataset) * splitRatio) 
  6.  
  7.     trainSet = [] 
  8.  
  9.     copy = list(dataset) 
  10.  
  11.     while len(trainSet) < trainSize: 
  12.  
  13.         index = random.randrange(len(copy)) 
  14.  
  15.         trainSet.append(copy.pop(index)) 
  16.  
  17.     return [trainSet, copy]  

我們可以定義一個具有5個樣例的數(shù)據(jù)集來進行測試,首先它分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,然后打印出來,看看每個數(shù)據(jù)樣本最終落在哪個數(shù)據(jù)集。

  1. dataset = [[1], [2], [3], [4], [5]] 
  2.  
  3. splitRatio = 0.67 
  4.  
  5. train, test = splitDataset(dataset, splitRatio) 
  6.  
  7. print('Split {0} rows into train with {1} and test with {2}').format(len(dataset), train, test)  

運行測試,你會看到如下結(jié)果:

  1. Split 5 rows into train with [[4], [3], [5]] and test with [[1], [2]] 

提取數(shù)據(jù)特征

樸素貝葉斯模型包含訓(xùn)練數(shù)據(jù)集中數(shù)據(jù)的特征,然后使用這個數(shù)據(jù)特征來做預(yù)測。

所收集的訓(xùn)練數(shù)據(jù)的特征,包含相對于每個類的每個屬性的均值和標準差。舉例來說,如果如果有2個類和7個數(shù)值屬性,然后我們需要每一個屬性(7)和類(2)的組合的均值和標準差,也就是14個屬性特征。

在對特定的屬性歸屬于每個類的概率做計算、預(yù)測時,將用到這些特征。

我們將數(shù)據(jù)特征的獲取劃分為以下的子任務(wù):

  1. 按類別劃分數(shù)據(jù)
  2. 計算均值
  3. 計算標準差
  4. 提取數(shù)據(jù)集特征
  5. 按類別提取屬性特征

按類別劃分數(shù)據(jù)

首先將訓(xùn)練數(shù)據(jù)集中的樣本按照類別進行劃分,然后計算出每個類的統(tǒng)計數(shù)據(jù)。我們可以創(chuàng)建一個類別到屬于此類別的樣本列表的的映射,并將整個數(shù)據(jù)集中的樣本分類到相應(yīng)的列表。

下面的SeparateByClass()函數(shù)可以完成這個任務(wù):

  1. def separateByClass(dataset): 
  2.  
  3.     separated = {} 
  4.  
  5.     for i in range(len(dataset)): 
  6.  
  7.         vector = dataset[i] 
  8.  
  9.         if (vector[-1] not in separated): 
  10.  
  11.             separated[vector[-1]] = [] 
  12.  
  13.         separated[vector[-1]].append(vector) 
  14.  
  15.     return separated  

可以看出,函數(shù)假設(shè)樣本中最后一個屬性(-1)為類別值,返回一個類別值到數(shù)據(jù)樣本列表的映射。

我們可以用一些樣本數(shù)據(jù)測試如下:

  1. dataset = [[1,20,1], [2,21,0], [3,22,1]] 
  2.  
  3. separated = separateByClass(dataset) 
  4.  
  5. print('Separated instances: {0}').format(separated)  

運行測試,你會看到如下結(jié)果:

  1. Separated instances: {0: [[2, 21, 0]], 1: [[1, 20, 1], [3, 22, 1]]} 

計算均值

我們需要計算在每個類中每個屬性的均值。均值是數(shù)據(jù)的中點或者集中趨勢,在計算概率時,我們用它作為高斯分布的中值。

我們也需要計算每個類中每個屬性的標準差。標準差描述了數(shù)據(jù)散布的偏差,在計算概率時,我們用它來刻畫高斯分布中,每個屬性所期望的散布。

標準差是方差的平方根。方差是每個屬性值與均值的離差平方的平均數(shù)。注意我們使用N-1的方法(譯者注:參見無偏估計),也就是在在計算方差時,屬性值的個數(shù)減1。

  1. import math 
  2.  
  3. def mean(numbers): 
  4.  
  5.     return sum(numbers)/float(len(numbers)) 
  6.  
  7.   
  8.  
  9. def stdev(numbers): 
  10.  
  11.     avg = mean(numbers) 
  12.  
  13.     variance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-1) 
  14.  
  15.     return math.sqrt(variance)  

通過計算從1到5這5個數(shù)的均值來測試函數(shù)。

  1. numbers = [1,2,3,4,5] 
  2.  
  3. print('Summary of {0}: mean={1}, stdev={2}').format(numbers, mean(numbers), stdev(numbers))  

運行測試,你會看到如下結(jié)果:

  1. Summary of [1, 2, 3, 4, 5]: mean=3.0, stdev=1.58113883008 

提取數(shù)據(jù)集的特征

現(xiàn)在我們可以提取數(shù)據(jù)集特征。對于一個給定的樣本列表(對應(yīng)于某個類),我們可以計算每個屬性的均值和標準差。

zip函數(shù)將數(shù)據(jù)樣本按照屬性分組為一個個列表,然后可以對每個屬性計算均值和標準差。

  1. def summarize(dataset): 
  2.  
  3. summaries = [(mean(attribute), stdev(attribute)) for attribute in zip(*dataset)] 
  4.  
  5. del summaries[-1] 
  6.  
  7. return summaries  

我們可以使用一些測試數(shù)據(jù)來測試這個summarize()函數(shù),測試數(shù)據(jù)對于第一個和第二個數(shù)據(jù)屬性的均值和標準差顯示出顯著的不同。

  1. dataset = [[1,20,0], [2,21,1], [3,22,0]] 
  2.  
  3. summary = summarize(dataset) 
  4.  
  5. print('Attribute summaries: {0}').format(summary)  

運行測試,你會看到如下結(jié)果:

  1. Attribute summaries: [(2.0, 1.0), (21.0, 1.0)] 

按類別提取屬性特征

合并代碼,我們首先將訓(xùn)練數(shù)據(jù)集按照類別進行劃分,然后計算每個屬性的摘要。

  1. def summarizeByClass(dataset): 
  2.  
  3.     separated = separateByClass(dataset) 
  4.  
  5.     summaries = {} 
  6.  
  7.     for classValue, instances in separated.iteritems(): 
  8.  
  9.         summaries[classValue] = summarize(instances) 
  10.  
  11.     return summaries  

使用小的測試數(shù)據(jù)集來測試summarizeByClass()函數(shù)。

  1. dataset = [[1,20,1], [2,21,0], [3,22,1], [4,22,0]] 
  2.  
  3. summary = summarizeByClass(dataset) 
  4.  
  5. print('Summary by class value: {0}').format(summary)  

運行測試,你會看到如下結(jié)果:

  1. Summary by class value: 
  2.  
  3. {0: [(3.0, 1.4142135623730951), (21.5, 0.7071067811865476)], 
  4.  
  5. 1: [(2.0, 1.4142135623730951), (21.0, 1.4142135623730951)]}  

預(yù)測

我們現(xiàn)在可以使用從訓(xùn)練數(shù)據(jù)中得到的摘要來做預(yù)測。做預(yù)測涉及到對于給定的數(shù)據(jù)樣本,計算其歸屬于每個類的概率,然后選擇具有最大概率的類作為預(yù)測結(jié)果。

我們可以將這部分劃分成以下任務(wù):

  1. 計算高斯概率密度函數(shù)
  2. 計算對應(yīng)類的概率
  3. 單一預(yù)測
  4. 評估精度

計算高斯概率密度函數(shù)

給定來自訓(xùn)練數(shù)據(jù)中已知屬性的均值和標準差,我們可以使用高斯函數(shù)來評估一個給定的屬性值的概率。

已知每個屬性和類值的屬性特征,在給定類值的條件下,可以得到給定屬性值的條件概率。

關(guān)于高斯概率密度函數(shù),可以查看參考文獻??傊?,我們要把已知的細節(jié)融入到高斯函數(shù)(屬性值,均值,標準差),并得到屬性值歸屬于某個類的似然(譯者注:即可能性)。

在calculateProbability()函數(shù)中,我們首先計算指數(shù)部分,然后計算等式的主干。這樣可以將其很好地組織成2行。

  1. import math 
  2.  
  3. def calculateProbability(x, mean, stdev): 
  4.  
  5.     exponent = math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2)))) 
  6.  
  7.     return (1 / (math.sqrt(2*math.pi) * stdev)) * exponent  

使用一些簡單的數(shù)據(jù)測試如下:

  1. x = 71.5 
  2.  
  3. mean = 73 
  4.  
  5. stdev = 6.2 
  6.  
  7. probability = calculateProbability(x, mean, stdev) 
  8.  
  9. print('Probability of belonging to this class: {0}').format(probability)  

運行測試,你會看到如下結(jié)果:

  1. Probability of belonging to this class: 0.0624896575937 

計算所屬類的概率

既然我們可以計算一個屬性屬于某個類的概率,那么合并一個數(shù)據(jù)樣本中所有屬性的概率,最后便得到整個數(shù)據(jù)樣本屬于某個類的概率。

使用乘法合并概率,在下面的calculClassProbilities()函數(shù)中,給定一個數(shù)據(jù)樣本,它所屬每個類別的概率,可以通過將其屬性概率相乘得到。結(jié)果是一個類值到概率的映射。

  1. def calculateClassProbabilities(summaries, inputVector): 
  2.  
  3.     probabilities = {} 
  4.  
  5.     for classValue, classSummaries in summaries.iteritems(): 
  6.  
  7.         probabilities[classValue] = 1 
  8.  
  9.         for i in range(len(classSummaries)): 
  10.  
  11.             mean, stdev = classSummaries[i] 
  12.  
  13.             x = inputVector[i] 
  14.  
  15.             probabilities[classValue] *= calculateProbability(x, mean, stdev) 
  16.  
  17.     return probabilities  

測試calculateClassProbabilities()函數(shù)。

  1. summaries = {0:[(1, 0.5)], 1:[(20, 5.0)]} 
  2.  
  3. inputVector = [1.1, '?'
  4.  
  5. probabilities = calculateClassProbabilities(summaries, inputVector) 
  6.  
  7. print('Probabilities for each class: {0}').format(probabilities)  

運行測試,你會看到如下結(jié)果:

  1. Probabilities for each class: {0: 0.7820853879509118, 1: 6.298736258150442e-05} 

單一預(yù)測

既然可以計算一個數(shù)據(jù)樣本屬于每個類的概率,那么我們可以找到最大的概率值,并返回關(guān)聯(lián)的類。

下面的predict()函數(shù)可以完成以上任務(wù)。

  1. def predict(summaries, inputVector): 
  2.  
  3.     probabilities = calculateClassProbabilities(summaries, inputVector) 
  4.  
  5.     bestLabel, bestProb = None, -1 
  6.  
  7.     for classValue, probability in probabilities.iteritems(): 
  8.  
  9.         if bestLabel is None or probability > bestProb: 
  10.  
  11.             bestProb = probability 
  12.  
  13.             bestLabel = classValue 
  14.  
  15.     return bestLabel  

測試predict()函數(shù)如下:

  1. summaries = {'A':[(1, 0.5)], 'B':[(20, 5.0)]} 
  2.  
  3. inputVector = [1.1, '?'
  4.  
  5. result = predict(summaries, inputVector) 
  6.  
  7. print('Prediction: {0}').format(result)  

運行測試,你會得到如下結(jié)果:

  1. Prediction: A 

多重預(yù)測

最后,通過對測試數(shù)據(jù)集中每個數(shù)據(jù)樣本的預(yù)測,我們可以評估模型精度。getPredictions()函數(shù)可以實現(xiàn)這個功能,并返回每個測試樣本的預(yù)測列表。

  1. def getPredictions(summaries, testSet): 
  2.  
  3.     predictions = [] 
  4.  
  5.     for i in range(len(testSet)): 
  6.  
  7.         result = predict(summaries, testSet[i]) 
  8.  
  9.         predictions.append(result) 
  10.  
  11.     return predictions  

測試getPredictions()函數(shù)如下。

  1. summaries = {'A':[(1, 0.5)], 'B':[(20, 5.0)]} 
  2.  
  3. testSet = [[1.1, '?'], [19.1, '?']] 
  4.  
  5. predictions = getPredictions(summaries, testSet) 
  6.  
  7. print('Predictions: {0}').format(predictions)  

運行測試,你會看到如下結(jié)果:

  1. Predictions: ['A''B'

計算精度

預(yù)測值和測試數(shù)據(jù)集中的類別值進行比較,可以計算得到一個介于0%~100%精確率作為分類的精確度。getAccuracy()函數(shù)可以計算出這個精確率。

  1. def getAccuracy(testSet, predictions): 
  2.  
  3.     correct = 0 
  4.  
  5.     for x in range(len(testSet)): 
  6.  
  7.         if testSet[x][-1] == predictions[x]: 
  8.  
  9.             correct += 1 
  10.  
  11.     return (correct/float(len(testSet))) * 100.0  

我們可以使用如下簡單的代碼來測試getAccuracy()函數(shù)。

  1. testSet = [[1,1,1,'a'], [2,2,2,'a'], [3,3,3,'b']] 
  2.  
  3. predictions = ['a''a''a'
  4.  
  5. accuracy = getAccuracy(testSet, predictions) 
  6.  
  7. print('Accuracy: {0}').format(accuracy)  

運行測試,你會得到如下結(jié)果:

  1. Accuracy: 66.6666666667 

合并代碼

最后,我們需要將代碼連貫起來。

下面是樸素貝葉斯Python版的逐步實現(xiàn)的全部代碼。

 

運行示例,得到如下輸出:

  1. Split 768 rows into train=514 and test=254 rows 
  2.  
  3. Accuracy: 76.3779527559%  

實現(xiàn)擴展

這一部分為你提供了擴展思路,你可以將其作為教程的一部分,使用你已經(jīng)實現(xiàn)的Python代碼,進行應(yīng)用研究。

到此,你已經(jīng)使用Python一步步完成了高斯版本的樸素貝葉斯。

你可以進一步擴展算法實現(xiàn):

計算所屬類的概率:將一個數(shù)據(jù)樣本歸屬于每個類的概率更新為一個比率。計算上就是將一個樣本數(shù)據(jù)歸屬于某個類的概率,比上其歸屬于每一個類的概率的和。舉例來說,一個樣本屬于類A的概率時0.02,屬于類B的概率時0.001,那么樣本屬于類A的可能性是(0.02/(0.02+0.001))*100 大約為95.23%。

對數(shù)概率:對于一個給定的屬性值,每個類的條件概率很小。當(dāng)將其相乘時結(jié)果會更小,那么存在浮點溢出的可能(數(shù)值太小,以至于在Python中不能表示)。一個常用的修復(fù)方案是,合并其概率的對數(shù)值。可以研究實現(xiàn)下這個改進。

名詞屬性:改進算法實現(xiàn),使其支持名詞屬性。這是十分相似的,你所收集的每個屬性的摘要信息是對于每個類的類別值的比率。潛心學(xué)習(xí)參考文獻來獲取更多信息。

不同的密度函數(shù)(伯努利或者多項式):我們已經(jīng)嘗試了高斯樸素貝葉斯,你也可以嘗試下其他分布。實現(xiàn)一個不同的分布諸如多項分布、伯努利分布或者內(nèi)核樸素貝葉斯,他們對于屬性值的分布 和/或 與類值之間的關(guān)系有不同的假設(shè)。

學(xué)習(xí)資源及深入閱讀

這一部分提供了一些用于學(xué)習(xí)更多樸素貝葉斯算法的資源,包括算法理論和工作原理,以及代碼實現(xiàn)中的實際問題。

問題

更多學(xué)習(xí)預(yù)測糖尿病發(fā)作問題的資源

  • Pima Indians Diabetes Data Set:這個頁面提供數(shù)據(jù)集文件,同時描述了各個屬性,也列出了使用該數(shù)據(jù)集的論文列表
  • Dataset File:數(shù)據(jù)集文件
  • Dataset Summary:數(shù)據(jù)集屬性的描述
  • Diabetes Dataset Results:許多標準算法在該數(shù)據(jù)集上的精度

代碼

這一部分包含流行的機器學(xué)習(xí)庫中的樸素貝葉斯的開源實現(xiàn)。如果你在考慮實現(xiàn)自己的用于實際使用的版本,可以查閱這些

  • Naive Bayes in Scikit-Learn:scikit-learn庫中樸素貝葉斯的實現(xiàn)
  • Naive Bayes documentation:scikit-learn庫中關(guān)于樸素貝葉斯的文檔和樣例代碼
  • Simple Naive Bayes in Weka:樸素貝葉斯的Weka實現(xiàn)

書籍

你應(yīng)該有幾本機器學(xué)習(xí)應(yīng)用的書籍。這一部分高亮出了常用機器學(xué)習(xí)書籍中關(guān)于樸素貝葉斯的章節(jié)。

  • Applied Predictive Modeling, page 353
  • Data Mining: Practical Machine Learning Tools and Techniques, page 94
  • Machine Learning for Hackers, page 78
  • An Introduction to Statistical Learning: with Applications in R, page 138
  • Machine Learning: An Algorithmic Perspective, page 171
  • Machine Learning in Action, page 61 (Chapter 4)
  • Machine Learning, page 177 (chapter 6) 
責(zé)任編輯:龐桂玉 來源: Python開發(fā)者
相關(guān)推薦

2024-12-09 09:44:34

機器學(xué)習(xí)模型分類器

2023-11-07 14:30:28

Python開發(fā)

2015-07-23 14:53:50

貝葉斯分類器

2018-11-14 07:41:58

機器學(xué)習(xí)算法感知器

2022-06-05 21:16:08

機器學(xué)習(xí)Python

2025-01-20 09:41:29

2017-04-25 16:45:11

2024-09-11 08:34:28

2021-02-14 14:31:35

機器學(xué)習(xí)Python模型

2021-07-29 13:06:29

Python機器學(xué)習(xí)編程語言

2024-08-23 08:57:13

PyTorch視覺轉(zhuǎn)換器ViT

2019-04-24 15:06:37

Http服務(wù)器協(xié)議

2019-01-23 11:45:47

機器學(xué)習(xí)人工智能機器人

2021-03-10 14:21:33

人工智能機器學(xué)習(xí)算法

2022-08-15 15:16:20

機器學(xué)習(xí)圖片深度學(xué)習(xí)

2017-05-09 08:48:44

機器學(xué)習(xí)

2017-11-01 17:00:13

機器學(xué)習(xí)算法MiniFlow

2020-12-24 06:54:45

Python機器學(xué)習(xí)多類分類邏輯回歸

2024-09-29 09:32:58

2020-09-24 11:46:03

Promise
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲免费成人av| 首页国产欧美久久| 亚洲国产精品久久精品怡红院 | 四虎永久在线观看| 日韩**一区毛片| 欧美成人激情视频| 国产精品无码永久免费不卡| 精品美女一区| 福利一区视频在线观看| 中文字幕欧美日韩一区二区三区 | 午夜影院免费在线观看| 天天色综合色| 亚洲免费成人av电影| 男人的天堂最新网址| 亚洲色图官网| 一区二区三区在线观看动漫| 裸模一区二区三区免费| www.激情五月.com| 美女久久久精品| 81精品国产乱码久久久久久| 91麻豆免费视频网站| 九九热线有精品视频99| 欧美成人a∨高清免费观看| 美女黄色片视频| 狠狠操一区二区三区| 亚洲精品国产品国语在线app| 久久久久久久有限公司| a天堂视频在线| 免费成人在线视频观看| 欧美亚洲国产成人精品| 欧美精品一区二区蜜桃| 999久久久亚洲| 亚洲视频在线观看视频| 免费黄色三级网站| 国产欧美自拍一区| 日韩欧美在线综合网| 日韩欧美国产片| 欧美日韩精品一区二区三区视频| 午夜精品爽啪视频| 国产九色porny| 在线观看三级视频| 亚洲欧洲三级电影| 黄瓜视频免费观看在线观看www| 男人的天堂在线免费视频| 99精品热视频| 精品一区二区三区国产| 好吊视频一二三区| 岛国精品一区二区| 国产精品成人一区二区三区| 亚洲成人777777| 国产成人av影院| 成人免费观看网站| 亚洲国产日韩在线观看| 成人禁用看黄a在线| 国产精品欧美久久| 天天摸天天干天天操| 99久久精品国产麻豆演员表| 国产乱码精品一区二区三区卡| 亚洲精品久久久狠狠狠爱| 国产成人aaa| 激情久久av| 日韩在线免费看| 国产欧美视频在线观看| 一区二区在线观看网站| www在线免费观看视频| 亚洲综合成人网| 男女高潮又爽又黄又无遮挡| 色资源二区在线视频| 欧美日韩中文在线观看| 成人国产一区二区三区| 韩国日本一区| 偷拍与自拍一区| 欧美精品一区二区三区三州| 超碰资源在线| 狠狠做深爱婷婷久久综合一区 | 日韩高清在线观看| 国产精品免费视频xxxx| 一本色道久久综合亚洲| 韩国精品久久久| 91久久大香伊蕉在人线| 亚洲精品一级片| 成人av在线一区二区三区| 国产欧美一区二区视频| 色婷婷中文字幕| 日本一区二区三区久久久久久久久不 | 制服诱惑一区二区| 国产精品一区二区在线| 国产免费不卡av| 成人做爰69片免费看网站| 久久久婷婷一区二区三区不卡| 邻居大乳一区二区三区| 国产精品无遮挡| 蜜臀在线免费观看| www.综合网.com| 色综合久久精品| 超碰在线公开97| 欧美黄色网络| 精品欧美黑人一区二区三区| 最新在线黄色网址| 日本久久精品| 欧美高清一级大片| 无码人妻精品一区二区三区9厂| 日韩vs国产vs欧美| 97视频中文字幕| 国产原创av在线| 综合电影一区二区三区| 北条麻妃av高潮尖叫在线观看| **国产精品| 亚洲免费电影一区| 印度午夜性春猛xxx交| 国产精品久久久免费 | 99精品国自产在线| 91精品综合久久久久久| 欧美夫妇交换xxx| 欧美一站二站| 欧美精品午夜视频| 伊人久久成人网| av一区二区不卡| 日韩最新中文字幕| 久久夜夜操妹子| 精品少妇一区二区三区日产乱码| 亚洲a v网站| 韩日精品在线| 国产日韩av在线播放| 人妻偷人精品一区二区三区| 1024国产精品| 国产精彩免费视频| 黑色丝袜福利片av久久| 久久婷婷国产麻豆91天堂| 亚洲第一网站在线观看| 国产成人精品免费看| 色综合影院在线观看| 天天免费亚洲黑人免费| 亚洲精品国产拍免费91在线| 久草综合在线视频| 久久99国内精品| 茄子视频成人在线观看 | 91国语精品自产拍在线观看性色 | 日韩成人av影院| 久久免费大视频| 国产精品日韩在线一区| 免费毛片在线| 午夜不卡在线视频| 四虎永久免费观看| 欧美精选在线| 91传媒视频在线观看| 天天在线视频色| 欧美私人免费视频| 精品人妻一区二区三区香蕉| 国产欧美精品| 精品国产乱码久久久久久久软件 | 一区二区三区自拍视频| 色偷偷亚洲男人天堂| 日本熟女毛茸茸| 97se亚洲国产综合自在线不卡 | 老熟妇精品一区二区三区| 欧美1区2区| 7777精品伊久久久大香线蕉语言| 日本中文字幕伦在线观看| 在线观看一区日韩| 992在线观看| 韩国视频一区二区| 久久av秘一区二区三区| 青青久久精品| 日韩小视频在线| 一级成人免费视频| 国产精品久久久久桃色tv| 国产福利在线免费| 亚洲国产精品久久久天堂| 亚洲综合视频1区| а√天堂8资源在线官网| 精品区一区二区| 日韩欧美亚洲视频| 国产天堂亚洲国产碰碰| 人人干人人干人人| 亚洲精品网址| 国产精品乱子乱xxxx| 嗯~啊~轻一点视频日本在线观看| 欧美成人女星排名| 欧美三级一区二区三区| 久久久久亚洲蜜桃| 国产免费又粗又猛又爽| 国产精品99一区二区三| 99久久精品无码一区二区毛片 | 欧美人妖视频| 91黄色8090| 69av在线| 亚洲精品一区二区三区在线观看| 国产在线免费视频| 久久综合久久鬼色中文字| 国产麻花豆剧传媒精品mv在线| 日韩不卡一区| 国产91社区| 亚洲天堂一区二区| 九九九久久国产免费| 国产免费的av| 一本久道中文字幕精品亚洲嫩| 国产精品suv一区二区88| 国产福利精品一区二区| av免费观看网| 99久久精品国产亚洲精品| 国产伦理久久久| 欧美日韩亚洲国产| 欧美成人手机在线| 亚洲 国产 欧美 日韩| 欧美高清视频在线高清观看mv色露露十八 | 欧美精品高清| 久久天天躁狠狠躁夜夜爽蜜月| 日韩在线观看视频网站| 欧美日韩视频在线第一区| 国产稀缺真实呦乱在线| 日本一区二区高清| 亚洲乱妇老熟女爽到高潮的片| 日本伊人精品一区二区三区观看方式| 国产精品久久成人免费观看| 先锋影音国产精品| 亚洲精品欧美极品| 日本精品在线一区| 992tv成人免费视频| 18av在线视频| 一区二区亚洲精品国产| 手机在线精品视频| 91精品国产91久久久久久一区二区| 久久国产视频一区| 亚洲一区二区中文在线| 麻豆明星ai换脸视频| 久久久久久久久久电影| 中国特级黄色大片| 国产一区二区三区久久久 | 夜鲁夜鲁夜鲁视频在线播放| 久久五月天综合| 超碰在线国产| 精品黑人一区二区三区久久 | 自拍偷拍第9页| 久久精品这里都是精品| 亚洲天堂2024| 国产成人欧美日韩在线电影| 欧美一级小视频| 日韩成人伦理电影在线观看| 欧美色图另类小说| 香蕉久久a毛片| 久草视频国产在线| 影视一区二区| 欧美爱爱视频网站| 日本精品黄色| 亚洲乱码一区二区三区| 精品视频免费在线观看| 欧美精品七区| 美腿丝袜亚洲图片| 蜜桃av色综合| 色棕色天天综合网| 欧美成人第一区| 欧洲精品一区| 国产精品10p综合二区| 日韩中文字幕| ts人妖另类在线| 一区二区三区欧洲区| 91青青草免费观看| 亚洲三级av| 国产精品10p综合二区| 成功精品影院| 国产在线一区二区三区四区| 黄色成人美女网站| 蜜桃视频在线观看成人| 欧美性生活一级片| 国产一区免费观看| 亚洲人成精品久久久| 欧美一区三区二区在线观看| 国产99精品一区| 污视频在线免费观看一区二区三区 | 欧美美女一区二区在线观看| 国产精品欧美久久久久天天影视| 欧美久久久久久久久久| 国产人妖一区二区| 精品久久一区二区三区| 黄色小视频免费观看| 亚洲精品一线二线三线| 风间由美一区| 久久精品国产一区| 精品精品导航| 日本国产精品视频| 只有精品亚洲| 鬼打鬼之黄金道士1992林正英| 超碰成人福利| 久久综合九九| 亚洲欧美综合国产精品一区| 国产真人做爰毛片视频直播| 亚洲一区欧美二区| 欧美美女一级片| 成人免费黄色在线| 中文字幕乱码一区| 中文av一区二区| 国产一级做a爰片在线看免费| 亚洲一区二区三区小说| 波多野结衣爱爱| 日韩女优毛片在线| 国产在线观看免费| 欧美另类第一页| 中文字幕人成乱码在线观看 | 国产av熟女一区二区三区| 宅男噜噜噜66国产日韩在线观看| 狠狠躁狠狠躁视频专区| 国产91精品一区二区麻豆网站| 国产熟妇久久777777| 国产精品久久午夜| www.日本精品| 精品久久久久久久久久久院品网 | 最近2019年好看中文字幕视频 | 久久久久久久久爱| 草民电影神马电影一区二区| 高清免费日韩| 性欧美欧美巨大69| 天堂av在线网站| 波多野结衣精品在线| 久久爱一区二区| 色综合色狠狠综合色| 一级aaaa毛片| 亚洲女人天堂成人av在线| 影音先锋男人资源在线| 国产精品91一区| 一区二区在线视频观看| 视频一区亚洲| 最新日韩在线| 国产免费a级片| 国产精品免费视频网站| 美日韩一二三区| 精品国产污污免费网站入口 | 在线观看欧美| 亚洲一区在线免费| 久久九九国产| 亚洲婷婷在线观看| 亚洲精品乱码久久久久久日本蜜臀| 高潮无码精品色欲av午夜福利 | 动漫av一区二区三区| 一级做a爰片久久毛片美女图片| 肉体视频在线| 91免费版网站入口| 日韩免费在线| 男女啪啪网站视频| 91丨porny丨首页| 国产无套内射又大又猛又粗又爽| 欧美日韩成人一区二区| 95在线视频| 国产精品欧美久久久| 免费观看久久av| 国产成人久久婷婷精品流白浆| 99久久精品一区二区| 国产真实的和子乱拍在线观看| 678五月天丁香亚洲综合网| 韩国av网站在线| 国产色婷婷国产综合在线理论片a| 精品国产一区二区三区久久久蜜臀| 无码中文字幕色专区| 成人动漫av在线| 久久在线视频精品| 欧美一区二区三区啪啪| 91亚洲天堂| 岛国一区二区三区高清视频| 欧美伊人影院| 色哟哟免费视频| 一区二区三区不卡视频| 亚洲精品一级片| 久久乐国产精品| 欧美激情极品| 116极品美女午夜一级| 久久精品亚洲精品国产欧美kt∨| 五月天婷婷激情| 亚洲片国产一区一级在线观看| 国精产品一区一区三区四川| 精品乱码一区二区三区| 欧美日韩蜜桃| 国产精品果冻传媒| 五月天婷婷综合| 男人av在线| 91香蕉亚洲精品| 亚洲午夜精品久久久久久app| 日本一级大毛片a一| 欧美日韩免费在线观看| 黄色小视频在线观看| 成人国产精品免费视频| 色婷婷亚洲mv天堂mv在影片| 黄色a级三级三级三级| 亚洲va韩国va欧美va精品| 五月激情丁香婷婷| 91精品免费久久久久久久久| 国产精品v日韩精品v欧美精品网站 | 波多野结衣视频一区二区| 精品在线不卡| 国产在线播放一区| 日本三级免费看| 亚洲片av在线| 精品伊人久久| 亚洲熟妇无码另类久久久| 国产精品美女www爽爽爽| www.成人在线观看| 热99久久精品| 欧美99久久| 公肉吊粗大爽色翁浪妇视频| 欧美巨大另类极品videosbest | 欧美国产美女|