机器学习实战第二章----knn(代码片段)

lllittletree lllittletree     2022-11-04     542

关键词:

  1. tile的使用方法
    tile(A,n)的功能是把A数组重复n次(可以在列方向,也可以在行方向)
  2. argsort()函数
    argsort()函数返回的是数组中值从大到小的索引值
  3. dict.get()函数
    语法:dict.get(key, default=None)
    key----字典中要查找的键
    default----如果指定的简直不存在时,返回该默认值
  4. add_subplot()基础用法

    import matplotlib.pyplot as plt
    from numpy import *
    fig = plt.figure()
    ax = fig.add_subplot(349)
    ax.plot(x,y)

    将画布分成三行四列,在第九个分区画图

from numpy import *
from os import listdir
import operator


def createDataSet():
    group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
    labels = [‘A‘, ‘A‘, ‘B‘, ‘B‘]
    return group, labels


# 对数据进行分类
def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]          #shape[0]获取第一维的数目
    diffMat = tile(inX, (dataSetSize, 1)) - dataSet       # tile??????
    sqDiffMat = diffMat**2
    # 求差的平方和
    sqDistance = sqDiffMat.sum(axis=1)        #axis=1???????sum函数默认是axis=0列元素相加,axis=1是一行的元素求和
    #  求标准差
    distances = sqDistance**0.5
    # 距离排序
    sortDistIndicies = distances.argsort()    #argsort函数返回的是数组值从小到大的索引值
    # 定义元字典
    classCount = 
    for i in range(k):
        # 获得前k个元素的标签
        voteIlabel = labels[sortDistIndicies[i]]
        # 计算前k个数据标签出现的次数
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1           #dict.get()???????????
    sortedClassCount = sorted(classCount.items(),key = operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]


# 读取文本文件数据
def file2matrix(filename):
    fr = open(filename)
    lines = fr.readlines()
    num_lines = len(lines)
    train_matrix = zeros((num_lines, 3))
    label_vector = []
    index = 0
    for line in lines:
        line = line.strip()
        line_list = line.split(\t)
        train_matrix[index, :] = line_list[0:3]        # 获取列表的前0,1,2列
        label_vector.append(int(line_list[-1]))       # 获取列表的最后一列
        index += 1
    return train_matrix, label_vector                 # add_subplot????????????????


#归一化函数
def autoNorm(dataSet):
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    # normDataSet = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - tile(minVals, (m, 1))      # minVals在列上重复一次(本身),在行上重复m次,从而形成m*3的向量
    normDataSet = normDataSet/tile(ranges, (m, 1))
    return normDataSet, ranges, minVals       # 归一化后的数据, 极差范围, 最小值


# 分类器测试函数
def datingClassTest():
    hoRatio = 0.10      #测试集比例
    datingDataMat, datingLabels = file2matrix(‘datingTestSet2.txt‘)
    normMat, ranges, minVals = autoNorm(datingDataMat)
    m = normMat.shape[0]
    numTestVecs = int(m*hoRatio)
    errcount = 0.0
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i, :], normMat[numTestVecs:m, :], datingLabels[numTestVecs:m], 2)
        print("the classifier came back with :%d ,the real answer is :%d" % (classifierResult, datingLabels[i]))
        if(classifierResult != datingLabels[i]):
            errcount += 1.0
        print("the total error rate is: %f" %(errcount/float(numTestVecs)))


# 手写字符文件转换成向量
def img2vector(filename):
    returnVect = zeros((1, 1024))
    fr = open(filename)
    for i in range(32):
        lineStr = fr.readline()
        for j in range(32):
            returnVect[0, 32*i+j] = int(lineStr[j])
    return returnVect


# 手写字符识别测试
def handwritingClassTest():
    hwlabels = []           # 定义手写字符标签
    trainingFileList = listdir(‘digits/trainingDigits‘)
    m = len(trainingFileList)
    trainingMat = zeros((m, 1024))
    for i in range(m):
        fileNameStr = trainingFileList[i]
        fileStr = fileNameStr.split(‘.‘)[0]
        classNumStr = fileStr.split(‘_‘)[0]
        hwlabels.append(classNumStr)
        # 把文件变成向量并赋值到trainingMat
        trainingMat[i, :] = img2vector(‘digits/trainingDigits/%s % fileNameStr)
    testFileList = listdir(‘digits/testDigits‘)
    errcount = 0.0
    mTest = len(testFileList)
    for i in range(mTest):
        fileNameStr = testFileList[i]
        fileStr = fileNameStr.split(‘.‘)[0]
        classNumStr = int(fileStr.split(‘_‘)[0])
        vectorUnderTest = img2vector(‘digits/testDigits/%s % fileNameStr)
        classifierResult = classify0(vectorUnderTest, trainingMat, hwlabels, 3)
        print(‘the classifier came back with : %d, the real answer is %d % (int(classifierResult), classNumStr))
        if(int(classifierResult) != int(classNumStr)):
            errcount += 1
    print(\nthe total number of errors is %d % errcount)
    print(\nthe total error rate is: %f % float(errcount/mTest))

机器学习实战☛k-近邻算法(k-nearestneighbor,knn)(代码片段)

机器学习实战☛k-近邻算法(K-NearestNeighbor,KNN)文章目录机器学习实战☛k-近邻算法(K-NearestNeighbor,KNN)k-近邻算法概述原理简介k-近邻算法一般流程伪代码与实现示例:使用kNN改进约会网站的配对效... 查看详情

机器学习算法_knn(福利)(代码片段)

这两天翻了一下机器学习实战这本书,算法是不错,只是代码不够友好,作者是个搞算法的,这点从代码上就能看出来。可是有些地方使用numpy搞数组,搞矩阵,总是感觉怪怪的,一个是需要使用三方包numpy,虽然这个包基本可... 查看详情

机器学习-knn算法(鸢尾花分类实战)(代码片段)

文章目录简介代码复现sklearn库调用前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介K近邻(KNearestNeighbors,KNN)算法是最简单的分类算法... 查看详情

机器学习:7.机器学习---knn算法编程实战:红酒分类(代码片段)

第1关:分析红酒数据importnumpyasnpdefalcohol_mean(data):'''返回红酒数据中红酒的酒精平均含量:paramdata:红酒数据对象:return:酒精平均含量,类型为float'''#*********Begin*********#returnnp.mean(data['data'],axis=0)[0]#... 查看详情

机器学习实战——k-邻近算法(knn)(代码片段)

K-邻近算法K-邻近算法概述KNN采用测量不同特征值之间的距离方法进行分类。优点:精度高、对异常值不敏感、无数据输入假定缺点:计算复杂度高、空间复杂度高适用数据范围:数值型和标称型工作原理:存在一... 查看详情

机器学习实战之第二章k-近邻算法

第2章k-近邻算法KNN概述k-近邻(kNN,k-NearestNeighbor)算法主要是用来进行分类的.KNN场景电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢?动作片:打斗次数更多爱情片:亲吻次数更多基于电影中的亲吻、... 查看详情

《机器学习实战》--knn(代码片段)

代码来自《机器学习实战》https://github.com/wzy6642/Machine-Learning-in-Action-Python3K-近邻算法(KNN)介绍简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。优点:精度高、对异常值不敏感,无数据输入假定。缺点:计算... 查看详情

机器学习实战task1(knn)k近邻算法的应用(代码片段)

...算法的简介k-近邻算法是属于一个非常有效且易于掌握的机器学习算法,简单的说就是采用测量不同特征值之间距离的方法对数据进行分类的一个算法。(2)k近邻算法的工作原理给定一个样本的集合,这里称为训... 查看详情

机器学习实战——k-近邻算法(代码片段)

...去看看KNN了,然后我给你安排一个工作!我:好嘞!就是第二章吗?老板:对!去吧!可恶的老板又给我安排任务了!《机器学习实战》这本书中的第二章为我们介绍了K-近邻算法,这是本书中第一个机器学习算法,它非常有效... 查看详情

机器学习之路--knn算法(代码片段)

    机器学习实战这本书是基于python的,如果我们想要完成python开发,那么python的开发环境必不可少:(1)python3.52,64位,这是我用的python版本(2)numpy1.11.3,64位,这是python的科学计算包,是python的一个矩阵类型,... 查看详情

机器学习实战knn

最近在学习这本书,按照书上的实例编写了knn.py的文件,使用canopy进行编辑,用shell交互时发现运行时报错:>>>kNN.classify0([0,0],group,labels,3)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>NameError:name‘kNN‘isn 查看详情

阿旭机器学习实战33中文文本分类之情感分析--朴素贝叶斯knn逻辑回归(代码片段)

【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。目录1.查看原始数据结构2.导入数据并进行数据处理2.1提取数据与标签2.2过滤停用词2.3TfidfVectorizer将文本向... 查看详情

机器学习实战之knn

   笔者最近开始对机器学习非常感兴趣,作为一个有志向的软设方向的女孩纸,我开始了学习的第一步入门,下面将今天刚刚学习的kNN及其应用进行总结和回顾,希望可以得到更好的提升,当然,有志同道合者,你可... 查看详情

监督学习算法_k-近邻(knn)分类算法_源代码

因为自己想学着去写机器学习的源码,所以我最近在学习《机器学习实战》这本书。《机器学习实战》是利用Python2完成的机器学习算法的源代码,并利用机器学习方法来对实际问题进行分析与处理。(《机器学习实战》豆瓣读... 查看详情

机器学习(06)——k近附算法实战(代码片段)

学习机器学习算法,最难的不是算法及公式推导的学习,因为这些很多都是成熟的现成的,有代码例子可以直接使用。最难的是将算法应用到实际的项目当中。1.算法概念K最近邻(k-NearestNeighbor,KNN)分类算法,是一个理论上比较... 查看详情

机器学习实战之knn算法

   机器学习实战这本书是基于python的,如果我们想要完成python开发,那么python的开发环境必不可少:(1)python3.52,64位,这是我用的python版本(2)numpy1.11.3,64位,这是python的科学计算包,是python的一个矩阵类型,包含... 查看详情

机器学习——knn(代码片段)

导入类库1importnumpyasnp2fromsklearn.neighborsimportKNeighborsClassifier3fromsklearn.model_selectionimporttrain_test_split4fromsklearn.preprocessingimportStandardScaler5fromsklearn.linear_modelimportLinea 查看详情

《机器学习实战》-k近邻算法(代码片段)

目录K-近邻算法k-近邻算法概述解析和导入数据使用Python导入数据实施kNN分类算法测试分类器使用k-近邻算法改进约会网站的配对效果收集数据准备数据:使用Python解析文本文件分析数据:使用Matplotlib画二维散点图准备数据:归... 查看详情