Python 为什么熊猫得到的假人功能不也执行';枢轴';?
我有一个熊猫数据框,看起来像这样:Python 为什么熊猫得到的假人功能不也执行';枢轴';?,python,pandas,machine-learning,Python,Pandas,Machine Learning,我有一个熊猫数据框,看起来像这样: Customer Product A Table A Chair A Desk 当我在产品上运行Pandas get_dummies函数时,我得到以下结果: Customer Product_Table Product_Chair Product_Desk A 1 0
Customer Product
A Table
A Chair
A Desk
当我在产品上运行Pandas get_dummies函数时,我得到以下结果:
Customer Product_Table Product_Chair Product_Desk
A 1 0 0
A 0 1 0
A 0 0 1
就预建模而言,这是否正确?看起来我给它的客户提供了3次不同的信息。我第一次说它只有桌子,没有椅子和书桌,但事实上它们三个都有
这对模型有何影响?我的直觉告诉我,当我做这种类型的转换时,我应该只得到一行?是这样吗?如果是这样,为了消除“重复”行,我做错了什么,或者需要添加什么
下面是我使用的语法:
# Create a list of features to dummy
todummy_list = []
for col_name in sdf.columns:
if sdf[col_name].dtypes == 'object' and (col_name != 'Customer' ):
todummy_list.append(col_name)
print(todummy_list)
# Function to dummy all the categorical variables used for modeling
def dummy_df(df, todummy_list):
for x in todummy_list:
dummies = pd.get_dummies(sdf[x], prefix=x, dummy_na=False)
df = df.drop(x, 1)
df = pd.concat([df, dummies], axis=1)
return df
sdf = dummy_df(sdf, todummy_list)
print(sdf.head(5))
要消除“重复行”,只需使用:
您创建的列表为空。您需要将其填满,例如:
todummy_list = ['age','sex','working-class']
你想用get_假人实现什么?该功能的目的是将列绑定到列,而不是将列绑定到单个客户。您是否正在尝试执行
groupby('customer').count()
?我正在尝试将分类数据转换为数字以用作功能。当我刚刚尝试这个(我是ML新手)时,我希望模型只使用一行新的二进制列,而不是3行。所以我想我不确定我是否需要分组,或者模型是否适合3行?简单地说,你不应该像现在这样对数据进行热编码。根据我对您的数据的理解(无可否认,这并不多),在进入这一步之前,您需要做更多的特性工程。如果所有类型的家具都绑定到一个记录,那么您的列应该更像customer | ordered | u table?| ordered | u chair?| ordered | u desk?| | | | | | | | | | | | | | | | | | | | | | | | | |!不知道我为什么这么难,但是如果我不断地向它提供关于同一个客户的矛盾信息,那么no模型将非常有效。我还意识到,我可以聚合虚拟数据帧,为每个客户提供一行数据。一个枢轴将包括一个聚合,不是吗?此外,真正的pivot将聚合值,而getdummies只提供二进制表示。在特定示例中,getdummies+aggregate的输出可能与pivot相同,但它们做的事情不同,不能互换。
todummy_list = ['age','sex','working-class']