【发布时间】:2017-03-30 20:49:33
【问题描述】:
我试图模仿这个非常简单的例子
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2 # 0 to 15 point radiuses
print(type(x),type(y))
print('training samples ',len(x),len(y))
plt.scatter(x, y, c=colors, alpha=0.5)
plt.show()
这表明
<class 'numpy.ndarray'> <class 'numpy.ndarray'>
training samples 50 50
正如预期的那样,情节也出现了。现在我正在尝试将GradientBoostingRegressor 的结果绘制为
base_regressor = GradientBoostingRegressor()
base_regressor.fit(X_train, y_train)
y_pred_base = base_regressor.predict(X_test)
print(type(X_train),type(y_train))
print('training samples ',len(X_train),len(y_train))
print(type(X_test),type(y_pred_base))
print('base samples ',len(X_test),len(y_pred_base))
plt.figure()
plt.scatter(X_train, y_train, c="k", label="training samples")
plt.plot(X_test, y_pred_base, c="g", label="n_estimators=1", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Base Regression")
plt.legend()
plt.show()
请注意,X_train、y_train 和 X_test 都是 numpy 数组。对于上面的代码,我得到了
<class 'numpy.ndarray'> <class 'numpy.ndarray'>
training samples 74067 74067
<class 'numpy.ndarray'> <class 'numpy.ndarray'>
base samples 166693 166693
但情节没有显示出来,我得到了错误
ValueError: x and y must be the same size
在
plt.scatter(X_train, y_train, c="k", label="training samples")
但从输出中可以看出,x 和 y 具有相同的大小和类型。我做错了什么?
【问题讨论】:
-
而不是打印
len(X_test)你能打印X_test.shape吗? -
感谢您的建议,现在我收到了
training samples (74067, 163) (74067,)和base samples (166693, 163) (166693,) -
这对于我的训练维度来说是有意义的,我有 163 列
-
我想我的意思是,我如何将
y_train与X_train和y_pred_base与X_test进行对比? -
那么,您的训练数据是如何组织的?您说 X_train 和 y_train 是二维数组,那么您希望如何绘制它们?
plt.scatter将在二维图上绘制一维 y 数组与一维 x 数组。
标签: python numpy matplotlib scikit-learn