栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

《Machine Learning in Action》学习笔记(1)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《Machine Learning in Action》学习笔记(1)

#coding:utf-8

#  kNN算法
# 1.计算已知类别数据集中的点与当前点之间的距离
# 2.按照距离递增次序排列
# 3.选取与当前点距离最小的k各点
# 4.确定前k个点所在类别的出现频率
# 5.返回前k各点出现频率最高的类别作为当前点的预测分类

from numpy import *   #科学计算包
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

# k-近邻算法分类器
def classify0(inX,dataSet,labels,k):  #inX分类的输入向量,dataSet输入的训练样本集,labels标签向量,k选择最近邻的数目
    dataSetSize=dataSet.shape[0]   #shape[0]计算行,shape[1]计算列

    #距离计算,欧式距离
    diffMat=tile(inX,(dataSetSize,1))-dataSet  #tile()重复数组
    sqDiffMat=diffMat**2  #**幂
    sqDistances=sqDiffMat.sum(axis=1)  #axis=0表示一个向量相加,axis=1表示对应坐标相加
    distances=sqDistances**0.5
    sortedDistIndicies=distances.argsort()  #argsort函数返回的是数组值从小到大的索引值

    #选择距离最小的k个点
    classCount={}
    for i in range(k):
 voteIlabel=labels[sortedDistIndicies[i]]
 classCount[voteIlabel]=classCount.get(voteIlabel,0)+1  #确定前k各距离最小元素所在的主要分类

    #item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回
    #operator.itemgetter(1)按照第二个元素的次序对元组进行排序
    # false默认升序,true降序
    sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
    return sortedClassCount[0][0]   #返回频率最高的元素标签

group,labels=createDataSet()
print classify0([0,0],group,labels,3)  #打印B
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/226054.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号