a.程序功能: 读入“housing.csv”文件,按注释要求对某地区收入中位数进行聚类,以展示该地区的收入情况。聚类需要使用数据集中的三列元素:longitude(经度);latitude(纬度);median_income(收入中位数)。 b.原始程序如下图所示: # fillblank_2.py import matplotlib.pyplot as plt from ________【1】________ import KMeans # 导入聚类库 import pandas as pd import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 加载数据集并提取数据 data_ori = ________【2】________ # 读取housing.csv全部数据 data = ________【3】________ # 提取聚类需要使用的三列元素 # 从键盘输入聚类数 n = int(input("请输入聚类数:\n")) # 聚类训练 res = KMeans(________【4】________, random_state = 1) # 设置聚类数为n res.fit(data) # 展示结果 centers = ________【5】________ # 获取所有簇中心 print(centers)
时间: 2024-03-13 07:48:14 浏览: 88
PCM.zip_MATLAB 聚类_PCM可能性聚类_改进聚类_模糊聚类
5星 · 资源好评率100%
以下是完整的程序代码:
```python
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans # 导入聚类库
import pandas as pd
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 加载数据集并提取数据
data_ori = pd.read_csv('housing.csv') # 读取housing.csv全部数据
data = data_ori[['longitude', 'latitude', 'median_income']] # 提取聚类需要使用的三列元素
# 从键盘输入聚类数
n = int(input("请输入聚类数:\n"))
# 聚类训练
res = KMeans(n_clusters=n, random_state=1) # 设置聚类数为n
res.fit(data)
# 展示结果
centers = res.cluster_centers_ # 获取所有簇中心
print(centers)
# 绘制散点图和聚类中心
plt.scatter(data['longitude'], data['latitude'], c=res.labels_, cmap='rainbow')
plt.scatter(centers[:, 0], centers[:, 1], marker='x', s=200, linewidths=3, color='k')
plt.xlabel('longitude')
plt.ylabel('latitude')
plt.title('收入中位数聚类结果')
plt.show()
```
程序使用`pandas`库读取`housing.csv`文件的全部数据,并提取需要聚类的三列元素。然后,程序从键盘输入聚类数,并使用`sklearn.cluster.KMeans`函数进行聚类训练。最后,程序获取所有簇中心,并使用`matplotlib`库绘制散点图和聚类中心。输出的结果类似于:
```
请输入聚类数:
4
[[-117.7749376 33.74171486 2.51461629]
[-121.8983751 38.65245874 4.10475158]
[-119.8868937 36.00482759 2.65915944]
[-118.2009091 34.15344017 6.46092896]]
```
输出的结果表示四个聚类的中心点分别在不同的经纬度位置,并且收入中位数也不相同。同时,程序还会弹出一个散点图窗口,展示聚类的结果。
阅读全文