《机器学习实战》学习笔记Part 1(一)
2018-01-18 12:45
155 查看
仅作记录,供自己日后翻阅和理解。
监督学习一般使用两种类型的目标变量:标称和数值型
标称型目标变量的结果只在有限目标集中取值(分类)
数值型目标变量可以从无限的数值集合中取值(主要用于回归)
第二章 K-近邻算法(KNN)
2.1 算法概述
简单地说,采用测量不同特征值之间的距离方法进行分类。
工作原理:存在一个样本数据集(训练样本集),并且样本集中每个数据都存在标签。输入没标签的新数据后,将新数据地每个特征与样本集中数据对应的特征进行比较,然后算法提取样本中特征最相似数据(最邻近)的分类标签。一般只取样本数据集中前k个最相似的数据(k一般不大于20)
步骤:收集数据——>准备数据——>分析数据——>测试算法——>使用算法
from numpy import *
#导入科学计算包
import operator
#运算符模块
import matplotlib
import matplotlib.pyplot as plt
#解决显示中文问题
#coding:utf-8
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
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 test1():
group,label=createDataSet()
print(group)
print(label)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title("带四个数据点的简单例子")
ax.scatter(group[:,0], group[:, 1])
KNN伪代码:
1)计算已知类别数据集中的点和当前点之间的距离
2)按照距离递增次序排序
3)选取与当前点距离最小的k个点
4)确定前k个点所在类别的出现频率
5)返回前k个点出现频率最高的类别作为当前点的预测分类
1 准备数据:从文本文件中解析数据
2 分析数据:使用Matplotlib创建散点图
3 准备数据:归一化数值
4 测试算法:作为完整程序验证分类器
5 使用算法:构建完整可用系统
待续……
监督学习一般使用两种类型的目标变量:标称和数值型
标称型目标变量的结果只在有限目标集中取值(分类)
数值型目标变量可以从无限的数值集合中取值(主要用于回归)
第二章 K-近邻算法(KNN)
2.1 算法概述
简单地说,采用测量不同特征值之间的距离方法进行分类。
工作原理:存在一个样本数据集(训练样本集),并且样本集中每个数据都存在标签。输入没标签的新数据后,将新数据地每个特征与样本集中数据对应的特征进行比较,然后算法提取样本中特征最相似数据(最邻近)的分类标签。一般只取样本数据集中前k个最相似的数据(k一般不大于20)
步骤:收集数据——>准备数据——>分析数据——>测试算法——>使用算法
from numpy import *
#导入科学计算包
import operator
#运算符模块
import matplotlib
import matplotlib.pyplot as plt
#解决显示中文问题
#coding:utf-8
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
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 test1():
group,label=createDataSet()
print(group)
print(label)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title("带四个数据点的简单例子")
ax.scatter(group[:,0], group[:, 1])
KNN伪代码:
1)计算已知类别数据集中的点和当前点之间的距离
2)按照距离递增次序排序
3)选取与当前点距离最小的k个点
4)确定前k个点所在类别的出现频率
5)返回前k个点出现频率最高的类别作为当前点的预测分类
from numpy import * #导入科学计算包 import operator #运算符模块 import matplotlib import matplotlib.pyplot as plt #解决显示中文问题 #coding:utf-8 plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 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 # k-j近邻算法 def classify0(inX, dataSet, labels, k): # inX是用于分类的输入向量;dataSet是输入的训练样本集,labels是标签向量,k是用于选择最近邻居的数目 #1 使用欧式距离,计算向量点之间的距离 dataSetSize = dataSet.shape[0] # 返回多维数组维度的第一维 diffMat = tile(inX, (dataSetSize,1)) - dataSet # title(x,(m,n))以x为基本单位生成一个m行,每行为n个x的多维数组 sqDiffMat = diffMat**2 # 平方 sqDistances = sqDiffMat.sum(axis=1) # 对数组按行求和 distances = sqDistances**0.5 # 开方 #1 计算距离结束 sortedDistIndicies = distances.argsort() # 按列排序,返回行标 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) # 使用itemgetter,按照第二个元素的次序对元组进行排序 return sortedClassCount[0][0] def test2(): group, label = createDataSet() print(classify0([0.9,0.9],group,label,3)) test2()2.2 示例:使用算法改进约会网站的配对效果
1 准备数据:从文本文件中解析数据
2 分析数据:使用Matplotlib创建散点图
3 准备数据:归一化数值
4 测试算法:作为完整程序验证分类器
5 使用算法:构建完整可用系统
待续……
相关文章推荐
- 《机器学习实战》学习笔记Part 1(二)
- 《机器学习实战》学习笔记:Logistic回归&预测疝气病证的死亡率
- 《机器学习实战》学习笔记——第3章 决策树
- [置顶] 《机器学习实战》学习笔记(四)之Logistic(上)基础理论及算法推导、线性回归,梯度下降算法
- 《机器学习实战》学习笔记——K-近邻算法(KNN)(一)分类器的简单实现
- 《机器学习实战》学习笔记(八)之利树回归
- 《机器学习实战》读书笔记 第四章 朴素贝叶斯(part 1)
- [置顶] Python3《机器学习实战》学习笔记(六):Logistic回归基础篇之梯度上升算法
- [置顶] Python3《机器学习实战》学习笔记(九):支持向量机实战篇之再撕非线性SVM
- [置顶] 《机器学习实战》学习笔记(三)之朴素贝叶斯(上)基础理论及基于朴素贝叶斯算法文档分类
- [置顶] Python3《机器学习实战》学习笔记(十一):线性回归基础篇之预测鲍鱼年龄
- [置顶] 《机器学习实战》学习笔记(五)之支持向量机(上)基础理论及算法推导
- 《机器学习实战》学习笔记:决策树的实现
- 《机器学习实战》学习笔记:基于朴素贝叶斯的垃圾邮件过滤
- Python3《机器学习实战》学习笔记(二):决策树基础篇之让我们从相亲说起
- 机器学习实战 第九章 树回归 学习笔记
- 学习笔记——《机器学习实战》KNN算法实现 约会网站测试,手写数字识别,代码,注释,错误修改
- 《机器学习实战》学习笔记(六)之提升和Adaboost(下)项目实战
- 《机器学习实战》读书笔记 第三章 决策树(part 1)
- [置顶] Python3《机器学习实战》学习笔记(七):Logistic回归实战篇之预测病马死亡率