python - 1D 数组映射到 2D 图,3D 数组映射到 2D 图
问题描述
我正在将 PCA 和 SVM 应用于load_digits
Sci-Kit Learn 的数据集。
这是一段代码:
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.preprocessing import scale
from sklearn.svm import SVC
X_digits, y_digits = load_digits(return_X_y=True)
data = scale(X_digits)
reduced_data = PCA(n_components=2).fit_transform(data)
clf = SVC(kernel='rbf', C=1e6)
clf.fit(reduced_data, y_digits)
在上面的代码中,reduced_data
是一个 2D numpy 数组,而 y_digits 是一个 1D numpy 数组。
但是,当我编写以下代码时,我得到了两条线的 2D 图:
plt.plot(y_digits,'o')
plt.plot(reduced_data,y_digits,'o')
我们不应该在第一行得到一个错误吗(y_digits
一维也是如此,matplotlib 不能绘制一维
图),以及第二行的 3D 图,因为有两个输入变量来自reduced_data
和一个
output
变量为y_digits
? 我对如何使用 matplotlib 和解释结果有点困惑
解决方案
我不是专家,但我相信 y_digits 数组是用 reshape(-1,1) 重塑一维数组的等效形式,因此我相信 matplotlib 将 y 解释为数组中值的位置。这就是为什么当您调用 y_digits.shape 时输出为 (1797,) 的原因,逗号表示值在列中。
如果你想要一个 3D 绘图,你应该特别称呼它:
#### Code for 3D Graph
y = y_digits
x = reduced_data[:,0] ### first column of 2D array
z = reduced_data[:,1] ### second column of 2D array
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x,y,z)
plt.show()
推荐阅读
- ios - 在 Swift 中切换到表情符号键盘时,如何停止接收 UICollectionViewFlowLayoutBreakForInvalidSizes 错误消息?
- python - 将 pdf 分成 3 页,每页 - Python PyPDF2
- node.js - 为什么 Route.post() 需要一个回调函数但得到一个 [object Object]
- excel - 当新数据从另一个工作表输入到工作表中时,如何使单元格中的数据保持静态
- xamarin.forms - 防止在基本视图更改时更改拖放阴影
- machine-learning - 我应该如何修复代码以使使用训练数据的线性回归模型正常工作?
- reactjs - 迭代哈希图以填充 ReactJS 中的 Accordion 组件
- python - 公共 VQGA 代码上的“Nonetype”对象错误是什么意思?
- javascript - 如何动态生成菜单选项
- elasticsearch - 使用 Logstash grock 过滤器解析 Syslog 不适用于 Kibana