当前位置: 首页 > 知识库问答 >
问题:

SKF数据帧映射器:映射器。fit_变换给出值错误:输入形状错误(8,2)

阎元徽
2023-03-14

我能够复制Github repo中给出的示例。然而,当我在自己的数据上尝试时,我得到了ValueError。

下面是一个虚拟数据,它给出了与我的真实数据相同的错误。

import pandas as pd
import numpy as np
from sklearn_pandas import DataFrameMapper
from sklearn.preprocessing import LabelEncoder, StandardScaler, MinMaxScaler

data = pd.DataFrame({'pet':['cat', 'dog', 'dog', 'fish', 'cat', 'dog','cat','fish'], 'children': [4., 6, 3, 3, 2, 3, 5, 4], 'salary':   [90, 24, 44, 27, 32, 59, 36, 27], 'feat4': ['linear', 'circle', 'linear', 'linear', 'linear', 'circle', 'circle', 'linear']})

mapper = DataFrameMapper([
    (['pet', 'feat4'], LabelEncoder()),
    (['children', 'salary'], [StandardScaler(),
                              MinMaxScaler()])
]) 

np.round(mapper.fit_transform(data.copy()),2)

下面是错误

()中的ValueError回溯(最近一次调用)----

C:\Users\E245713\AppData\Local\Continuum\Anaconda3\lib\site packages\sklearn\base。拟合变换中的py(self,X,y,**fit_参数)453如果y为None:454算术1的拟合方法(无监督变换)--

C:\Users\E245713\AppData\Local\Continuum\Anaconda3\lib\site packages\sklearn\u pandas\dataframe\u mapper。py in fit(self,X,y)95用于柱,变压器in self。特征:96如果变压器不是无:---

C:\Users\E245713\AppData\Local\Continuum\Anaconda3\lib\site packages\sklearn\preprocessing\label。拟合中的py(self,y)106 self:返回self的实例。107 """ --

C:\用户\E245713\AppData\本地\连续\Anaconda3\lib\site-包\skLearning\utils\validation.py在column_or_1d(y,警告)549返回np.ravel(y)550-

输入形状错误(8,2)

有人能帮忙吗?

谢谢

共有1个答案

晁国发
2023-03-14

如果转换确实需要多个输入(例如文档中的sklearn.decomposition.PCA(1)),则只应向转换提交多个数组。在您的情况下,错误最终来自以下行:

(['pet', 'feat4'], LabelEncoder()),

即使这样也不行:

(['pet', 'feat4'], [LabelEncoder(), LabelEncoder()]),

相反,你必须做这样的事情:

mapper_good = DataFrameMapper([
(['pet'], LabelEncoder()),
(['feat4'], LabelEncoder()),
(['children'],  StandardScaler()),
(['salary'],    MinMaxScaler())
])

np.round(mapper_good.fit_transform(data.copy()),2)
 类似资料:
  • 我有两个需要映射的继承层次结构。一个层次结构是国内的,另一个是野生的。我有抽象的Domestic动物和具体的DomesticCat和DomesticDog扩展它。在第二个层次结构中,我有抽象的Wild动物和具体的WildCat和WildDog扩展它。我还有另外两个类,分别是WildAnimalFeeder具有Wild动物的成员对象和DomesticAnimalFeeder具有DomesticAni

  • 我有两个表,asdf和qwer,两个表都有一个名为“id”的主键。当我连接这两个表时,结果将有两个名为id的列,而JOOQ无法将记录正确映射到pojo。 现在,每个Asdf实例都与元组中对应的Qwer实例具有相同的id。 有没有聪明的别名技巧可以解决这个问题,或者我在JOOQ文档中遗漏了什么,或者这是JOOQ中的一个bug?

  • 我试图按照headfirst jsp和servlets的书,我遇到了以下错误。HTTP状态404 - /Beer/form.html 我的文件夹组织如下 假猫- 同样在啤酒文件夹中,我还有另一个文件夹 WEB-INF,其中包含 web.xml 文件。 首先我想也许我的雄猫根本不起作用,所以我使用我以前完成的 servlet 对其进行了测试。成功了。 我重新启动了web服务器,但仍然出现此错误。我正

  • 我有2个数据库表。First在其中有交易。每个交易都有一个ID。这个ID也在我的第二个表中找到。第二个表包含收费,但我的第一个表没有有关收费的信息。现在我必须通过冬眠映射获得连接到1个交易的所有费用,但我不想有它在两个方向。 贸易类:

  • 我刚开始冬眠。写一个复合字体。当我运行代码时,我得到一个错误。所有物 映射的列数错误:请帮助我缺少什么? 我的组合类型如下 我的域类股票有五个属性。(股票ID、股票代码、股票名称、状态、股票描述) 我需要声明字段股票描述为复合字段类型。 } 当我尝试执行股票插入时。我得到的错误错误创建bean与名称 在类路径资源[spring/config/./database/Hibernate.xml]中定义

  • 我得到这个错误: 14/12/10 18:11:01 INFO Mapred.JobClient:任务Id:Attest_201412100143_0008_M_000000_0,状态:失败java.io.ioException:溢出在org.apache.hadoop.mapred.maptask$MapOutputBuffer.Collect(maptask.java:425)在wordcou