用jupyter做GTM的完整代码,生成二维可视化散点图查看空白点,再将空白点逆映射回原始矩阵,将逆映射矩阵输出
时间: 2024-01-01 09:04:21 浏览: 48
好的,下面是一个新的代码示例,实现了你的需求,生成了二维可视化散点图。同样地,代码中的参数和函数可能需要根据实际情况进行调整。
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
# 读取数据
data = np.loadtxt('data.txt')
# 构建GTM模型
n_components = 4 # 设置聚类数量
gmm = GaussianMixture(n_components=n_components, max_iter=100, tol=1e-4)
gmm.fit(data)
# 生成低维数据并可视化
labels = gmm.predict(data)
means = gmm.means_
colors = ['red', 'blue', 'green', 'yellow']
for i in range(n_components):
plt.scatter(data[labels==i][:, 0], data[labels==i][:, 1], c=colors[i])
plt.scatter(means[i, 0], means[i, 1], marker='x', c='black')
plt.show()
# 找出空白点并逆映射回原始矩阵
threshold = 0.1 # 空白点阈值
inv_means = []
for i in range(n_components):
inv_mean = np.linalg.lstsq(gmm.weights_[i] * (data - means[i]), np.eye(data.shape[1]), rcond=None)[0]
inv_means.append(inv_mean)
blank_points = []
for i in range(data.shape[0]):
dist = np.linalg.norm(data[i] - means[labels[i]])
if dist > threshold:
blank_points.append(data[i])
inv_blank_points = []
for point in blank_points:
inv_point = np.zeros(data.shape[1])
for i in range(n_components):
inv_point += gmm.weights_[i] * np.dot(point - means[i], inv_means[i])
inv_blank_points.append(inv_point)
inv_blank_points = np.array(inv_blank_points)
# 将逆映射矩阵输出到文件中
np.savetxt('inv_matrix.txt', inv_blank_points)
```
在代码中,我们首先读取了数据,然后使用sklearn中的GaussianMixture模型构建了GTM模型。在生成低维数据并可视化之后,我们使用逆映射方法找出了空白点,并将其逆映射回原始矩阵。最后,我们将逆映射矩阵输出到文件中。
需要注意的是,在这个代码示例中,我们使用了二维可视化散点图来查看数据的分布情况。你可以根据实际情况选择不同的可视化方式。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)