1)Iris也称鸢尾花卉数据集(使用sklearn自带的数据集),它共有4个属性列和一个品种类别列:sepal length(萼片长度)、sepal width(萼片宽度)、petal length(花瓣长度)、petal width (花瓣宽度),单位都是厘米。样本数量150个。分别使用KMeans聚类、DBSCAN算法对大量的鸢尾花数据进行聚类训练,并比较这几种算法的评估性能。要代码
时间: 2024-03-23 08:37:07 浏览: 73
好的,以下是使用KMeans聚类和DBSCAN算法对鸢尾花数据集进行聚类的Python代码:
首先,我们需要导入所需的库和数据集:
```python
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans, DBSCAN
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
iris = load_iris()
X = iris.data
y = iris.target
```
接下来,我们使用KMeans算法进行聚类,并计算轮廓系数评估聚类质量:
```python
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
y_kmeans = kmeans.predict(X)
silhouette_kmeans = silhouette_score(X, y_kmeans)
print("KMeans轮廓系数:", silhouette_kmeans)
```
然后,我们使用DBSCAN算法进行聚类,并计算轮廓系数评估聚类质量:
```python
dbscan = DBSCAN(eps=0.5, min_samples=5).fit(X)
y_dbscan = dbscan.labels_
silhouette_dbscan = silhouette_score(X, y_dbscan)
print("DBSCAN轮廓系数:", silhouette_dbscan)
```
最后,我们可以将聚类结果可视化:
```python
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans)
plt.title("KMeans聚类结果")
plt.show()
plt.scatter(X[:, 0], X[:, 1], c=y_dbscan)
plt.title("DBSCAN聚类结果")
plt.show()
```
完整代码如下:
```python
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans, DBSCAN
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
iris = load_iris()
X = iris.data
y = iris.target
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
y_kmeans = kmeans.predict(X)
silhouette_kmeans = silhouette_score(X, y_kmeans)
print("KMeans轮廓系数:", silhouette_kmeans)
dbscan = DBSCAN(eps=0.5, min_samples=5).fit(X)
y_dbscan = dbscan.labels_
silhouette_dbscan = silhouette_score(X, y_dbscan)
print("DBSCAN轮廓系数:", silhouette_dbscan)
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans)
plt.title("KMeans聚类结果")
plt.show()
plt.scatter(X[:, 0], X[:, 1], c=y_dbscan)
plt.title("DBSCAN聚类结果")
plt.show()
```
注意:这里仅仅是一个简单的演示,实际应用中,我们还需要进行更多的数据预处理和调参工作。
阅读全文