首先感谢您阅读我的问题,如果您能提供任何线索帮助我解决这个问题,我将不胜感激。
由于我对Scikit-learn很陌生,请不要犹豫,提供任何有助于改进过程和使其更专业的建议。
我的目标是将数据分类为两个类别。我希望找到一种解决方案,可以给我最精确的结果。目前,我仍在寻找最合适的算法和数据预处理方法。
我的数据中有24个值:13个名义值,6个二进制化值,其他是连续值。以下是一行的示例:
"RENAULT";"CLIO III";"CLIO III (2005-2010)";"Diesel";2010;"HOM";"_AAA";"_BBB";"_CC";0;668.77;3;"Fevrier";"_DDD";0;0;0;1;0;0;0;0;0;0;247.97
我有大约900K行用于学习,我在100K行上进行测试。
由于我想比较几种算法的实现,我想对所有名义值进行编码,以便在多个分类器中使用。
我尝试了几件事情:
- LabelEncoder:这很不错,但它给我提供了有序的值,这可能会被分类器误解。
- OneHotEncoder:如果我理解正确,它非常适合我的需求,因为我可以选择要二进制化的列。但是由于我有很多名义值,它总是会出现MemoryError。此外,它的输入必须是数字,因此必须先将所有内容LabelEncode。
- StandardScaler:这很有用,但不是我需要的。我决定将其集成到缩放我的连续值中。
- FeatureHasher:起初我不明白它的作用。然后,我发现它主要用于文本分析。我试图将其用于我的问题。我通过创建一个包含转换结果的新数组来欺骗它。我认为它不是为以那种方式工作而构建的,甚至不合逻辑。
- DictVectorizer:可能有用,但看起来像OneHotEncoder,并且会在内存中放置更多数据。
- partial_fit:只有5个分类器提供了此方法。我希望能够至少使用Perceptron、KNearest和RandomForest来完成它,以便它符合我的需求。
我希望有一种方法可以对所有名义值进行编码,以便它们不会被视为有序。这个解决方案适用于具有许多类别和弱资源的大型数据集。
有没有我没有探索过的方法可以满足我的需求?
感谢任何线索和建议。