人工智能之二分类的简单实现

"""
knn算法,二分类的简单实现:物以类聚,人以群分,要判断一个新数据的类别,就看他的邻居是谁
计算距离时既可以使用欧氏距离,也就是两点之间的直线距离,也可以使用曼哈顿距离,也就是坐标轴距离的绝对值的和。
"""

import numpy as np
import math
# 训练集
train_x = [[15, 3],
           [10, 2],
           [5, 14],
           [18, 4],
           [3, 15],
           [4, 11],
           [5, 13],
           [2, 10],
           [14, 5],
           [11, 2]]

# 结果集,设男是0,女是1
train_y = [1, 1, 0, 1, 0, 0, 0, 0, 1, 1]

# 将数据集转化为numpy类型的
trainx = np.array(train_x)
trainy = np.array(train_y)

# x 为测试的点的位置
x = np.array([20, 2])

# 计算出测试点到各个点之间的距离并输出,用math开平方根
distances = []
for x_train in trainx:
    d = math.sqrt(np.sum((x_train - x)**2))
    distances.append(d)
print(distances)

distances.sort()
# 将存放距离的列表进行排序, 这里用numpy下的argsort进行排序。返回下标
argsort = np.argsort(distances)
print(argsort)

# 定义k的值
k = 5


topK_y = [trainy[i] for i in argsort[:k]]

# Counter用来计数
from collections import Counter
# Counter是对topK_y中的0, 1进行计数,返回的是 字典
votes = Counter(topK_y)

# 将字典中最多的这一组取出并取出它所属类
x_lei = votes.most_common(1)[0][0]

print(x_lei)

总结:,本次knn算法是一个二分类问题,根据购买商品种类不同来区分男性和女性。导入了两个包,numpy和math,起名为np,math,首先定义了训练集数据和结果集数据,随后将测试集和结果集数据传入numpy中的array数组中,然后定义一个测试点数据,计算他和训练集中所有点的距离,并且按照距离的远近进行排序,可选择邻居个数来确定测试点属于哪一类,本次选用5近邻,然后将离测试点最近的5个点进行统计,将记数最多的一类记为测试点的类别,即0或者1,具体的记数函数为counter,最后打印类别。

算法设计(两点之间的距离公式):欧氏距离公式,sqrt((x-x0)2-(y-y0)2)。

排序算法:按照距离远近进行排序。

决策:测试点所属类别由最近k近邻决定

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加流罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值