机器学习实验一

机器学习实验一

配置python+numpy环境

  • python下载安装

    https://www.python.org/downloads/下载安装Python 3.9.7(由于本人在此之前已安装,便不再重复。)
    在这里插入图片描述

  • numpy下载安装

    https://pypi.org/project/numpy/#files下载安装numpy,并选择对应的版本。如python版本为3.9,则选择numpy版本含“cp39”,并根据自身电脑的系统和配置做出相应的选择,我这里是Windows系统,64位,故选择了numpy-1.21.2-cp39-cp39-win_amd64.whl 。
    在这里插入图片描述
    之后将下载好的文件复制到python安装目录下的Scripts目录中。
    在这里插入图片描述
    然后打开命令行窗口,进入python安装目录,输入以下命令:pip install numpy-1.21.2-cp39-cp39-win_amd64.whl

    若安装成功则会在下图蓝色箭头处显示Successfully installed numpy-1.21.2。(我此前安装过,故会显示numpy is already installed with the same version as the provided wheel. 即Numpy已经安装了与所提供的相同版本。)
    在这里插入图片描述
    进入python shell开发环境输入命令:from numpy import *

    该命令将Numpy函数库中的所有模块引入当前的命名空间。输入结果如下图:
    在这里插入图片描述

  • 测试是否正确地安装了NumPy函数库

    在Python shell 开发环境中输入命令:random.rand(4,4)
    该命令构造了一个4*4的随机数组。 在这里插入图片描述
    调用mat()函数可将数组转化为矩阵,输入命令:

    randMat = mat(random.rand(4,4))
    randMat.I
    

    .I操作符实现了矩阵求逆的运算,便可得到矩阵:
    在这里插入图片描述
    接着执行命令invRandMat = randMat.I 存储逆矩阵
    之后执行命令randMat*invRandMat实现矩阵乘法,得到矩阵与其逆矩阵相乘的结果:在这里插入图片描述

输入命令

myEye = randMat*invRandMat
myEye - eye(4)

得到误差值:
在这里插入图片描述

顺利完成上述例子,就说明已经正确地安装了NumPy函数库。

KNN算法(K-近邻算法)

简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。

  • 工作原理
    工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每一特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最邻近)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

  • KNN 开发流程
    收集数据:任何方法
    准备数据:距离计算所需要的数值,最好是结构化的数据格式
    分析数据:任何方法
    训练算法:此步骤不适用于 k-近邻算法
    测试算法:计算错误率
    使用算法:输入样本数据和结构化的输出结果,然后运行 k-近邻算法判断输入数据分类属于哪个分类,最后对计算出的分类执行后续处理

  • KNN 算法特点
    优点:精度高、对异常值不敏感、无数据输入假定
    缺点:计算复杂度高、空间复杂度高
    适用数据范围:数值型和标称型

实现手写数字识别

将下列代码输入到kNN.py文件中

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

在这里插入图片描述

然后在Python命令行中输入下列命令测试img2vector函数,然后与文本编辑器打开的文件进行比较:

>>> testVector = kNN.img2vector('testDigits/0_13.txt')
>>> testVector[0,0:31]
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
>>> testVector[0,31:63]
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

导入训练数据和测试数据

def handwritingClassTest():
    hwLabels = []
    trainingFileList = listdir('trainingDigits')           #load the training set
    m = len(trainingFileList)
    trainingMat = zeros((m,1024))
    for i in range(m):
        fileNameStr = trainingFileList[i]
        fileStr = fileNameStr.split('.')[0]     #take off .txt
        classNumStr = int(fileStr.split('_')[0])
        hwLabels.append(classNumStr)
        trainingMat[i,:] = img2vector('trainingDigits/%s' % fileNameStr)
    testFileList = listdir('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])
        vectorUnderTest = img2vector('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))

在这里插入图片描述

最后输入命令kNN.handwritingClassTest()测试结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径。 随着统计学的发展,统计学习在机器学习中占据了重要地位,支持向量机(SVM)、决策树和随机森林等算法的提出和发展,使得机器学习能够更好地处理分类、回归和聚类等任务。进入21世纪,深度学习成为机器学习领域的重要突破,采用多层神经网络模型,通过大量数据和强大的计算能力来训练模型,在计算机视觉、自然语言处理和语音识别等领域取得了显著的成果。 机器学习算法在各个领域都有广泛的应用,包括医疗保健、金融、零售和电子商务、智能交通、生产制造等。例如,在医疗领域,机器学习技术可以帮助医生识别医疗影像,辅助诊断疾病,预测病情发展趋势,并为患者提供个性化的治疗方案。在金融领域,机器学习模型可以分析金融数据,识别潜在风险,预测股票市场的走势等。 未来,随着传感器技术和计算能力的提升,机器学习将在自动驾驶、智能家居等领域发挥更大的作用。同时,随着物联网技术的普及,机器学习将助力智能家居设备实现更加智能化和个性化的功能。在工业制造领域,机器学习也将实现广泛应用,如智能制造、工艺优化和质量控制等。 总之,机器学习是一门具有广阔应用前景和深远影响的学科,它将持续推动人工智能技术的发展,为人类社会的进步做出重要贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值