Scikit学习变量偏差

时间:2014-12-12 03:50:53

标签: python machine-learning scikit-learn

我正在使用Scikit对一组非常大的数据进行预测。数据非常宽,但不是很长,所以我想为数据部分设置一些权重。如果我知道数据的某些部分比其他部分更重要,我应该如何通知SCikit,或者它是否有点打破整个机器学习方法来做一些预教学。

2 个答案:

答案 0 :(得分:1)

这可能取决于你正在使用的机器学习算法 - 许多人会发现自己的特征重要性(通过随机森林中的feature_importances_属性和其他人详细阐述)。

如果您正在使用基于距离的度量(例如k-means,knn),您可以通过相应地缩放每个要素的值来手动对权重进行加权(尽管可能的scikit会进行一些规范化...)。

或者,如果您知道某些功能确实没有提供太多信息,您可以简单地消除这些功能,但是这些功能可能会意外地失去任何诊断价值。 feature selection的scikit中有一些工具可能有助于做出这种判断。

答案 1 :(得分:1)

最简单的方法是在数据矩阵X上使用Principal Component Analysis。主矢量构成X的正交基,它们各自是原始特征空间的线性组合(通常是列) X.分解使得每个主要向量具有相应的特征值(或取决于您如何计算PCA的奇异值)标量,该标量反映了可以仅基于该主要向量单独进行多少重建,至少 - 方形感。

主矢量系数的大小可以解释为数据各个特征的重要性,因为每个系数将1:1映射到矩阵的特征或列。通过选择一个或两个主要向量并检查它们的大小,您可以初步了解哪些列更相关,当然还有这些向量与矩阵的近似值。

This是详细的scikit-learn API描述。同样,PCA是一种简单但只是其中一种方式。