有人可以解释这一行: Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])
Can someone explain this line: Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])
我一直在调整 this example 以使用 20 个功能,而不是 2 个。我已经完成了大部分工作,但它在这一行给我一个错误:
Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])
predict_proba 的 documentation 只是讨论 x 的输入,而不是 x 和 y,此外我们还有 ravel() 在这里进行。所以想知道发生了什么事?我遇到的错误发生在它尝试进行连接时:
338 res = _nx.concatenate(tuple(objs), axis=self.axis)
339 return self._retval(res)
340
ValueError: all the input array dimensions except for the concatenation axis must match exactly
但我已经检查过我的 xx(测试输入)和 yy(测试标签)中的行数相同。
这个例子似乎工作正常。
关键是这一行:y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
。
说明这里的yy并不是你想象的和label有关,而是二次元。因此,连接代码只是简单地创建一个包含所有特征的网格,然后将其输入模型以形成预测。
更详细:
您可以逐行查看代码,看看会发生什么。
之前
Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])
如果将 np.c_[xx.ravel(), yy.ravel()]
存储在名称为 vrb
的变量中
vrb = np.c_[xx.ravel(), yy.ravel()]
那你就可以看看是什么了
vrb.shape
vrb
结果:
(61600L, 2L)
array([[ 3.3 , 1. ],
[ 3.32, 1. ],
[ 3.34, 1. ],
...,
[ 8.84, 5.38],
[ 8.86, 5.38],
[ 8.88, 5.38]])
这意味着 np.c_[xx.ravel(), yy.ravel()]
的结果是一个包含 61600 行(样本)和 2 个特征(列)的数组。
使用 clf.predict_proba(vrb)
预测这些样本的标签。
矩阵 "vrb" 必须与您用于分类器拟合(训练阶段)的矩阵具有相同的 "second dimension"(列数)。
要测试此用途:
X.shape
结果是:
(150L, 2L)
你可以清楚地看到训练数据(X)有2列(特征)。
如果您上传代码和数据,我可以提供更多帮助。
我一直在调整 this example 以使用 20 个功能,而不是 2 个。我已经完成了大部分工作,但它在这一行给我一个错误:
Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])
predict_proba 的 documentation 只是讨论 x 的输入,而不是 x 和 y,此外我们还有 ravel() 在这里进行。所以想知道发生了什么事?我遇到的错误发生在它尝试进行连接时:
338 res = _nx.concatenate(tuple(objs), axis=self.axis)
339 return self._retval(res)
340
ValueError: all the input array dimensions except for the concatenation axis must match exactly
但我已经检查过我的 xx(测试输入)和 yy(测试标签)中的行数相同。
这个例子似乎工作正常。
关键是这一行:y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
。
说明这里的yy并不是你想象的和label有关,而是二次元。因此,连接代码只是简单地创建一个包含所有特征的网格,然后将其输入模型以形成预测。
更详细:
您可以逐行查看代码,看看会发生什么。
之前
Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])
如果将 np.c_[xx.ravel(), yy.ravel()]
存储在名称为 vrb
vrb = np.c_[xx.ravel(), yy.ravel()]
那你就可以看看是什么了
vrb.shape
vrb
结果:
(61600L, 2L)
array([[ 3.3 , 1. ],
[ 3.32, 1. ],
[ 3.34, 1. ],
...,
[ 8.84, 5.38],
[ 8.86, 5.38],
[ 8.88, 5.38]])
这意味着 np.c_[xx.ravel(), yy.ravel()]
的结果是一个包含 61600 行(样本)和 2 个特征(列)的数组。
使用 clf.predict_proba(vrb)
预测这些样本的标签。
矩阵 "vrb" 必须与您用于分类器拟合(训练阶段)的矩阵具有相同的 "second dimension"(列数)。
要测试此用途:
X.shape
结果是:
(150L, 2L)
你可以清楚地看到训练数据(X)有2列(特征)。
如果您上传代码和数据,我可以提供更多帮助。