发布网友 发布时间:2022-10-13 17:49
共1个回答
热心网友 时间:2023-11-07 11:31
需要同时对包含训练数据和测试数据的数据框调用 get_mmies ,可以确保训练集和测试集中分类变量的表示方式相同。
使用 scikit-learn 的 OnehotEncoder,指定哪些变量是连续的,哪些变量是离散的。也可以将数据框中的数值列转换为字符串。
特征分箱将其划分为多个特征,可以让线性模型在连续的数据上更强大。
对于特定的数据集,如果有充分的理由使用线性模型——比如数据集很大,维度很高,但有些特征与输出关系是非线性的——那么分箱是提高建模能力的好方法。
加入原始特征:只有一个 x 特征,所以只有一个斜率。因为斜率在所有箱子中是相同的,所以它似乎不是很有用
添加交互特征或乘积特征,用来表示数据点所在箱子以及数据点在 x 轴上的位置。这个特征是箱子指示符与原始特征的乘积。
波士顿房价数据集
大部分模型都在每个特征大致遵循高斯分布时表现最好,也就是说,每个特征的直方图应该具有类似于熟悉的“钟形曲线”的形状。
处理整数计数数据时,计数数据指类似“用户 A 多长时间登陆一次”,计数不可能取负值,并且遵循特定的统计模式。
数据分布的不对称性变小,也不再有非常大的异常值
如何判断每个特征的作用有多大:
计算每个特征和目标值之间的关系是否存在统计显著性,然后选择具有最高置信度的特征。
对分类问题通常是 f_classif (默认值),对回归问题通常是 f_regressioni,然后基于测试中确定的 p 值来选择一种舍弃特征的方法。
用于特征选择的监督模型不需要与用于最终监督建模的模型相同,特征选择模型需要为每个特征提供某种重要性度量,以便用这个度量对特征进行排序。
决策树和基于决策树的模型提供了 feature_importances_ 属性,可以直接编码每个特征的重要性。线性模型系数的绝对值也可以用于表示特征重要性。
在迭代特征选择中,将会构建一系列模型,每个模型都使用不同数量的特征。
递归特征消除(RFE):从所有特征开始构建模型,并根据模型舍弃最不重要的特征,然后使用除舍弃特征之外的所有特征来构建一个新模型,如此继续,指导剩下预设数量的特征。
1、使用 POSIX 时间特征和随机森林组合,效果不佳,其原因是测试集 POSIX 时间特征的值超出了训练集特征取值的范围。树以及随机森林无法外推到训练集之外的特征范围。
2、使用一天内的时间和一周的星期几
3、使用线性模型预测,我们用整数编码一周的星期几和一天内的时间,被解释为连续变量。因此需要使用 OneHotEncoder 编码,解释为分类变量,使用 PolynomialFeatures 进行特征组合,让模型为星期几和时刻的每一种组合学到一个系数。