Python 使用sklearn DictVectorizer为一周中的几天生成虚拟变量
我正在准备线性回归的定价数据。我的特征只包括一周中的几天。我的目标是价格。我已经列出了我的数据字典,就像从dicts加载特性中的示例一样。因此,数据结构是Python 使用sklearn DictVectorizer为一周中的几天生成虚拟变量,python,numpy,scikit-learn,dictvectorizer,Python,Numpy,Scikit Learn,Dictvectorizer,我正在准备线性回归的定价数据。我的特征只包括一周中的几天。我的目标是价格。我已经列出了我的数据字典,就像从dicts加载特性中的示例一样。因此,数据结构是[{'day':'friday','price':59},{'day':'saturday','price':65}等等 我在上面的链接中使用了sklearn的DictVectorizer对一周中的几天进行虚拟编码,并将数据结构转换为列表列表(适用于sklearn LinearRegression) 当我打印vec_fit以查看数据时,我得到以
[{'day':'friday','price':59},{'day':'saturday','price':65}
等等
我在上面的链接中使用了sklearn的DictVectorizer对一周中的几天进行虚拟编码,并将数据结构转换为列表列表(适用于sklearn LinearRegression)
当我打印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\u feature\u 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)感到困惑。仅供参考,当我进行
线性回归时,我只得到6个系数(我预计7个;一周中的每一天一个)谢谢。它们在那里,只是在打印vec_-fit
时不显示。这是numpy在打印大型数组时的默认行为。仅显示数据的前3列和后3列以及前3行和后3行
[[ 0. 0. 0. ..., 0. 1. 59.]
[ 0. 0. 0. ..., 0. 0. 92.]
[ 1. 0. 0. ..., 0. 0. 92.]
..., <=== This is for all intermediate data values present. Just not printed
[ 0. 0. 1. ..., 0. 0. 181.]
[ 0. 0. 0. ..., 0. 0. 181.]
[ 0. 1. 0. ..., 0. 0. 181.]]
它应该是(n行,8)
。第一个值(n行
)覆盖所有样本。第二个值(8
)覆盖7个虚拟变量和1个目标变量
如果要打印完整阵列,请查看以下问题:
它们在那里,只是在打印vec_fit
时没有显示。这是numpy在打印大型阵列时的默认行为。仅显示数据的前3列和后3列以及前3行和后3行
[[ 0. 0. 0. ..., 0. 1. 59.]
[ 0. 0. 0. ..., 0. 0. 92.]
[ 1. 0. 0. ..., 0. 0. 92.]
..., <=== This is for all intermediate data values present. Just not printed
[ 0. 0. 1. ..., 0. 0. 181.]
[ 0. 0. 0. ..., 0. 0. 181.]
[ 0. 1. 0. ..., 0. 0. 181.]]
它应该是(n行,8)
。第一个值(n行
)覆盖所有样本。第二个值(8
)覆盖7个虚拟变量和1个目标变量
如果要打印完整阵列,请查看以下问题:
回答得很好Vivek:)谢谢!发帖后,我突然想到了这个想法。但后来我制作了一个包含10个功能的测试文件,当我打印出来时,没有,所有10个功能都得到了0或1,
@vintagedeek你为testI制作了列表或numpy数组吗?我使用了sklearn 4.2.1中的测量示例。这是一个字典列表,它是每个字典都有一个城市和温度键。我添加了城市,总共有10个城市。然后我使用DictVectorizer
创建了一个numpy数组。基本上与我对定价数据所做的相同。功能中的…,
似乎是由数组的总长度决定的。我认为数组的总长度只导致了你在回答中突出显示的,
。
。回答很好Vivek:)谢谢!发帖后,我突然想到了这个想法。但后来我制作了一个包含10个特性的测试文件,当我打印时,没有,所有10个都得到了0或1,
@vintagedeek你有没有制作列表或numpy数组的列表对于testI,我使用了sklearn 4.2.1中的测量示例。这是一个字典列表,其中每个字典都有一个城市和温度键。我添加了城市,总共有10个城市。然后我使用了DictVectorizer
并制作了一个numpy数组。基本上与我对定价数据所做的相同。似乎…,
的hin正如你所说,这些功能是由数组的总长度产生的。我认为数组的总长度只会导致你在回答中突出显示的…,
。
print(vec_fit.shape)