Python生成两组线性均匀分布的数据(完全线性可分)。 生成两组线性均匀分布的数据(线性不可分)。 生成两组高斯分布的数据(完全线性可分)。 生成两组高斯分布的数据(线性不可分)使用 K-means聚类程序进行二分类。
时间: 2024-03-02 17:50:52 浏览: 68
以下是分别生成四组数据并使用 K-means 进行二分类的代码:
1. 生成两组线性均匀分布的数据(完全线性可分)。
```
import numpy as np
import matplotlib.pyplot as plt
# 生成线性可分的数据
x1, y1 = np.random.uniform(-1, 1, 100), np.random.uniform(-1, 1, 100)
x2, y2 = np.random.uniform(2, 4, 100), np.random.uniform(2, 4, 100)
plt.scatter(x1, y1, c='r')
plt.scatter(x2, y2, c='b')
plt.show()
# 使用 K-means 进行二分类
from sklearn.cluster import KMeans
X = np.concatenate((np.vstack((x1, y1)).T, np.vstack((x2, y2)).T))
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()
```
2. 生成两组线性均匀分布的数据(线性不可分)。
```
import numpy as np
import matplotlib.pyplot as plt
# 生成线性不可分的数据
theta = np.random.uniform(0, 2 * np.pi, 200)
r = np.random.uniform(0, 1, 200)
x1, y1 = r * np.cos(theta), r * np.sin(theta)
x2, y2 = np.random.uniform(-1, 1, 100), np.random.uniform(-1, 1, 100)
plt.scatter(x1, y1, c='r')
plt.scatter(x2, y2, c='b')
plt.show()
# 使用 K-means 进行二分类
from sklearn.cluster import KMeans
X = np.concatenate((np.vstack((x1, y1)).T, np.vstack((x2, y2)).T))
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()
```
3. 生成两组高斯分布的数据(完全线性可分)。
```
import numpy as np
import matplotlib.pyplot as plt
# 生成线性可分的高斯分布数据
mean1 = [0, 0]
mean2 = [2, 2]
cov = [[1, 0], [0, 1]]
x1, y1 = np.random.multivariate_normal(mean1, cov, 100).T
x2, y2 = np.random.multivariate_normal(mean2, cov, 100).T
plt.scatter(x1, y1, c='r')
plt.scatter(x2, y2, c='b')
plt.show()
# 使用 K-means 进行二分类
from sklearn.cluster import KMeans
X = np.concatenate((np.vstack((x1, y1)).T, np.vstack((x2, y2)).T))
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()
```
4. 生成两组高斯分布的数据(线性不可分)。
```
import numpy as np
import matplotlib.pyplot as plt
# 生成线性不可分的高斯分布数据
mean1 = [0, 0]
mean2 = [2, 2]
cov1 = [[1, 0.5], [0.5, 1]]
cov2 = [[1, -0.5], [-0.5, 1]]
x1, y1 = np.random.multivariate_normal(mean1, cov1, 100).T
x2, y2 = np.random.multivariate_normal(mean2, cov2, 100).T
plt.scatter(x1, y1, c='r')
plt.scatter(x2, y2, c='b')
plt.show()
# 使用 K-means 进行二分类
from sklearn.cluster import KMeans
X = np.concatenate((np.vstack((x1, y1)).T, np.vstack((x2, y2)).T))
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.show()
```