【问题标题】:Use get_dummies in categorical data在分类数据中使用 get_dummies
【发布时间】:2020-06-11 23:39:02
【问题描述】:

我必须使用数据集,然后使用决策树分类器,因为我不能有分类数据,但是这个数据集有这样的分类数据列:

我知道可以使用 get_dummies 函数来完成,但我做不到。 我首先阅读了这样的数据集:

def load_data(fname):
    """Load CSV file"""
    df = pd.read_csv(fname)
    nc = df.shape[1]
    matrix = df.values
    table_X = matrix [:, 2:]
    table_y = matrix [:, 81]
    features_names = df.columns.values[1:]
    target = df.columns.values[81]
    return table_X, table_y

table_X, table_y = load_data("dataset.csv")

pd.get_dummies(table_X)

当我运行它时,我得到了这个异常:Exception: Data must be 1-dimensional

我做错了什么?

------------------- 编辑 --------------- ---------------------

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
y = le.fit_transform(table_y)
le.classes_

le.transform(['<200000', '>400000', '[200000,400000]'])

应用决策树算法:

from sklearn import tree

dtc_Gini = tree.DecisionTreeClassifier() #criterion='gini'
dtc_Gini1 = dtc_Gini.fit(table_X, y)

ValueError: could not convert string to float: 'RL'

【问题讨论】:

    标签: python pandas one-hot-encoding


    【解决方案1】:

    基于这个答案:get_dummies(), Exception: Data must be 1-dimensional 在应用函数get_dummies() 之前,您似乎必须将table_X 转换回数据帧。或者你可以避免使用df.values

    试试这个:

    def load_data(fname):
        """Load CSV file"""
        df = pd.read_csv(fname)
        table_X = df.iloc[:, 2:]
        table_y = df.iloc[:, 81]
        return table_X, table_y
    
    table_X, table_y = load_data("dataset.csv")
    
    pd.get_dummies(table_X)
    

    如果它有效,请告诉我。

    【讨论】:

    • 它有效,至少当我运行“pd.get_dummies(table_X)”时我得到一个表虽然当我尝试运行决策树算法时我仍然得到一个错误
    • 我已经编辑了问题并添加了决策树部分
    • 您得到的错误可能与 table_x 中不浮动的值有关(其中仍有字符串)。使用table_x.dtypes 进行检查
    • 如何更改列类型?
    • 要应用决策树算法,我需要取出所有 NaN、无穷大或对于 dtype(float32) 而言太大的值,因为我将 get_dummies 应用于 table_X 并出现此错误:´ValueError: Input contains NaN、无穷大或对于 dtype('float32') 而言太大的值。'
    【解决方案2】:

    pd.read_csv 之后使用pd.get_dummies(df)

    【讨论】:

    • 问题是,我不想将其应用于所有数据集
    • 我有一列具有分类数值,我想将其转换为字符串,然后我有应该保持原样的序数列,并使用索引映射对其进行转换。最后使用 get dummies
    • 哦,然后使用:data = pd.get_dummies(data , columns = [""])
    猜你喜欢
    • 2020-02-24
    • 1970-01-01
    • 2018-11-10
    • 2020-05-05
    • 2020-10-25
    • 1970-01-01
    • 2019-08-30
    • 2020-07-22
    • 2017-05-12
    相关资源
    最近更新 更多