生成两组线性均匀分布的数据(完全线性可分)。 生成两组线性均匀分布的数据(线性不可分)。 生成两组高斯分布的数据(完全线性可分)。 生成两组高斯分布的数据(线性不可分)。 2. 使用 K-means聚类程序进行二分类。
时间: 2024-03-02 07:49:50 浏览: 211
用K均值将数据分成两类
好的,我明白了。以下是我的回答:
1. 生成数据
- 生成两组线性均匀分布的数据(完全线性可分)
可以使用 numpy 库中的 random 函数生成两组均匀分布的数据,然后用线性方程分别将它们分隔开来。
```python
import numpy as np
# 生成两组均匀分布的数据
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)
```
- 生成两组线性均匀分布的数据(线性不可分)
可以使用 numpy 库中的 random 函数生成两组均匀分布的数据,然后在其中一组数据中添加噪声。
```python
import numpy as np
# 生成两组均匀分布的数据
n = 50
x1 = np.random.uniform(-1, 1, (n, 2))
x2 = np.random.uniform(-1, 1, (n, 2))
# 在其中一组数据中添加噪声
x2 += 0.2 * np.random.randn(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)
```
- 生成两组高斯分布的数据(完全线性可分)
可以使用 numpy 库中的 random 函数生成两组高斯分布的数据,然后用线性方程分别将它们分隔开来。
```python
import numpy as np
# 生成两组高斯分布的数据
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)
```
- 生成两组高斯分布的数据(线性不可分)
可以使用 numpy 库中的 random 函数生成两组高斯分布的数据,然后在其中一组数据中添加噪声。
```python
import numpy as np
# 生成两组高斯分布的数据
n = 50
x1 = np.random.normal(0, 1, (n, 2))
x2 = np.random.normal(2, 1, (n, 2))
# 在其中一组数据中添加噪声
x2 += 0.5 * np.random.randn(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)
```
2. K-means聚类程序进行二分类
可以使用 sklearn 库中的 KMeans 函数进行聚类。以下是一个示例代码:
```python
from sklearn.cluster import KMeans
# 合并数据并打标签
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)
```
阅读全文