from numpy import *
import operator
#生成训练集及类别
def createdataset():
group = array([[1.0,2.0],[1.2,0.1],[0.1,1.4],[0.3,3.5]])
labels = ["A","A","B","B"]
return group,labels
#KNN分类函数
def classify(input_c,dataset,label,k):
datasize = dataset.shape[0]
#计算欧式距离
diff = tile(input_c,(datasize,1)) - dataset
sqdiff = diff**2
squardist = sum(sqdiff,axis = 1)#行向量分别相加,从而得到新的一个行向量
dist = squardist ** 0.5
#对距离进行排序
sorteddistindex = argsort(dist)
classcount = {}
for i in range(k):
votelabel = label[sorteddistindex[i]]
#对选取的K个样本所属的类别个数进行统计
classcount[votelabel] = classcount.get(votelabel,0) + 1
#选取出现的类别次数最多的类别
maxcount = 0
for key,vaule in classcount.items():
if vaule > maxcount:
maxcount = vaule
classes = key
return classes
dataset,label = createdataset()
input_c = array([1.1,0.3])
#input_c = input("请输入一个1*2的数组:")
k = 3
output = classify(input_c,dataset,label,k)
print("测试数据为:",input_c)
print("分类结果为:",output)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于python3.6.5和scikit_learn的机器学习.zip (5个子文件)
scikit_learn-master
boston_example.py 391B
normaliza.py 1KB
KNN.py 1KB
iris_example.py 1KB
make_regression_data.py 273B
共 5 条
- 1
资源评论
博士僧小星
- 粉丝: 1935
- 资源: 5894
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功