从零开始人工智能AI(一)-k-nn-矩阵

参考资料:

https://baike.baidu.com/item/%E7%9F%A9%E9%98%B5/18069?fr=aladdin

http://blog.csdn.net/c406495762/article/details/75172850

基础概念:

#0取行数,1取得列数

import numpy as np

dataSetSize = dataSet.shape[0]

diffMat = np.tile(inX, (dataSetSize, 1)) - dataSet

tile第二个参数为元组,元组第一个参数代表复制的个数,纵(list的个数), 第二个参数为横向(单个list中的元素复制的份数)

例如:

>>> a=[0,1,2]
>>> b=tile(a,9)
>>> b
array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1,
       2, 0, 1, 2])
>>>
>>> b=tile(a,(9,2))
>>> b
array([[0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2]])
>>> b=tile(a,(9,1))
>>> b
array([[0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2]])
>>> b=tile(a,(9,12))
>>> b
array([[0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0,
        1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])

矩阵减法

>>> a
array([[101,  20],
       [101,  20],
       [101,  20],
       [101,  20]])
>>> b
array([[  1, 101],
       [  5,  89],
       [108,   5],
       [115,   8]])
>>> a-b
array([[100, -81],
       [ 96, -69],
       [ -7,  15],
       [-14,  12]])

#二维特征相减后平方
sqDiffMat = diffMat**2

>>> c
array([[100, -81],
       [ 96, -69],
       [ -7,  15],
       [-14,  12]])
>>> c**2
array([[10000,  6561],
       [ 9216,  4761],
       [   49,   225],
       [  196,   144]])

#sum()所有元素相加,sum(0)列相加,sum(1)行相加
sqDistances = sqDiffMat.sum(axis=1)

>>> d=c**2
>>> d.sum(axis=1)
array([16561, 13977,   274,   340])

>>> d.sum(axis=0)
array([19461, 11691])

#开方,计算出距离
distances = sqDistances**0.5

>>> f=e**0.5
>>> f
array([ 128.68954892,  118.22436297,   16.55294536,   18.43908891])

sortedDistIndices = distances.argsort()
#定一个记录类别次数的字典 ,按大小排序,打印index

>>> f
array([ 128.68954892,  118.22436297,   16.55294536,   18.43908891])
>>> g=f.argsort()
>>> g
array([2, 3, 1, 0])

取出前k个元素的类别

>>> for i  in range(3):
...     print(i)
...     labels[sortedDistIndices[i]]
...
0
‘动作片‘
1
‘动作片‘
2
‘爱情片‘
>>> for i  in range(3):
...     voteIlabel = labels[sortedDistIndices[i]]
...     classCount.get(voteIlabel,0)
...
0
0
0
>>> for i  in range(3):
...     voteIlabel = labels[sortedDistIndices[i]]
...     classCount.get(voteIlabel,0) + 1
...
1
1
1
 #key=operator.itemgetter(1)根据字典的值进行排序
    #key=operator.itemgetter(0)根据字典的键进行排序
    #reverse降序排序字典
    sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)

    print(‘#######‘,sortedClassCount)
classCount~~~~~~ {}
classCount~~~~~~ {‘动作片‘: 2, ‘爱情片‘: 1}
####### [(‘动作片‘, 2), (‘爱情片‘, 1)]
动作片

第一段代码总算跑通了,虽然到现在为止还不理解什么事人工智能,哈哈,

时间: 2024-09-15 01:08:52

从零开始人工智能AI(一)-k-nn-矩阵的相关文章

国家制定人工智能(AI)发展战略的决策依据

在今年两会上,李彦宏的提案有何道理?提案的根据是什么?这个问题必须说清楚,对社会公众有个交代. 回顾过去,早在上世纪九十年代,用"电子网络"模拟人脑的想法已经出现.这种"电子网络",又叫"神经网络",简记为"NN".如何训练神经网络,使它具有类似人脑对外界的反应?但是,科学家费尽心思,想了许多办法,神经网络仍然无比"呆笨",不能"看",也不能"听".真让人泄气! 现在

国家制定人工智能(AI)发展战略的决策根据

在今年两会上,李彦宏的提案有何道理?提案的依据是什么?这个问题必须说清楚,对社会公众有个交代. 回想过去,早在上世纪九十年代,用"电子网络"模拟人脑的想法已经出现.这样的"电子网络",又叫"神经网络",简记为"NN".怎样训练神经网络,使它具有类似人脑对外界的反应? 可是,科学家费尽心思,想了很多办法,神经网络仍然无比"呆笨",不能"看",也不能"听".真让人泄气!

人工智能AI:Keras PyTorch MXNet 深度学习实战(不定时更新) 𗶽

原文: http://blog.gqylpy.com/gqy/415 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

【转】人工智能(AI)资料大全

这里收集的是关于人工智能(AI)的教程.书籍.视频演讲和论文. 欢迎提供更多的信息. 在线教程 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程 人工智能入门 – 人工智能基础学习.Peter Norvig举办的课程 EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术. 人工智能中的计划 – 计划是人工智能系统的基础部分之一.在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法. 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,

让人工智能与产业紧密融合 2019人工智能AI大会

让人工智能与产业紧密融合 2019人工智能AI大会业内专家认为,我国人工智能产业应用总体上处于起步阶段.当前,新一代人工智能已经从最初的算法驱动逐渐向数据.算法和算力的复合驱动转变,其中,基于数据的应用驱动作用日益显著.以医疗领域为例,志诺维思基因科技创始人.人工智能专家凌少平介绍,我国智慧医疗近几年发展比较快,一个重要原因是有比较丰富的电子病历.医疗影像.病理图像等数据,基于这些数据,科研人员能够通过标注来训练人工智能模型.地平线创始人兼首席执行官.人工智能专家余凯说,受益于行业丰富的需求,我

人工智能 - AI

CNCC 2016 | 人工智能60年浪潮 (原文链接) Intelligence,智能是指生物一般性的精神能力,其三因素理论: 成分智力 Componential Intelligence:思维和对问题解决所依赖的心理过程,与受教育程度直接相关: 经验智力 Experiential Intelligence:与受教育程度并不直接相关: 情境智力 Contextual Intelligence:情商: Artificial Intelligence - AI,人工智能是指由人工制造出来的系统所表

Python语言在人工智能(AI)中的优势 (转)

本文探讨了Python语言在AI领域的优势与运用. 谁会成为AI 和大数据时代的第一开发语言? 这本已是一个不需要争论的问题.如果说三年前,Matlab.Scala.R.Java 和 python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后,Python 作为 AI 时代头牌语言的位置基本确立,未来的悬念仅仅是谁能坐稳第二把交椅. 不过声音市场上还有一些杂音.最近一个有意学习数据科学的姑娘跟我说,她的一个朋友建议她从

认识:人工智能AI 机器学习 ML 深度学习DL

人工智能 人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工智能是对人的意识.思维的信息过程的模拟.人工智能不是人的智能,但能像人那样思考.也可能超过人的智能. 人工智能的定义可以分为两部分,即"人工"和"智能". 机器学习 1.    什么是机器学习 根据等人事件中判断人是否迟到了解什么是机器学习,具体参见地址:http://www.cnblo

人工智能AI专家分享:深度学习初学解惑

---恢复内容开始--- 导语:高扬,现某创业公司数据科学家.人工智能专家.前欢聚时代资深大数据专家,有丰富的机器学习.深度学习实战经验. 在高扬老师此前的分享中,有不少同学问到高扬老师各种关于入门深度学习这个前沿技术领域的问题.部分重要问题,高扬老师做了具体的回复.真传X技术教育平台致力于让更多技术人受益其中,经高扬老师授权,我们将在此分享高扬老师专业的答疑. 今天的分享,将集中在初学深度学习的解惑:传统技术程序员要不要转型人工智能,怎样做才比较合适在AI浪潮下发展. 近来有一位同学在奇点大数