关注
我觉得找离群点有点类似KMEAN算法,考完后做出来,但不确定对不对 from numpy import * def distEclud(vecA, vecB):
x = sqrt(pow(vecA[0]-vecB[0],2)+pow(vecA[1]-vecB[1],2)) return x def Kmeans_b(dataSet,N):
clusterAssment = [[0,0] for i in range(N)] # 创建一个簇分配结果矩阵,第0列记录输入哪一个簇,第1列记录存储误差 # 使用第一个作为质心 centroids = dataSet[0]
clusterChanged = True K = int(N * 0.3)
past_centroids = centroids while clusterChanged:
clusterChanged = False for i in range(N):
clusterAssment[i][1] = distEclud(dataSet[i],centroids)
arg_clusterAssment = argsort(clusterAssment,axis=0) # 修改属于哪一类 for x in range(N): if x<K:
clusterAssment[arg_clusterAssment[x][1]][0] = 1 else:
clusterAssment[arg_clusterAssment[x][1]][0] = 0 # 更新质心 temp = [] for x in clusterAssment: if x[0]==1:
temp.append(x)
centroids = sum(temp,axis=0)/K if distEclud(centroids,past_centroids) <= 0.001:
clusterChanged = True past_centroids = centroids for i in clusterAssment: print(i[0])
N = 20 data =[[1, 1], [0, 0], [0, 1], [-200, -100], [-200, 0], [-200, 100], [-100, -100], [-100, 0], [-100, 100], [0, -100], [0, 100], [100, -100], [100, 0], [100, 100], [200, -100], [200, 0], [200, 100], [2, 1], [2, 0], [1, 0]] # N = int(input()) # data = [] # for i in range(N): # data.append(list(map(int,input().split()))) Kmeans_b(data,N)
查看原帖
点赞 2
相关推荐
牛客热帖
更多
正在热议
更多
# 你的实习产出是真实的还是包装的? #
35593次浏览 434人参与
# 网申一定要掌握的小技巧 #
20356次浏览 83人参与
# 厦门银行科技岗值不值得投 #
15789次浏览 359人参与
# 学历VS实习,哪个更重要? #
2113次浏览 58人参与
# uu们,春招你还来吗? #
63633次浏览 750人参与
# 一人一道大厂面试题 #
124913次浏览 1301人参与
# 面试中,你被问过哪些奇葩问题? #
96498次浏览 1275人参与
# 面试被问到不会的问题,你怎么应对? #
26204次浏览 661人参与
# 你都用vibe coding做过什么? #
22293次浏览 826人参与
# 面试紧张时你会有什么表现? #
34245次浏览 211人参与
# 你觉得大几开始实习最合适? #
30345次浏览 313人参与
# 你见过哪些招聘隐形歧视? #
25352次浏览 214人参与
# AI Coding实战技巧 #
15563次浏览 301人参与
# 哔哩哔哩笔试 #
35182次浏览 143人参与
# 工作上你捅过哪些篓子? #
68430次浏览 317人参与
# 如果人生可以debug你会改哪一行? #
13118次浏览 167人参与
# 你现在一天AI几次? #
13535次浏览 138人参与
# 机械人,签完三方你在忙什么? #
83962次浏览 266人参与
# 你的实习什么时候入职 #
366948次浏览 2358人参与
# Claude Code泄露源码 #
15863次浏览 212人参与
# 机械人你觉得今年行情怎么样? #
7899次浏览 96人参与
查看3道真题和解析