线性回归分析中包含字符串/分类特征(变量)?

回归算法似乎只能处理以数字表示的特征。例如:

不含分类特征的简单数据

这个数据集不包含分类特征/变量。很明显如何在这个数据上进行回归并预测价格。


但现在我想对包含分类特征的数据进行回归分析:

包含分类特征的数据集

5个特征:DistrictConditionMaterialSecurityType


我如何在这个数据上进行回归?我是否必须手动将所有字符串/分类数据转换为数字?我是说我是否需要创建一些编码规则,并根据这些规则将所有数据转换为数值。

有没有简单的方法可以将字符串数据转换为数字,而不必手动创建自己的编码规则?也许有Python中的一些库可以用来做这个?是否存在由于“错误编码”导致回归模型不正确的风险?


回答:

是的,你需要将所有数据转换为数字。这需要考虑这些属性代表什么。

通常有三种可能性:

  1. 分类数据的一热编码
  2. 序数数据的任意数字
  3. 使用分类数据的组均值(例如,城市区域的平均价格)。

你必须小心不要引入在应用案例中没有的信息。

一热编码

如果你有分类数据,你可以为每个可能的值创建0/1值的虚拟变量。

例如:

idx color0   blue1   green2   green3   red

转换为

idx blue green red0   1    0     01   0    1     02   0    1     03   0    0     1

这可以很容易地使用pandas完成:

import pandas as pddata = pd.DataFrame({'color': ['blue', 'green', 'green', 'red']})print(pd.get_dummies(data))

结果将是:

   color_blue  color_green  color_red0           1            0          01           0            1          02           0            1          03           0            0          1

序数数据的数字

创建一个可排序类别的映射,例如旧 < 翻新 < 新 → 0, 1, 2

这也可以使用pandas完成:

data = pd.DataFrame({'q': ['old', 'new', 'new', 'ren']})data['q'] = data['q'].astype('category')data['q'] = data['q'].cat.reorder_categories(['old', 'ren', 'new'], ordered=True)data['q'] = data['q'].cat.codesprint(data['q'])

结果:

0    01    22    23    1Name: q, dtype: int8

使用分类数据进行分组操作

你可以使用每个类别的过去(已知事件)的平均值。

假设你有一个包含城市最后已知平均价格的DataFrame:

prices = pd.DataFrame({    'city': ['A', 'A', 'A', 'B', 'B', 'C'],    'price': [1, 1, 1, 2, 2, 3],})mean_price = prices.groupby('city').mean()data = pd.DataFrame({'city': ['A', 'B', 'C', 'A', 'B', 'A']})print(data.merge(mean_price, on='city', how='left'))

结果:

  city  price0    A      11    B      22    C      33    A      14    B      25    A      1

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注