小编典典

预处理具有分类和连续功能的大型数据文件

python

首先,感谢您阅读我的信息,如果您能提供任何帮助我解决此问题的线索,也非常感谢。

由于我是Scikit学习的新手,请毫不犹豫地提供任何可以帮助我改进过程并使之更加专业的建议。

我的目标是对两个类别之间的数据进行分类。我想找到一个可以给我最精确结果的解决方案。目前,我仍在寻找最合适的算法和数据预处理。

在我的数据中,我有24个值:13个为名义值,6个为二值化值,其他为连续值。这是一条线的例子

“ RENAULT”;“ CLIO III”;“ CLIO III(2005-2010)”;“柴油”; 2010;“ HOM”;“ _ AAA”;“ _ BBB”;“ _ CC”; 0; 668.77; 3;“ Fevrier” ;“ _ DDD”; 0; 0; 0; 1; 0; 0; 0; 0; 0; 0; 247.97

我有大约90万条线需要学习,而我的测试则超过10万条线

当我想比较几种算法实现时,我想对所有标称值进行编码,以便可以在多个分类器中使用。

我尝试了几件事:

  1. LabelEncoder:相当不错,但是它为我提供了有序的值,分类器会误解这些值。
  2. OneHotEncoder:如果我理解很好,那么它非常适合我的需求,因为我可以选择要进行二值化的列。但是由于我有很多标称值,所以它总是出现在MemoryError中。此外,其输入必须为数字,因此必须强制使用LabelEncode之前的所有内容。
  3. StandardScaler:这是非常有用的,但不是我需要的。我决定将其集成以扩展我的连续价值。
  4. FeatureHasher:首先我不明白它的作用。然后,我看到它主要用于文本分析。我试图用它来解决我的问题。我通过创建一个包含转换结果的新数组来作弊。我认为它不是以这种方式工作的,甚至也不合逻辑。
  5. DictVectorizer:可能有用,但看起来像OneHotEncoder,甚至将更多数据存储在内存中。
  6. partial_fit:此方法仅由5个分类器给出。我希望能够至少使用Perceptron,KNearest和RandomForest做到这一点,因此它不符合我的需求

我查看了文档,并在“预处理和特征提取”页面上找到了这些信息。

我想要一种对所有标称值进行编码的方法,这样它们就不会被视为有序的。此解决方案可以应用于类别很多且资源薄弱的大型数据集。

有什么我没探索过的方法可以满足我的需求吗?

感谢您提供任何线索和建议。


阅读 196

收藏
2021-01-20

共1个答案

小编典典

要转换无序的分类功能,你可以尝试get_dummies在pandas,更多的细节可以参考它的文档。另一种方法是使用catboost,它可以直接处理分类特征,而无需将其转换为数字类型。

2021-01-20