• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: python  KNN  

资源简介

使用KNN算法预测鸢尾花的种类,压缩文件中包含源码、训练数据以及测试数据

资源截图

代码片段和文件信息

import numpy as np
import operator

def trainingFile2Matrix(filename):
    “““
    函数说明:
        处理训练数据集
    :param filename:
        训练数据文件
    :return:
        returnMat - 处理得到的每一个训练样本的数据集合
        returnLabel - 每一个训练样本所属的类别标签集合
    “““
    file = open(filename)
    content = file.readlines()

    lineCount = len(content)

    returnMat = np.zeros((lineCount 4))
    returnLabel = []

    index = 0

    for line in content:
        line = line.strip()
        example = line.split(‘‘)

        returnMat[index : ] = example[0 : 4]
        index += 1
        returnLabel.append(example[4])

    return returnMat returnLabel


def testFile2Matrix(filename):
    “““
    函数说明:
        处理测试数据集
    :param filename:
        测试数据文件
    :return:
        returnMat - 处理得到的每一个测试样本的数据集合
    “““
    file = open(filename)

    content = file.readlines()

    lineCount = len(content)

    returnMat = np.zeros((lineCount 4))

    index = 0

    for line in content:
        line = line.strip()
        example = line.split(‘‘)
        returnMat[index : ] = example[0 : 4]
        index += 1

    return returnMat



def calculateDistance(train_example test_example example_length):
    “““
    函数说明:
        计算训练样本和测试样本之间的欧几里德距离
    :param train_example:
        训练样本的数据
    :param test_example:
        测试样本的数据
    :param example_length:
        样本的属性长度
    :return:
        distance - 训练样本和测试样本之间的欧几里德距离
    “““
    distance = 0.0
    for i in range(example_length):
        distance += pow(train_example[i] - test_example[i] 2)

    return distance

def get_K_Neighbors(trainingSet trainingLabel test_example k):
    “““
    函数说明:
        取得与测试样本距离最近的k个训练样本
    :param trainingSet:
        训练样本数据集
    :param trainingLabel:
        训练样本标签集
    :param test_example:
        测试样本
    :param k:
        即参数k
    :return:
        kNeighbors - 与测试样本最近的k个训练样本的集合
    “““
    length = len(test_example)
    distances = []

    for i in range(len(trainingSet)):
        dis = calculateDistance(trainingSet[i] test_example length)
        distances.append((trainingLabel[i] dis))

    distances.sort(key=operator.itemgetter(1))

    kNeighbors = []
    for i in range(k):
        kNeighbors.append(distances[i][0])

    return kNeighbors


def getReasult(kNeighbors):
    “““
    函数说明:
        取得与测试样本距离最近的k个训练样本中的最公共类别
    :param kNeighbors:
        与测试样本最近的k个训练样本的集合
    :return:
        sortedLabel[0][0] - 预测该测试样本所属的类别
    “““
    classLabel = {}
    for i in range(len(kNeighbors)):
        temp = kNeighbors[i]
        if temp in classLabel:
            classLabel[temp] += 1
        else:
            classLabel[temp] = 1

    sortedLabel = sorted(classLabel.items() key=operator.itemgetter(1) reverse=True)
    return sortedLabel[0][0]

def getAccuracy(testLabel predictions):
    “““
    函数说明:
        计算预测的准确率
    :param testLabel:
        测试数据所属的真实类别
    :param predictions:
        预测测试数据所属的类别
    :return:
        (cnt / float(len(testLabel))) * 100.0 - 准确率
    “““
    cnt = 0

 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-19 13:25  KNN\
     文件        6148  2018-10-19 13:24  KNN\.DS_Store
     目录           0  2018-10-19 13:25  __MACOSX\
     目录           0  2018-10-19 13:25  __MACOSX\KNN\
     文件         120  2018-10-19 13:24  __MACOSX\KNN\._.DS_Store
     文件        3760  2016-09-26 20:50  KNN\train.txt
     文件         228  2016-09-26 20:50  __MACOSX\KNN\._train.txt
     文件         508  2017-09-20 09:25  KNN\test.txt
     文件         228  2017-09-20 09:25  __MACOSX\KNN\._test.txt
     文件        5761  2018-09-20 14:48  KNN\KNN.py
     文件         176  2018-09-20 14:48  __MACOSX\KNN\._KNN.py

评论

共有 条评论