使用k-means算法进行西瓜品类分析案例代码
时间: 2023-05-14 13:03:14 浏览: 265
K-means算法是一种简单有效的聚类算法,在数据挖掘和机器学习领域得到广泛应用。对于西瓜品类分析,在进行K-means算法之前,需要先对数据进行处理和数据预处理。以下是基于python语言的代码实现:
首先,安装所需库
```
pip install pandas numpy matplotlib seaborn sklearn
```
接着,导入所需库并读入数据
```
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans
# 读入数据
data=pd.read_csv('watermelon.csv')
```
数据的预处理包括去掉无用数据、数据类型转换等。该数据中无无用数据,故只需数据类型转换:
```
# 数据类型转换
data.iloc[:,2:]=data.iloc[:,2:].astype('float64')
```
接着,按照品种名称对数据进行分组,并分别绘制出密度图和散点图以观察数据分布情况:
```
# 分组
data1=data.groupby('品种')
# 绘制密度图
for i in data1:
sns.distplot(i[1]['密度'],hist=False,rug=True,label=i[0])
# 绘制散点图
plt.scatter(data['密度'],data['含糖率'],c=data['品种'].astype('category').cat.codes)
plt.show()
```
绘制的结果如下图所示:
![image-20210318161715841](https://cdn.jsdelivr.net/gh/107-world/img_cdn/img_a/image-20210318161715841.png)
通过观察数据分布情况,可以考虑对密度和含糖率进行聚类分析,代码如下:
```
# 聚类
data2=data.iloc[:,2:]
kmeans=KMeans(n_clusters=3,random_state=0).fit(data2)
# 将聚类结果存储在dataframe中
result=pd.concat([data,pd.Series(kmeans.labels_,index=data.index)],axis=1)
result.rename(columns={0:'聚类结果'},inplace=True)
# 绘制聚类后的分布情况
plt.scatter(result['密度'],result['含糖率'],c=result['聚类结果'].astype('category').cat.codes)
plt.show()
```
通过绘制聚类后的分布情况,可以更直观地观察聚类结果,代码如下:
![image-20210318162328962](https://cdn.jsdelivr.net/gh/107-world/img_cdn/img_a/image-20210318162328962.png)
在本次西瓜品类分析中,我们使用K-means算法对西瓜的密度和含糖率进行聚类分析,将西瓜分为三个品类,并可视化显示各品类的分布情况。K-means算法的优点是简单易懂、计算速度快,适合处理大规模的数据,但由于需要事先指定聚类数量,对初始值的选择比较敏感,因此还需要对数据进行比较准确的预处理和选择合适的初始值方法。
阅读全文