K邻近算法之最邻近算法代码

import pandas as pd
import numpy as np

#使用pandas 读取data
train = pd.read_csv("iris-data-training.csv",encoding = "GBK")
test = pd.read_csv("iris-data-testing.csv", encoding = "GBK")

#将读取的DataFrame格式转换成np.array
train_array = train.values
test_array = test.values

#存储训练样本的最大值
train_array_max = []
train_array_min = []

#分别记录训练样本的数量及特征量数目+1
n = train_array.shape[0]
m = train_array.shape[1]

#测试样本的数目
test_n = test_array.shape[0]

#提取训练样本和测试样本的特征量和真实结果
train_x = train_array[ :, :m-1].reshape(n,m-1)
train_y = train_array[ :, m-1].reshape(n,)
test_x = test_array[ :, :m-1].reshape(test_n,m-1)
test_y = test_array[ :, m-1].reshape(test_n,)

#将特征量归一化
for i in range(m-1):
    train_array_max.append(np.max(train_x[:,i]))
    train_array_min.append(np.min(train_x[:,i]))
    train_x[:,i] = (train_x[:, i] - train_array_min[i]) / (train_array_max[i] - train_array_min[i])
    test_x[:, i] = (test_x[:, i] - train_array_min[i]) / (train_array_max[i] - train_array_min[i])

#利用最邻近算法进行预测训练数据结果
result = []
for x1 in test_x:
    distance = []
    for x2 in train_x:
        distance.append(np.sum((x1 - x2) * (x1 - x2)))
    result.append(train_y[distance.index(min(distance))])

print(result)
print(test_y.tolist())

result = np.array(result)

#获得识别率
recognition_rate = np.sum((result-test_y) == 0)/len(test_y)

print(recognition_rate)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值