第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

機(jī)器學(xué)習(xí) Day 8 | K-NN算法的簡(jiǎn)單實(shí)現(xiàn)(2)

机器学习第七天 逐步分析昨日的数字识别

KNN算法伪代码:

def classify0(inX, dataSet, labels, k):
    """
    距离度量 度量公式为欧氏距离
    inX            测试样本的图像文本转化的向量
    dataSet        <class 'numpy.ndarray'>   所有训练样本的m*1024的矩阵
    labels         存储0~9对应的index位置      len(labels)= m
    k              对查询点标签影响显著(效果拔群)。k值小的时候 近似误差小,估计误差大。 k值大 近似误差大,估计误差小。
    本例中取 k=3,11个错误
       若   k=2, 12个错误                  
            k=4, 11个错误
            k=5, 17个错误
    """
    # >>print(type(dataSet))
    #   <class 'numpy.ndarray'>
    # shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度。
    dataSetSize = dataSet.shape[0]    
    # 原型:numpy.tile(A,reps)
    # tile共有2个参数,A指待输入数组,reps则决定A重复的次数。整个函数用于重复数组A来构建新的数组。
    # 生成intX * dataSetSize的矩阵
    # 例: inX = [1,2,3]
    #     dataSetSize = 3      
    #   >>  print(tile(inX, (dataSetSize, 1)))
    #          [[3 3 3]
    #           [3 3 3]
    #           [3 3 3]]    
    diffMat = tile(inX, (dataSetSize, 1)) - dataSet    #欧式距离计算
    sqDiffMat = diffMat ** 2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances ** 0.5

    # argsort函数返回的是数组值从小到大的索引值,将距离排序:从小到大
    sortedDistIndicies = distances.argsort()    # 选取前K个最短距离, 选取这K个中最多的分类类别
    classCount = {}    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1

    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)    return sortedClassCount[0][0]
def handwritingClassTest():
    # 1. 导入训练数据
    hwLabels = []
    trainingFileList = listdir(        '/Users/xiehao/Desktop/MachineLearning-master/input/2.KNN/trainingDigits/')  # load the training set
    # 训练集的数量   
    m = len(trainingFileList)    # 构造 ,m*1024的矩阵
    trainingMat = zeros((m, 1024))    # hwLabels存储0~9对应的index位置, trainingMat存放的每个位置对应的图片向量
    for i in range(m):        #例: 文件5_135.txt
        fileNameStr = trainingFileList[i]
        fileStr = fileNameStr.split('.')[0]  # take off .txt
        #例:classNumStr =5
        classNumStr = int(fileStr.split('_')[0])
        
        hwLabels.append(classNumStr)        # 将 32*32的矩阵->1*1024的矩阵
        # trainingMat填充1*1024矩阵
        trainingMat[i, :] = img2vector(            '/Users/xiehao/Desktop/MachineLearning-master/input/2.KNN/trainingDigits/%s' % fileNameStr)    # 2. 导入测试数据
    testFileList = listdir(        '/Users/xiehao/Desktop/MachineLearning-master/input/2.KNN/testDigits/')  # iterate through the test set
    errorCount = 0.0
    # 测试样本数量
    mTest = len(testFileList)    for i in range(mTest):
        fileNameStr = testFileList[i]
        fileStr = fileNameStr.split('.')[0]  # take off .txt
        classNumStr = int(fileStr.split('_')[0])        # 将测试样本的32*32的矩阵-->1*1024的矩阵
        vectorUnderTest = img2vector(            '/Users/xiehao/Desktop/MachineLearning-master/input/2.KNN/testDigits/%s' % fileNameStr)        #执行上面定义的算法
        classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)
        print("the classifier came back with: %d, the real answer is: %d" % (classifierResult, classNumStr))        if (classifierResult != classNumStr): errorCount += 1.0
    print("\nthe total number of errors is: %d" % errorCount)
    print("\nthe total error rate is: %f" % (errorCount / float(mTest)))



作者:raphah
链接:https://www.jianshu.com/p/3af7bcb2d0dd


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消