【问题标题】:get_dummies(), Exception: Data must be 1-dimensionalget_dummies(),异常:数据必须是一维的
【发布时间】:2019-05-03 03:39:16
【问题描述】:

我有这个数据

我正在尝试应用这个:

one_hot = pd.get_dummies(df)

但我收到此错误:

这是我之前的代码:

# Import modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import tree
df = pd.read_csv('AllMSAData.csv')
df.head()
corr_matrix = df.corr()
corr_matrix
df.describe()
# Get featurs and targets
labels = np.array(df['CurAV'])
# Remove the labels from the features
# axis 1 refers to the columns
df = df.drop('CurAV', axis = 1)
# Saving feature names for later use
feature_list = list(df.columns)
# Convert to numpy array
df = np.array(df)

【问题讨论】:

  • 你要假人做什么?例如,您需要向它传递一个系列。
  • 我需要将分类数据更改为数值来执行随机森林

标签: python pandas numpy machine-learning


【解决方案1】:

IMO,documentation 应该更新,因为它说 pd.get_dummies 接受类似于数组的数据,而二维 numpy 数组 is 类似于数组(尽管事实上那there is no formal definition of array-like)。但是,它似乎不喜欢多维数组。

举个小例子:

>>> df
   a  b  c
0  a  1  d
1  b  2  e
2  c  3  f

你不能在底层 2D numpy 数组上得到假人:

>>> pd.get_dummies(df.values)

例外:数据必须是一维的

但是您可以在数据框本身上获得假人:

>>> pd.get_dummies(df)
   b  a_a  a_b  a_c  c_d  c_e  c_f
0  1    1    0    0    1    0    0
1  2    0    1    0    0    1    0
2  3    0    0    1    0    0    1

或者在单个列下的一维数组上:

>>> pd.get_dummies(df['a'].values)
   a  b  c
0  1  0  0
1  0  1  0
2  0  0  1

【讨论】:

  • 那么你会为我的案例推荐什么?
  • 我注意到,当我在功能和目标部分之前调用 pd.get_dummies(df) 时,我没有收到错误,但它对数据没有任何作用
  • 使用pd.get_dummies(df[['columns', 'to', 'dummify']])
  • KeyError: "['columns' 'to' 'dummify'] 不在索引中"
  • 这意味着作为一个占位符,用你想要的列替换列来愚蠢化。例如,如果您想获得StatePrev_CS_Tier 的假人,请使用pd.get_dummies(df[['State', 'Prev_CS_Tier']])
猜你喜欢
  • 1970-01-01
  • 2020-01-27
  • 2019-09-21
  • 2017-12-20
  • 2020-10-13
  • 1970-01-01
  • 2019-12-03
  • 2018-01-31
  • 1970-01-01
相关资源
最近更新 更多