一点日记

import numpy as np
import operator

dic = {‘a’:4, ‘b’:2, ‘c’:3}
s = sorted(dic.items(),key=operator.itemgetter(1),reverse= True)
print(s)
d = np.array(list(dic.values()))
print(np.argsort(d))

[(‘a’, 4), (‘c’, 3), (‘b’, 2)]
[1 2 0]

以上,结合KNN算法

import numpy as np
import operator
#训练数据
train_x=np.array([[1,1],
         [1,2],
         [2,1],
         [1.5,1.5],
         [2,3],
         [3,2],
         [3,3],
         [4,3]])
train_y=np.array(['A',
         'A',
         'A',
         'A',
         'B',
         'B',
         'B',
         'B'])
test_data = np.array([[2,4]])
#请使用knn算法 预测 测试数据属于哪个类别  k=3
"""
1.计算测试数据和所有样本数据之间距离
2.对所有距离进行排序
3.取前k个最近的样本  
4.使用少数服从多数的方法 输出结果
"""
def knn(train_x,train_y,test_data,k):
    #1.计算测试数据和所有样本数据之间距离
    dist = np.sum((test_data-train_x)**2,axis=1)**0.5
    #2.对所有距离进行排序
    sortedIndex = np.argsort(dist)
    #3.取前k个最近的样本所对应的类别的个数
    classCount = {}
    for i in range(k):
        #获取前k个最近距离样本的标签
        label = train_y[sortedIndex[i]]
        classCount[label]=classCount.get(label,0)+1
        print(classCount)
    #4.使用少数服从多数的方法 输出结果
    return sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)[0][0]

if __name__=="__main__":
    print(knn(train_x, train_y, test_data, 3))

# #创建模型
# classifier = KNeighborsClassifier(n_neighbors=5)
# #训练模型
# classifier.fit(train_x,train_y)
# #预测
# result= classifier.predict(test_data)
# print(result)
# #输出概率
# print(classifier.predict_proba(test_data))

结果如下:
{‘B’: 1}
{‘B’: 2}
{‘B’: 2, ‘A’: 1}
下面注释部分为调用SKLEARN解法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值