生成两组线性均匀分布的数据(完全线性可分)。 生成两组线性均匀分布的数据(线性不可分)。 生成两组高斯分布的数据(完全线性可分)。 生成两组高斯分布的数据(线性不可分)。 2. 使用 K-means聚类程序进行二分类。并进行可视化
时间: 2024-03-02 16:49:54 浏览: 5
好的,以下是完整的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 生成两组线性均匀分布的数据(完全线性可分)
n = 50
x1 = np.random.uniform(-1, 1, (n, 2))
x2 = np.random.uniform(-1, 1, (n, 2))
w = np.array([1, 2])
b = 0.5
y1 = np.sign(np.dot(x1, w) + b)
y2 = np.sign(np.dot(x2, w) + b)
# 生成两组线性均匀分布的数据(线性不可分)
x1_noise = np.random.normal(0, 0.2, (n, 2))
x2_noise = np.random.normal(0, 0.2, (n, 2))
x1 = np.concatenate([x1, x1_noise])
x2 = np.concatenate([x2, x2_noise])
y1 = np.concatenate([y1, np.ones(n)])
y2 = np.concatenate([y2, -np.ones(n)])
# 生成两组高斯分布的数据(完全线性可分)
n = 50
x1 = np.random.normal(0, 1, (n, 2))
x2 = np.random.normal(2, 1, (n, 2))
w = np.array([1, 2])
b = 0.5
y1 = np.sign(np.dot(x1, w) + b)
y2 = np.sign(np.dot(x2, w) + b)
# 生成两组高斯分布的数据(线性不可分)
x1_noise = np.random.normal(0, 0.5, (n, 2))
x2_noise = np.random.normal(0, 0.5, (n, 2))
x1 = np.concatenate([x1, x1_noise])
x2 = np.concatenate([x2, x2_noise])
y1 = np.concatenate([y1, np.ones(n)])
y2 = np.concatenate([y2, -np.ones(n)])
# 合并数据并打标签
X = np.concatenate([x1, x2])
y = np.concatenate([y1, y2])
# 使用 KMeans 进行聚类
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
# 得到聚类结果
y_pred = kmeans.labels_
# 输出准确率
accuracy = np.mean(y_pred == y)
print('Accuracy:', accuracy)
# 可视化
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.show()
```
运行结果可能不同,但是你应该可以看到一个二分类的可视化结果。