机器学习读书笔记(一)k-近邻算法

一、机器学习是什么

机器学习的英文名称叫Machine Learning,简称ML,该领域主要研究的是如何使计算机能够模拟人类的学习行为从而获得新的知识和技能,并且重新组织已学习到的知识和和技能,使之在应用中能够不断完善自身的缺陷与不足。

简单来说,机器学习就是让计算机从大量的数据中学习到相关的规律和逻辑,然后利用学习来的规律来预测以后的未知事物。

 

二、开发机器学习应用程序的步骤

1)收集数据

2)准备输入数据

3)分析输入数据

4)训练算法

5)测试算法

6)使用算法

 

三、python

1、优势

1)语法清洗

2)使用广泛

3)易于操作文本文件

2、缺点:

性能问题

3、numpy

  • 数组的算数和逻辑运算。
  • 傅立叶变换和用于图形操作的例程。
  • 与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。

三、k-近邻算法

1、概念

在近邻分类算法中,对于预测的数据,将其与训练样本进行比较,找到最为相似的K个训练样本,并以这K个训练样本中出现最多的标签作为最终的预测标签。
在近邻分类算法中,最主要的是K-近邻算法

 

2、优缺点

优点

精度高、对异常不敏感、无数据输入假定

缺点

计算复杂度高、空间复杂度高

适用范围

数值型和标称型

下面是代码示例:

 1 from numpy import *
 2 import operator
 3 
 4 
 5 def createDataSet():
 6     group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
 7     labels = ['A', 'A', 'B', 'B']
 8     return group, labels
 9 
10 
11 def classify0(inX, dataSet, labels, k):
12     dataSetSize = dataSet.shape[0]
13     diffMat = tile(inX, (dataSetSize, 1)) - dataSet
14     sqDiffMat = diffMat ** 2
15     sqDistances = sqDiffMat.sum(axis=1)
16     distances = sqDistances ** 0.5
17     sortedDistIndicies = distances.argsort()
18     classCount = {}
19     for i in range(k):
20         voteIlabel = labels[sortedDistIndicies[i]]
21         classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
22     sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
23     return sortedClassCount[0][0]
24 
25 
26 group, labels = createDataSet()
27 result = classify0([0, 0], group, labels, 3)
28 print(result)
原文地址:https://www.cnblogs.com/zcjcsl/p/9179410.html