实现python鸢尾花的聚类和分类,具体代码
时间: 2023-08-09 11:06:34 浏览: 101
好的,以下是实现 Python 鸢尾花数据集的聚类和分类的代码。
首先需要导入必要的库:numpy、pandas、sklearn、matplotlib。
```python
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
%matplotlib inline
```
然后,我们需要读取鸢尾花数据集,可以使用 pandas 库中的 read_csv 方法。
```python
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
df.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']
df.head()
```
接着,我们需要将数据集分为训练集和测试集,并进行聚类和分类。
```python
# 分离出特征和标签
X = df.iloc[:, :-1].values
y = df.iloc[:, -1].values
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 聚类
kmeans = KMeans(n_clusters=3, random_state=0)
y_kmeans = kmeans.fit_predict(X_train)
# 分类
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
```
最后,我们可以输出聚类和分类的准确率,并进行可视化展示。
```python
# 输出聚类和分类的准确率
print('KMeans聚类准确率:', accuracy_score(y_train, y_kmeans))
print('KNN分类准确率:', accuracy_score(y_test, y_pred))
# 可视化展示
plt.scatter(X[y == 'Iris-setosa', 0], X[y == 'Iris-setosa', 1], s=100, c='red', label='Iris-setosa')
plt.scatter(X[y == 'Iris-versicolor', 0], X[y == 'Iris-versicolor', 1], s=100, c='blue', label='Iris-versicolor')
plt.scatter(X[y == 'Iris-virginica', 0], X[y == 'Iris-virginica', 1], s=100, c='green', label='Iris-virginica')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=100, c='yellow', label='Centroids')
plt.title('KMeans Clustering')
plt.legend()
plt.show()
```
以上就是实现 Python 鸢尾花数据集的聚类和分类的完整代码。
阅读全文