zoukankan      html  css  js  c++  java
  • [ML-IA] K-近邻算法-classify0

    kNN.py

     1 #!/usr/bin/python
     2 # -*- coding:utf8 -*-
     3 
     4 from numpy import *
     5 import operator
     6 
     7 #创造数据集
     8 def createDataSet():
     9     group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
    10     labels = ['A', 'A', 'B', 'B']
    11     return group, labels
    12 
    13 """
    14 #将inX扩展到和训练样本集dataSet一样的行数
    15 diffMat = tile(inX, (dataSetSize, 1)) - dataSet
    16     tile(inX, n):拓展长度
    17     tile(inX, (m, n):m-拓展个数,拓展长度
    18     
    19 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
    20 以排出的每组数据的第一个元素的大小为准,按降序排列。
    21 e.g:[('A', 2), ('B', 1)]
    22 """
    23 def classify0(inX, dataSet, labels, k):
    24     dataSetSize = dataSet.shape[0]  #训练样本行数(矩阵第一维度的长度)
    25     diffMat = tile(inX, (dataSetSize, 1)) - dataSet
    26     sqDiffMat = diffMat**2
    27     sqDistances = sqDiffMat.sum(axis=1)
    28     distances = sqDistances**0.5 #欧氏距离计算
    29     sortedDistIndicies = distances.argsort()#按元素大小升序,将无数对应的索引(index)输出
    30     classCount = {}
    31     for i in range(k):
    32         voteIlabel = labels[sortedDistIndicies[i]]  #输出上面相应索引(index)对应的label
    33         classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1  #统计label个数
    34     sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
    35     return sortedClassCount[0][0]

    kNN_test.py

    1 import kNN
    2 
    3 group, labels = kNN.createDataSet()
    4 print (group)
    5 print (labels)
    6 
    7 inX = [2, 1]
    8 testResult = kNN.classify0(inX, group, labels, 3)
    9 print (testResult)

    result:

    1 [[ 1.   1.1]
    2  [ 1.   1. ]
    3  [ 0.   0. ]
    4  [ 0.   0.1]]
    5 ['A', 'A', 'B', 'B']
    6 A
  • 相关阅读:
    Jmeter系列(29)- 详解 JDBC Connection Configuration
    Jmeter系列(28)- 发送 soap 协议的接口
    Jmeter系列(27)- 详解正则提取器
    Jmeter系列(26)- 详解 JSON 提取器
    Jmeter系列(25)- 详解用户参数
    (五)、python 函数
    (四)、python 集合与格式化
    (三)、python运算符和基本数据类型
    Mysql: pt-table-checksum 和 pt-table-sync 检查主从一致性,实验过程
    (二)、Python 基础
  • 原文地址:https://www.cnblogs.com/Miami/p/7397325.html
Copyright © 2011-2022 走看看