生成两组线性均匀分布的数据(完全线性可分)。 生成两组线性均匀分布的数据(线性不可分)。 生成两组高斯分布的数据(完全线性可分)。 生成两组高斯分布的数据(线性不可分)。 2. 对每组分别使用 K-means聚类程序进行二分类。并进行可视化
时间: 2024-03-02 14:50:37 浏览: 8
好的,我明白了。以下是回答:
1. 生成数据:
- 生成两组线性均匀分布的数据(完全线性可分):
```python
import numpy as np
import matplotlib.pyplot as plt
# 第一组数据
np.random.seed(0)
X1 = np.random.uniform(low=-1.5, high=1.5, size=(100, 2))
y1 = np.full((100,), 1)
# 第二组数据
np.random.seed(1)
X2 = np.random.uniform(low=-1.5, high=1.5, size=(100, 2))
X2[:,0] += 2
y2 = np.full((100,), 2)
# 合并数据
X = np.concatenate([X1, X2], axis=0)
y = np.concatenate([y1, y2], axis=0)
# 可视化数据
plt.scatter(X1[:,0], X1[:,1], c='r', marker='o', label='class 1')
plt.scatter(X2[:,0], X2[:,1], c='b', marker='s', label='class 2')
plt.legend()
plt.show()
```
- 生成两组线性均匀分布的数据(线性不可分):
```python
import numpy as np
import matplotlib.pyplot as plt
# 第一组数据
np.random.seed(0)
X1 = np.random.uniform(low=-1.5, high=1.5, size=(100, 2))
y1 = np.full((100,), 1)
# 第二组数据
np.random.seed(1)
X2 = np.random.uniform(low=-1.5, high=1.5, size=(100, 2))
X2[:,0] += np.sin(X2[:,1]*np.pi)
y2 = np.full((100,), 2)
# 合并数据
X = np.concatenate([X1, X2], axis=0)
y = np.concatenate([y1, y2], axis=0)
# 可视化数据
plt.scatter(X1[:,0], X1[:,1], c='r', marker='o', label='class 1')
plt.scatter(X2[:,0], X2[:,1], c='b', marker='s', label='class 2')
plt.legend()
plt.show()
```
- 生成两组高斯分布的数据(完全线性可分):
```python
import numpy as np
import matplotlib.pyplot as plt
# 第一组数据
np.random.seed(0)
X1 = np.random.normal(loc=[-1,-1], scale=[0.2,0.2], size=(100, 2))
y1 = np.full((100,), 1)
# 第二组数据
np.random.seed(1)
X2 = np.random.normal(loc=[1,1], scale=[0.2,0.2], size=(100, 2))
y2 = np.full((100,), 2)
# 合并数据
X = np.concatenate([X1, X2], axis=0)
y = np.concatenate([y1, y2], axis=0)
# 可视化数据
plt.scatter(X1[:,0], X1[:,1], c='r', marker='o', label='class 1')
plt.scatter(X2[:,0], X2[:,1], c='b', marker='s', label='class 2')
plt.legend()
plt.show()
```
- 生成两组高斯分布的数据(线性不可分):
```python
import numpy as np
import matplotlib.pyplot as plt
# 第一组数据
np.random.seed(0)
X1 = np.random.normal(loc=[-1,-1], scale=[0.2,0.2], size=(100, 2))
y1 = np.full((100,), 1)
# 第二组数据
np.random.seed(1)
X2 = np.random.normal(loc=[1,1], scale=[0.2,0.2], size=(100, 2))
X2[:,1] = np.maximum(X2[:,1], X2[:,0]**2)
y2 = np.full((100,), 2)
# 合并数据
X = np.concatenate([X1, X2], axis=0)
y = np.concatenate([y1, y2], axis=0)
# 可视化数据
plt.scatter(X1[:,0], X1[:,1], c='r', marker='o', label='class 1')
plt.scatter(X2[:,0], X2[:,1], c='b', marker='s', label='class 2')
plt.legend()
plt.show()
```
2. K-means聚类程序进行二分类并进行可视化:
```python
from sklearn.cluster import KMeans
# K-means聚类
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
y_pred = kmeans.predict(X)
# 可视化聚类结果
plt.scatter(X[y_pred==0,0], X[y_pred==0,1], c='r', marker='o', label='class 1')
plt.scatter(X[y_pred==1,0], X[y_pred==1,1], c='b', marker='s', label='class 2')
plt.legend()
plt.show()
```
以上是生成数据并使用K-means聚类程序进行二分类并进行可视化的代码。