K-MEANS 未调用第三方模块

本文介绍了一种手动实现K均值聚类算法的方法,包括输入样本大小、特征数和聚类数,随机选择初始质心,计算每个样本到各质心的距离并分配最近的类别,更新质心直至收敛。同时,对比了使用sklearn库中的KMeans算法进行聚类的过程,展示了两种方法的异同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备注地方只是用来测试,没有其他用处!!!!!!!!
初次编写,有许多不足。。。。。。。。。。。。。。。

未调用第三方模块

-- coding: utf-8 --

“”"
Created on Mon Apr 29 12:14:36 2019

@author: 你是不是在坐飞机
“”"

-- coding: utf-8 --

“”"
Spyder Editor

This is a temporary script file.
“”"
import numpy as np
import random

from sklearn.cluster import KMeans

m = int(input(“请输入样本大小:”))
n = int(input(“请输入特征数:”))
x = int(input(“请输入聚类数:”))
data = np.random.rand(m,n)

classification = []
after = []
feature = []
for i in range(0,x):
feature.append(random.choice(data))
round = 0
mark = 0
while(round == 0):
after = []
classification = []
for o in range(0,x):
after.append([])
classification.append([])
#print(“feature**************************************”)
#print(feature)
for j in range(0,m):
count = 0
distance = []
s = data[j]
for i2 in range(0,x):
sum = 0
for j2 in range(0,n):
dis = (feature[i2][j2] - s[j2])2
sum = sum + dis
distance.append(sum)
min = distance[0]
for i3 in range(0,x):
if(min > distance[i3]):
min = distance[i3]
count = i3
classification[count].append(s)
#print("classification:
")
#print(classification)
classname = []
for i4 in range(0,x):
classname = classification[i4]
#print(classname)
for i5 in range(0,n):
sum2 = 0
for i6 in range(0,len(classname)):
sum2 = sum2 + classname[i6][i5]
average = sum2 / len(classname)
#print("average:
")
#print(average)
after[i4].append(average)
#print("after
***********************")
#print(after)
distance2 = []
for i6 in range(0,x):
sum3 = 0
for i7 in range(0,n):
dis1 = (feature[i6][i7] - after[i6][i7])2
sum3 = sum3 + dis1
distance2.append(sum3)
flag = 0
#print(“distance2”)
#print(distance2)
for i8 in range(0,x):
if(distance2[i8] < 0.000001):
flag = flag + 1
if(flag == x):
round = 1
#print(feature)
#print(round)
for i9 in range(0,x):
for i10 in range(0,n):
feature[i9][i10] = after[i9][i10]
#print("while
*****************************************************************************************************************")
print(“未调用第三方模块:”)
print(feature)

调用第三方模块

estimator = KMeans(n_clusters= x)#构造聚类器

estimator.fit(data)#聚类

label_pred = estimator.labels_ #获取聚类标签

centroids = estimator.cluster_centers_ #获取聚类中心

#print(label_pred);
print(“调用第三方模块:”)
print(centroids);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值