python matlibplot绘制矩阵_matplotlib.pyplot.matshow 矩阵可视化实例
时间: 2023-10-25 08:34:21 浏览: 185
好的,这是一个使用 matplotlib.pyplot.matshow 函数绘制矩阵的示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建一个 5x5 的随机矩阵
matrix = np.random.rand(5, 5)
# 使用 matshow 函数绘制矩阵
plt.matshow(matrix)
# 显示图像
plt.show()
```
这段代码会生成一个随机矩阵,并使用 matshow 函数将其可视化。你可以将这段代码复制到 Python 环境中并运行,观察生成的矩阵图像。
相关问题
pythonimport numpy as np from sklearn.svm import SVR import matplotlib.pyplot as plt
### 使用 Python Numpy、Scikit-Learn SVR 及 Matplotlib 进行数据处理与机器学习模型训练及结果可视化
#### 数据准备
为了展示如何使用这些库,假设有一个简单的回归问题。这里先创建一些合成的数据用于说明。
```python
import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt
np.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
y = np.sin(X).ravel()
```
这段代码利用 `numpy` 创建了一组特征矩阵 `X` 和目标向量 `y`,其中加入了正弦函数产生的标签值[^1]。
#### 添加噪声到目标变量
为了让例子更贴近现实情况,在目标变量上加入了一些高斯白噪声:
```python
y[::5] += 3 * (0.5 - np.random.rand(8))
```
这一步操作使得部分样本点偏离原始曲线,模拟真实世界中的测量误差或不确定性[^2]。
#### 构建支持向量机回归模型
接下来定义三个不同核函数的支持向量回归器实例,并拟合之前生成的数据集:
```python
svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)
svr_lin = SVR(kernel='linear', C=1e3)
svr_poly = SVR(kernel='poly', C=1e3, degree=2)
# 训练模型
svrs = [svr_rbf.fit(X, y),
svr_lin.fit(X, y),
svr_poly.fit(X, y)]
```
上述过程分别初始化了径向基函数(RBF)、线性和多项式的 SVM 回归模型并进行了参数设置和训练[^3]。
#### 结果可视化
最后通过 `matplotlib` 将预测的结果绘制出来以便直观比较各个模型的表现:
```python
lw = 2
plt.figure(figsize=(16, 9))
for i, color in zip(range(len(svrs)), ['m', 'c', 'g']):
plt.plot(X, svrs[i].predict(X), color=color,
label=f'SVR with {["RBF", "Linear", "Polynomial"][i]} kernel',
lw=lw)
plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_],
facecolors='none', edgecolors='k', marker='o', s=100, label='Support vectors')
plt.scatter(X[:], y[:], facecolor='black', marker='.', alpha=.75, label='Training data')
plt.xlabel('data')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05), fancybox=True, shadow=True, ncol=3)
plt.show()
```
此段脚本不仅展示了三种不同类型内核下的 SVR 模型对于给定数据集的学习效果,还特别标记出了支持向量的位置,帮助理解 SVM 工作原理的同时也增强了图形的信息表达能力[^4]。
#https://pysource.com/2021/10/29/kalman-filter-predict-the-trajectory-of-an-object/ import cv2 import numpy as np import matplotlib.pyplot as plt class KalmanFilter: #实例属性 kf = cv2.KalmanFilter(4, 2) #其值为4,因为状态转移矩阵transitionMatrix有4个维度 #需要观测的维度为2 kf.measurementMatrix = np.array([[1, 0, 0, 0], [0, 1, 0, 0]], np.float32) #创建测量矩阵 kf.transitionMatrix = np.array([[1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 0.7, 0], [0, 0, 0, 0.7]], np.float32) #创建状态转移矩阵 # 创建一个0-99的一维矩阵 z = [i for i in range(100)] z_watch = np.mat(z) # 创建一个方差为1的高斯噪声,精确到小数点后两位 noise = np.round(np.random.normal(0, 1, 100), 2) noise_mat = np.mat(noise) # 将z的观测值和噪声相加 z_mat = z_watch + noise_mat # 定义x的初始状态,即位置和速度 x_mat = np.mat([[0, ], [0, ]]) y_mat = np.mat([[0, ], [0, ]]) def predict(self, coordX, coordY): #实例方法,自己实现一个predict ''' This function estimates the position of the object''' measured = np.array([[np.float32(coordX)], [np.float32(coordY)]]) self.kf.correct(measured) #结合观测值更新状态值,correct为卡尔曼滤波器自带函数 predicted = self.kf.predict() #调用卡尔曼滤波器自带的预测函数 x, y = int(predicted[0]), int(predicted[1]) #得到预测后的坐标值 # 绘制结果 plt.plot(measured[0], 'k+', label='Measured_x') plt.plot(x, 'b-', label='Kalman Filter_x') #plt.plot(real_state, 'g-', label='Real state') plt.legend(loc='upper left') plt.title('Kalman Filter Results') plt.xlabel('Time (s)') plt.ylabel('Position (m)') plt.show() return x, y predict(self,x_mat,y_mat)优化这段python代码,随机生成x和y并实现对x和y的输入值的预测,并画出图像,实现可视化
# 导入必要的库
import cv2
import numpy as np
import matplotlib.pyplot as plt
class KalmanFilter:
def __init__(self):
# 创建卡尔曼滤波器
self.kf = cv2.KalmanFilter(4, 2)
# 创建测量矩阵
self.kf.measurementMatrix = np.array([[1, 0, 0, 0], [0, 1, 0, 0]], np.float32)
# 创建状态转移矩阵
self.kf.transitionMatrix = np.array([[1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 0.7, 0], [0, 0, 0, 0.7]], np.float32)
# 创建过程噪声协方差矩阵
self.kf.processNoiseCov = np.array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0.5, 0], [0, 0, 0, 0.5]], np.float32)
# 定义x的初始状态,即位置和速度
self.x = np.array([[0], [0], [0], [0]], np.float32)
def predict(self, coordX, coordY):
# 将输入值转换为测量值
measured = np.array([[np.float32(coordX)], [np.float32(coordY)]])
# 预测下一时刻的状态值
self.x = self.kf.predict()
# 结合观测值更新状态值
self.x = self.kf.correct(measured)
# 得到预测后的坐标值
x, y = int(self.x[0]), int(self.x[1])
return x, y
# 创建KalmanFilter实例
kf = KalmanFilter()
# 随机生成x和y
x = np.array([i for i in range(1, 101)])
y = np.array([i for i in range(1, 101)])
# 添加随机噪声
x = x + np.random.normal(0, 10, 100)
y = y + np.random.normal(0, 10, 100)
# 预测输入值的位置
predicted_x = []
predicted_y = []
for i in range(100):
px, py = kf.predict(x[i], y[i])
predicted_x.append(px)
predicted_y.append(py)
# 绘制结果
plt.plot(x, y, 'k+', label='Measured')
plt.plot(predicted_x, predicted_y, 'b-', label='Kalman Filter')
plt.legend(loc='upper left')
plt.title('Kalman Filter Results')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
阅读全文
相关推荐















