我收到错误消息: ValueError: Wrong number of items passed 3, placement implies 1
,并且我正在努力找出可能在哪里以及如何开始解决该问题。
我不太了解错误的含义;这使我很难进行故障排除。我还在Jupyter Notebook中包含了触发错误的代码块。
数据很难附加。因此,我不需要任何人尝试为我重新创建此错误。我只是在寻找有关如何解决此错误的反馈。
KeyError Traceback (most recent call last)
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\indexes\base.py in get_loc(self, key, method, tolerance)
1944 try:
-> 1945 return self._engine.get_loc(key)
1946 except KeyError:
pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4154)()
pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4018)()
pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368)()
pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322)()
KeyError: 'predictedY'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\internals.py in set(self, item, value, check)
3414 try:
-> 3415 loc = self.items.get_loc(item)
3416 except KeyError:
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\indexes\base.py in get_loc(self, key, method, tolerance)
1946 except KeyError:
-> 1947 return self._engine.get_loc(self._maybe_cast_indexer(key))
1948
pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4154)()
pandas\index.pyx in pandas.index.IndexEngine.get_loc (pandas\index.c:4018)()
pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12368)()
pandas\hashtable.pyx in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12322)()
KeyError: 'predictedY'
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-95-476dc59cd7fa> in <module>()
26 return gp, results
27
---> 28 gp_dailyElectricity, results_dailyElectricity = predictAll(3, 0.04, trainX_dailyElectricity, trainY_dailyElectricity, testX_dailyElectricity, testY_dailyElectricity, testSet_dailyElectricity, 'Daily Electricity')
<ipython-input-95-476dc59cd7fa> in predictAll(theta, nugget, trainX, trainY, testX, testY, testSet, title)
8
9 results = testSet.copy()
---> 10 results['predictedY'] = predictedY
11 results['sigma'] = sigma
12
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py in __setitem__(self, key, value)
2355 else:
2356 # set column
-> 2357 self._set_item(key, value)
2358
2359 def _setitem_slice(self, key, value):
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\frame.py in _set_item(self, key, value)
2422 self._ensure_valid_index(value)
2423 value = self._sanitize_column(key, value)
-> 2424 NDFrame._set_item(self, key, value)
2425
2426 # check if we are modifying a copy
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\generic.py in _set_item(self, key, value)
1462
1463 def _set_item(self, key, value):
-> 1464 self._data.set(key, value)
1465 self._clear_item_cache()
1466
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\internals.py in set(self, item, value, check)
3416 except KeyError:
3417 # This item wasn't present, just insert at end
-> 3418 self.insert(len(self.items), item, value)
3419 return
3420
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\internals.py in insert(self, loc, item, value, allow_duplicates)
3517
3518 block = make_block(values=value, ndim=self.ndim,
-> 3519 placement=slice(loc, loc + 1))
3520
3521 for blkno, count in _fast_count_smallints(self._blknos[loc:]):
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\internals.py in make_block(values, placement, klass, ndim, dtype, fastpath)
2516 placement=placement, dtype=dtype)
2517
-> 2518 return klass(values, ndim=ndim, fastpath=fastpath, placement=placement)
2519
2520 # TODO: flexible with index=None and/or items=None
C:\Users\brennn1\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\internals.py in __init__(self, values, placement, ndim, fastpath)
88 raise ValueError('Wrong number of items passed %d, placement '
89 'implies %d' % (len(self.values),
---> 90 len(self.mgr_locs)))
91
92 @property
ValueError: Wrong number of items passed 3, placement implies 1
我的代码如下:
def predictAll(theta, nugget, trainX, trainY, testX, testY, testSet, title):
gp = gaussian_process.GaussianProcess(theta0=theta, nugget =nugget)
gp.fit(trainX, trainY)
predictedY, MSE = gp.predict(testX, eval_MSE = True)
sigma = np.sqrt(MSE)
results = testSet.copy()
results['predictedY'] = predictedY
results['sigma'] = sigma
print ("Train score R2:", gp.score(trainX, trainY))
print ("Test score R2:", sklearn.metrics.r2_score(testY, predictedY))
plt.figure(figsize = (9,8))
plt.scatter(testY, predictedY)
plt.plot([min(testY), max(testY)], [min(testY), max(testY)], 'r')
plt.xlim([min(testY), max(testY)])
plt.ylim([min(testY), max(testY)])
plt.title('Predicted vs. observed: ' + title)
plt.xlabel('Observed')
plt.ylabel('Predicted')
plt.show()
return gp, results
gp_dailyElectricity, results_dailyElectricity = predictAll(3, 0.04, trainX_dailyElectricity, trainY_dailyElectricity, testX_dailyElectricity, testY_dailyElectricity, testSet_dailyElectricity, 'Daily Electricity')
通常,该错误ValueError: Wrong number of items passed 3, placement implies 1
表明您正在尝试将过多的鸽子放到过少的鸽子洞中。在这种情况下,等式右边的值
results['predictedY'] = predictedY
正在尝试将3个“事物”放入只能容纳一个的容器中。由于左侧是数据框列,并且可以在该(列)维度上接受多个项目,因此您应该看到另一个维度上的项目太多。
在这里,看来您正在使用sklearn进行建模,这是从哪里来的gaussian_process.GaussianProcess()
(我想是,但请纠正我,如果这是错误的,请修改问题)。
现在,您在这里生成 y的 预测值:
predictedY, MSE = gp.predict(testX, eval_MSE = True)
但是,正如我们从GaussianProcess的文档中看到的那样,它predict()
返回两个项目。第一个是
y ,它 像数组 (强调我的)。这意味着它可以具有多个维度,或者,对于像我这样的头脑笨拙的人而言,它可以具有多个列-
请注意,它可以返回(n_samples, n_targets)
,取决于testX
(可能是(1000, 3)
选择数字)
。因此,您predictedY
可能有3列。
如果是这样,当您尝试将带有三个“列”的内容放入单个数据框列时,您将传递3个项目,其中只有1个适合。
问题内容: 我只是从“ 使用Python进行工程中的数值方法”中 测试一个示例。 当我运行它时,它显示以下错误: 我将其范围缩小到了日志,因为当我删除日志并添加其他功能时,它可以工作。我认为这是由于对底座的某种干扰,我不知道怎么做。谁能提出解决方案? 问题答案: 您的代码执行的a小于或等于零。从数学上来说这是未定义的,因此Python的函数会引发异常。这是一个例子: 不知道函数的作用,我不确定是否
我运行的是Mac OSX,我安装了android Studio-它启动正常。 问题1 我用一个空活动开始一个新项目。在最上面的窗户上我收到一条信息 问题2 我在底部窗口中看到以下错误: 错误:CompilesDKVersion android-L需要使用JDK 7 Open SDK Settings进行编译 打开文件 当我尝试在设备上运行项目时,我得到以下错误: 失败[INSTALL_FAILED
创建一个新的android项目后,Eclipse会自动创建一个“appcompat_v7”项目,在/src下没有任何文件。但它显示了样式错误。下一行是styles.xml中的第18行。 样式名称=“Widget.MediaRouter.MediaRouteButton” 父=“Widget.AppCompat.ActionButton” 我不知道Eclipse如何或为什么创建这个项目。 我是And
问题内容: 我正在为EJB编写一个客户端,并且在尝试执行该客户端时,出现以下异常: :需要在环境或系统属性中或作为applet参数或在应用程序资源文件中指定类名称。 我只是不明白问题是什么。 问题答案: 该javax.naming软件包包括JNDI API。由于它只是一个API,而不是一个实现,因此你需要告诉它要使用哪个JNDI实现。这些实现通常特定于你要与之对话的服务器。 要指定实现,请在构造时
这里变量x(在主)的值是6,这是正确的,但当我写同样的事情在system.out.println== 当我尝试在print语句中放入x时,它工作得很好。但我想知道它给出错误的原因。 错误:
问题内容: 我正在尝试使用scipy的optimizer.minimize函数,但无法找出将args传递给目标函数的确切方法。我有以下代码,根据我的说法应该可以正常工作,但在参数数量上却给我错误。 这是目标函数的函数签名: 是具有51个键值对的字典。 这给出了以下错误: 有人可以帮我解决这个问题。 问题答案: 更改为,将包含单个元素的元组更改为。 等价于。执行此操作时,的每个元素将作为单独的参数传