k均值算法
如图 这不就是散点图吗? import matplotlib.pyplot as pltimport pandas as pd
import numpy as np
file = r"test.csv"
data = pd.read_csv(file)
fig, ax = plt.subplots()
ax.scatter(data['X1'], data['X2'])
xticks=np.arange(-2,14,2),ylim=(0, 12), yticks=np.arange(0, 14,2))
plt.show() elven08 发表于 2022-3-12 22:22
他说的是K-均值聚类算法,不是散点图可视化。具体来说就是给这30多个点分类组团,哪些点可以抱做一团,一共分几个团合适。这个我用matlab编写过,用python还不习惯。 lassiter 发表于 2022-3-13 11:42
他说的是K-均值聚类算法,不是散点图可视化。具体来说就是给这30多个点分类组团,哪些点可以抱做一团,一 ...
matlab怎么说呢
本帖最后由 lassiter 于 2022-4-17 23:24 编辑
G`J 发表于 2022-3-14 17:33
matlab怎么说呢
function =Kmean(P1,ZZ,signal)
%本程序求K-mean聚类
%P1是点的集合,点的坐标用列向量表示
%ZZ是初始聚类点,signal是点的标签信息,用来判断最后分类的正确率
[~,N]=size(P1);ZZnew=ZZ; n=size(ZZ,2);E=10;
% E是前一次聚类点与下一次聚类点的距离差
while E>0
ZZ=ZZnew;
basket=cell(2,n); % 建立2行n列的“篮子”
for i=1:N%遍历每个点,求每个点分别到初始聚类点的距离
temp=P1(:,i);
e=abs(temp*ones(1,n)-ZZ);
e2=sum(e.*e,1); %欧氏距离
%找到最近的聚类点,放入对应的“篮子”
[~,b]=min(e2);
basket{1,b}=;
basket{2,b}=;
end
%对“篮子”内的点集求均值,重新定义聚类点,重新计算聚类点的移动距离
for i=1:n
ZZnew(:,i)=mean(basket{1,i},2);
end
E=sum(sum(abs(ZZnew-ZZ)));
end
% 计算点集到新聚类点的距离差之和
r=0;
for i=1:n
nn=size(basket{1,i},2);
e=abs(ZZnew(:,i)*ones(1,nn)-basket{1,i});
e2(i)=sum(sum(e.*e));%欧氏距离
end
J=sum(e2);
%根据标签信息计算分类正确率
for i=1:n
for j=1:n
r(i,j)=sum(basket{2,i}==j);
end
end
rate=sum(max(r'))/N;
end
页:
[1]