91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kNN算法怎么使用

發布時間:2021-12-16 10:32:25 來源:億速云 閱讀:179 作者:iii 欄目:云計算

這篇文章主要講解了“kNN算法怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“kNN算法怎么使用”吧!

一、概述

優點:精度高、對異常值不敏感、無數據輸入限定

缺點:計算復雜度高、空間復雜度高

使用數據范圍:數值型和標稱型。

二、原理

存在一個樣本數據集合(訓練樣本集合),并且樣本集中每一個數據都存在標簽,即我們知道樣本集中每一個數據與所屬分類的對應關系。輸入沒有標簽的新數據,將新數據的每個特征值與樣本集中的數據對應的特征進行比較。然后算法提取樣本集中特征最相似的分類標簽。通常k不大于20的整數。

三、例子1:電影分類

分類愛情片和動作片。統計很多電影中打斗鏡頭和接吻鏡頭。

電影名稱 打斗鏡頭接吻鏡頭電影類型

california man

3104愛情片
he's not really into dudes2100愛情片
beautiful woman181愛情片
kevin longblade10110動作片

robo slayer 3000

995動作片

amped II

982動作片
?1890?
電影名稱 與未知電影距離

california man

20.5
he's not really into dudes18.7
beautiful woman19.2
kevin longblade115.3

robo slayer 3000

117.4

amped II

118.9

假定k=3 依次是california man,he's not really into dudes,beautiful woman ===> 判定為愛情片

四、例子2:約會網站的配對效果

玩視頻游戲所耗時間百分比

每年獲得飛行常客里程數每周消費的冰激凌公升數樣本分類
0.84000.51
121340000.93
0200001.12

1.收集數據:提供文本文件

    ==>每個樣本數據占據一行,總共1000行,包含3個特征

    a.每年獲得飛行常客里程數

    b.玩視頻游戲所耗時間百分比

    c.每周消費的冰激凌公升數    

2.準備數據:數據歸一化

    kNN使用歐幾里得距離公式

    [(0.8-12)^2 + (400 - 134000)^2 + (0.5 - 0.9)^2]^0.5

    ===> 容易看出,數值大的屬性對計算結果的影響最大。也就是說“每年獲得飛行常客里程數”的影響要遠遠大于其他屬性的影響。我們需要等權重特征化。

    newValue = (oldValue - min)/(max - min)

$ cat datingTestSet2.txt | head -n 4
40920	8.326976	0.953952	3
14488	7.153469	1.673904	2
26052	1.441871	0.805124	1
75136	13.147394	0.428964	1


# 文本文件轉換成數據矩陣
def file2matrix(filename):
    fr = open(filename)
    arrayOLines = fr.readlines()                        ==>讀取文檔有多少行,要構建矩陣
    numberOfLines = len(arrayOLines)
    returnMat = zeros((numberOfLines,3))                ==>初始0矩陣
    classLabelVector= []
    index = 0
    
    for line in arrayOLines:
        line = line.strip()
        listFromLine = line.split('\t')                 ==> \t 分隔每一行
        returnMat[index,:] = listFromLine[0:3]          ==> 每一行特征值組成矩陣的一行
        classLabelVector.append(int(listFromLine[-1]))  ==> 標簽向量
        index += 1
        
    return returnMat,classLabelVector
    
    
#數據歸一化    
#newValue = (oldValue - min)/(max - min)
def autoNorm(dataSet):
    minVals = dataSet.min(0)                            ==>計算矩陣每一列最小值
    maxVals = dataSet.max(0)                            ==>計算矩陣每一列最大值
    ranges = maxVals - minVals                          ==>矩陣相減,即對應行向減
    m = dataSet.shape[0]                                ==>矩陣行數
    normDataSet = dataSet - tile(minVals, (m,1))        ==>tile(minVals, (m,1))構建行數相同的最小值矩陣
    normDataSet = normDataSet / tile(ranges, (m,1))     ==>tile(ranges, (m,1))構建行數相同的差值矩陣
    
    return normDataSet,ranges,minVals
   
   
   
def datingClassTest():
    hoRatio = 0.1                                     ==>切分樣本,一部分作為訓練樣本,一部分作為測試樣本
    datingDataMat,datingLabels = file2matrix('')      ==>加載文本文件,并轉化為數據矩陣
    normMat,ranges,minVals = autoNorm(datingDataMat)  ==>數據歸一化
    m = normMat.shape[0]
    numTestVecs = int(m*hoRatio)
    errorCount = 0.0
    
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i,:], normMat[numTestVecs:m,:], datingLabels[numTestVecs:m], 3)                    ==>對輸入的測試集的每一行進行判定
        print 'the classifier came back with:%d, the real answer is:%d' % (classifierResult,datingLabels[i])
        if(classifierResult != datingLabels[i]):    ==>對比計算結果和原始結果,統計錯誤率
            errorCount+=1.0
    print 'the total error rate is: %f' % (errorCount/float(numTestVecs))
    print errorCount

感謝各位的閱讀,以上就是“kNN算法怎么使用”的內容了,經過本文的學習后,相信大家對kNN算法怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

knn
AI

岑巩县| 海林市| 新余市| 图们市| 黄梅县| 新津县| 集贤县| 云安县| 泰来县| 新余市| 宿迁市| 江北区| 淳化县| 光山县| 曲沃县| 盘山县| 成安县| 红桥区| 娄烦县| 招远市| 房产| 平塘县| 海晏县| 团风县| 满洲里市| 凤城市| 雅江县| 嘉荫县| 德江县| 恭城| 福建省| 嵩明县| 兴宁市| 毕节市| 卓尼县| 金平| 绥芬河市| 高安市| 准格尔旗| 乌拉特前旗| 南城县|