关注
我觉得找离群点有点类似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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
04-17 12:35
哈尔滨理工大学 C++ 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 职场捅娄子大赛 #
292281次浏览 2783人参与
# 晒一下我的毕业照 #
20595次浏览 153人参与
# 华泰证券Fintech星战营 #
163796次浏览 185人参与
# 华为求职进展汇总 #
4619375次浏览 28142人参与
# 好好告别我的学生时代 #
10461次浏览 196人参与
# 一人一个landing小技巧 #
52474次浏览 858人参与
# 机械人,签完三方你在忙什么? #
47944次浏览 211人参与
# 简历无回复,你会继续海投还是优化再投? #
66813次浏览 690人参与
# 产品人专业大盘点 #
45264次浏览 293人参与
# 如何KTV领导 #
54577次浏览 409人参与
# 运营来爆料 #
42493次浏览 319人参与
# 互联网行业现在还值得去吗 #
16134次浏览 53人参与
# 你的秋招第一面感觉怎么样 #
69304次浏览 554人参与
# 嵌入式岗知多少 #
38528次浏览 424人参与
# 秋招最大的收获是什么? #
31635次浏览 287人参与
# 来聊聊机械薪资天花板是哪家 #
121374次浏览 735人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
84641次浏览 647人参与
# 记录实习开销 #
9444次浏览 67人参与
# 如果不工作真的会快乐吗 #
115693次浏览 941人参与
# 应届生应该先就业还是先择业 #
105383次浏览 623人参与
# 节后第一天上班,我的精神状态 #
8505次浏览 72人参与