航空数据集kmeans聚类算法matlab代码
时间: 2024-06-06 14:03:54 浏览: 209
航空数据集是一个经典的聚类算法数据集,包含了航空公司客户的数据,其中每个数据点都是由15个属性构成的。其中包括客户编号、性别、年龄、所在城市、飞行次数、飞行里程数、折扣系数等等。对于这个数据集,我们可以使用K-means聚类算法来进行分类。
以下是一份简单的MATLAB代码实现K-means聚类算法:
```matlab
%读取数据
data = xlsread('airline.xls');
%设置聚类数量
k = 5;
%设置迭代次数
max_iters = 10;
%随机初始化聚类中心
centroids = kMeansInitCentroids(data, k);
for i=1:max_iters
%分配每个数据点到最近的聚类中心
idx = findClosestCentroids(data, centroids);
%移动聚类中心到平均位置
centroids = computeCentroids(data, idx, k);
end
%绘制聚类结果
plotDataPoints(data, idx, k);
```
这里使用了三个辅助函数:`kMeansInitCentroids`用于随机初始化聚类中心,`findClosestCentroids`用于分配每个数据点到最近的聚类中心,`computeCentroids`用于移动聚类中心到平均位置。这些函数的实现可以参考相关教程或者书籍。
相关问题
kmeans聚类算法matlab代码
以下是kmeans聚类算法的Matlab代码:
```matlab
% 数据准备
data = [1,1;1,2;2,1;2,2;5,5;5,6;6,5;6,6];
% 聚类个数和最大迭代次数
k = 2;
max_iter = 10;
% 初始化聚类中心
center = data(randperm(size(data,1),k),:);
last_center = center;
% 迭代
for iter = 1:max_iter
% 计算每个样本到聚类中心的距离
dist = pdist2(data,center);
% 对每个样本进行聚类
[~,label] = min(dist,[],2);
% 更新聚类中心
for i = 1:k
center(i,:) = mean(data(label==i,:));
end
% 判断聚类中心是否变化
if isequal(center,last_center)
break;
end
last_center = center;
end
% 可视化聚类结果
scatter(data(:,1),data(:,2),[],label);
```
注释部分是对代码的解释。
kmeans聚类算法 matlab代码
以下是一个简单的kmeans聚类算法的matlab代码示例:
```matlab
% 生成100个二维随机数据点
data = rand(100,2);
% 设置聚类个数为3
k = 3;
% 随机初始化聚类中心
centroids = data(randperm(size(data,1),k),:);
% 最大迭代次数
max_iter = 100;
% 初始化变量
iter = 0;
old_centroids = zeros(size(centroids));
while ~isequal(centroids, old_centroids) && iter < max_iter
% 保存上一次迭代的聚类中心
old_centroids = centroids;
% 计算每个数据点到聚类中心的距离
dists = pdist2(data, centroids);
% 将每个数据点分配到距离最近的聚类中心
[~, idx] = min(dists, [], 2);
% 更新聚类中心为每个聚类的平均值
for i = 1:k
centroids(i,:) = mean(data(idx == i,:), 1);
end
% 迭代次数加1
iter = iter + 1;
end
% 将数据点按照聚类分配结果绘制散点图
figure;
scatter(data(idx==1,1), data(idx==1,2), 'r');
hold on;
scatter(data(idx==2,1), data(idx==2,2), 'g');
scatter(data(idx==3,1), data(idx==3,2), 'b');
scatter(centroids(:,1), centroids(:,2), 'k', 'filled');
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids');
```
这段代码首先生成了100个二维随机数据点,然后使用kmeans聚类算法将它们分成了3个簇。最后将数据点按照聚类结果绘制了散点图,并用黑色实心圆表示每个聚类的中心。
阅读全文