在 scikit 学习中使用分类预测变量

Using Categorical Predictor Variables in sci-kit learn

这里是基本问题:

我正在尝试为信用卡违约实施一个简单的分类模型,我只对输入数据使用 model.fitmodel.predict。但是,该输入数据包含分类数据(如年龄、已婚或未婚、教育水平等人口统计信息)和连续数据(如信用余额)。

data.info()

<div class="output"><div class="output_area"><div class="run_this_cell"></div><div class="prompt"></div><div class="output_subarea output_text output_stream output_stdout"><pre>&lt;class 'pandas.core.frame.DataFrame'&gt;
Int64Index: 30000 entries, 1 to 30000
Data columns (total 24 columns):
LIMIT_BAL    30000 non-null float64
SEX          30000 non-null int64
EDUCATION    30000 non-null int64
MARRIAGE     30000 non-null int64
AGE          30000 non-null int64
PAY_1        30000 non-null int64
PAY_2        30000 non-null int64
PAY_3        30000 non-null int64
PAY_4        30000 non-null int64
PAY_5        30000 non-null int64
PAY_6        30000 non-null int64
BILL_AMT1    30000 non-null float64
BILL_AMT2    30000 non-null float64
BILL_AMT3    30000 non-null float64
BILL_AMT4    30000 non-null float64
BILL_AMT5    30000 non-null float64
BILL_AMT6    30000 non-null float64
PAY_AMT1     30000 non-null float64
PAY_AMT2     30000 non-null float64
PAY_AMT3     30000 non-null float64
PAY_AMT4     30000 non-null float64
PAY_AMT5     30000 non-null float64
PAY_AMT6     30000 non-null float64
default      30000 non-null int64
dtypes: float64(13), int64(11)
memory usage: 5.7 MB
</pre></div></div></div>

根据我的理解,scikit-learn 要求所有数据都是数字的和连续的,或者专门编码为分类变量。数字部分不是问题,因为我所有的数据都是用数字编码的(比如 0 表示已婚,1 表示未婚)但是我的 3 个变量(SEX、EDUCATION 和 MARRIAGE)是 nominal/ordinal 并且需要编码为分类变量而不是 int64 变量。

我如何使用 scikit-learn 的预处理模块对这 3 个变量进行编码,以将这些特征正确地输入到逻辑回归等模型中?

提前致谢,请原谅格式(随意编辑或推荐我如何正确地将 Jupyter Notebook 输出包含到 Stack Overflow post)。

分类特征在特征工程中需要更多关注,因为年龄、日期等特征很难编码。有很多方法可以通过分析、领域知识等来编码这些特征。

有一个库 category_encoders,它有很多功能可以通过使用统计来编码这些特征。您可以在这里找到更多 http://contrib.scikit-learn.org/categorical-encoding/

这里又是一个好东西resource,它会通过一个例子向你展示编码方法的使用。