我正在将PCA和SVM应用于Sci-Kit Learn的load_digits
数据集。
这是一段代码:
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数组。
但是,当我编写以下代码时,我得到了两行的二维图:
plt.plot(y_digits,'o')
plt.plot(reduced_data,y_digits,'o')
第一行不会出现错误(因为y_digits
是1D,而matplotlib无法绘制1D
曲线),以及第二行的3D图,因为有reduced_data
和两个输入变量
output
的变量y_digits
?我对应该如何使用matplotlib和解释结果感到困惑
答案 0 :(得分:0)
我不是专家,但是我相信y_digits数组的等效形式是使用reshape(-1,1)重塑一维数组,因此我相信matplotlib会从值的位置解释ay。数组。这就是为什么当您调用y_digits.shape时输出为(1797,)逗号表示值在列中的原因。
如果您想要3D图,则应特别称呼它:
nodes