【发布时间】:2018-05-25 16:33:15
【问题描述】:
我正在为线性回归准备定价数据。我的特征只包含一周中的几天。我的目标是价格。我已经为我的数据制作了一个字典列表,就像sklearn 4.2.1 从字典中加载功能中的示例一样。所以数据结构是[{'day': 'friday', 'price': 59}, {'day': 'saturday', 'price': 65}等等。
我根据上述链接使用 sklearn 的 DictVectorizer 对星期几进行虚拟编码,并将数据结构转换为列表列表(适用于 sklearn LinearRegression)。
vec = DictVectorizer()
vec_fit = vec.fit_transform(my_data).toarray()
当我打印 vec_fit 来查看数据时,我得到下面的输出。
[[ 0. 0. 0. ..., 0. 1. 59.]
[ 0. 0. 0. ..., 0. 0. 92.]
[ 1. 0. 0. ..., 0. 0. 92.]
...,
[ 0. 0. 1. ..., 0. 0. 181.]
[ 0. 0. 0. ..., 0. 0. 181.]
[ 0. 1. 0. ..., 0. 0. 181.]]
有人可以解释 (a) ..., 和 (b) 为什么一周中的几天没有 7 个虚拟变量?在我的示例中,..., 似乎涵盖了周日和周四。
为了检查我的功能(每个 sklearn 4.2.1),我使用了 get_feature_names 函数。
vec.get_feature_names()
[u'day=Friday', u'day=Monday', u'day=Saturday', u'day=Sunday',
u'day=Thursday', u'day=Tuesday', u'day=Wednesday', 'price']
从输出中可以看出,所有的日子似乎都被恰当地表示了。我仍然对上面的(a)和(b)感到困惑。仅供参考,当我执行 LinearRegression 时,我只得到 6 个系数(我期望 7 个;一周中的每一天一个)谢谢。
【问题讨论】:
标签: python numpy scikit-learn dictvectorizer