%matplotlib inline from sklearn.cluster import KMeans#导入sklearn中kmeans聚类包 import numpy as np from matplotlib import pyplot as plt import sklearn.datasets as datasets iris=datasets.load_iris() #1 查看iris包括哪些信息,比如数据,label等。将这些信息打印出来; #2 信息中是否已包含每一样本所属的类?没聚类之彰,是否可以打印iris每一个label的样本个数; #3 画出第一类label的前两列的散点图; #4 用KMeans对数据进行聚类; #5 打印各聚类中心; #6 打印聚类后几个点的类标号; #7 打印迭代次数; #8 说明以下代码的作用: data=iris.data k=[] for i in range(1,20): km=KMeans(n_clusters=i,init='random',n_init=10,max_iter=200,tol=1e-04,random_state=0) km.fit(data) # inertia_:Sum of squared distances of samples to their closest cluster center. k.append(km.inertia_) plt.plot(range(1,20),k,marker='o') plt.xlabel('Number of cluster') plt.ylabel('Distorton') #9 使用BIRCH算法对iris进行了聚类,将同一类中的前两维用相同的颜色画出来。 #10 使用DBSCAN算法对iris进行了聚类,将同一类中的前两维用相同的颜色画出来。
时间: 2024-02-04 16:03:52 浏览: 77
1. iris包含数据、标签、标签名字、数据描述、特征名字等信息,可以使用以下代码打印出来:
```python
print("数据:\n", iris.data)
print("标签:\n", iris.target)
print("标签名字:\n", iris.target_names)
print("数据描述:\n", iris.DESCR)
print("特征名字:\n", iris.feature_names)
```
2. 信息中已经包含每一个样本所属的类,可以使用以下代码打印每一类的样本个数:
```python
for i in range(len(iris.target_names)):
print("类别", iris.target_names[i], "的样本个数为:", len(iris.target[iris.target==i]))
```
3. 画出第一类label的前两列的散点图,可以使用以下代码:
```python
plt.scatter(iris.data[iris.target==0, 0], iris.data[iris.target==0, 1])
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
4. 使用KMeans对数据进行聚类,可以使用以下代码:
```python
km = KMeans(n_clusters=3, init='random', n_init=10, max_iter=200, tol=1e-04, random_state=0)
km.fit(iris.data)
```
5. 打印各聚类中心,可以使用以下代码:
```python
print("聚类中心:\n", km.cluster_centers_)
```
6. 打印聚类后几个点的类标号,可以使用以下代码:
```python
print("聚类后的标签:\n", km.labels_[:5])
```
7. 打印迭代次数,可以使用以下代码:
```python
print("迭代次数:\n", km.n_iter_)
```
8. 以下代码的作用是绘制不同聚类数目下,样本到最近聚类中心的距离之和的变化曲线,用于寻找最佳聚类数目。
```python
data = iris.data
k = []
for i in range(1, 20):
km = KMeans(n_clusters=i, init='random', n_init=10, max_iter=200, tol=1e-04, random_state=0)
km.fit(data)
k.append(km.inertia_)
plt.plot(range(1, 20), k, marker='o')
plt.xlabel('Number of cluster')
plt.ylabel('Distortion')
```
9. 使用BIRCH算法对iris进行了聚类,可以使用以下代码将同一类中的前两维用相同的颜色画出来:
```python
from sklearn.cluster import Birch
birch = Birch(n_clusters=3)
birch.fit(iris.data)
plt.scatter(iris.data[birch.labels_==0, 0], iris.data[birch.labels_==0, 1], c='blue')
plt.scatter(iris.data[birch.labels_==1, 0], iris.data[birch.labels_==1, 1], c='red')
plt.scatter(iris.data[birch.labels_==2, 0], iris.data[birch.labels_==2, 1], c='green')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
10. 使用DBSCAN算法对iris进行了聚类,可以使用以下代码将同一类中的前两维用相同的颜色画出来:
```python
from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan.fit(iris.data)
plt.scatter(iris.data[dbscan.labels_==0, 0], iris.data[dbscan.labels_==0, 1], c='blue')
plt.scatter(iris.data[dbscan.labels_==1, 0], iris.data[dbscan.labels_==1, 1], c='red')
plt.scatter(iris.data[dbscan.labels_==2, 0], iris.data[dbscan.labels_==2, 1], c='green')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
阅读全文