一种热编码 - 存储在1d阵列中的数据

时间:2016-12-16 18:57:12

标签: python scikit-learn one-hot-encoding

我有一个1维数组,我用它来存储我的数据集的分类特征,如下所示:(其中每个数据实例属于许多类别,类别用逗号分隔)

Administration   Oral ,Aged ,Area Under Curve ,Cholinergic Antagonists/adverse effects/*pharmacokinetics/therapeutic use ,Circadian Rhythm/physiology ,Cross-Over Studies ,Delayed-Action Preparations ,Dose-Response Relationship   Drug ,Drug Administration Schedule ,Female ,Humans ,Mandelic Acids/adverse effects/blood/*pharmacokinetics/therapeutic use ,Metabolic Clearance Rate ,Middle Aged ,Urinary Incontinence/drug therapy ,Xerostomia/chemically induced ,

Adult ,Anti-Ulcer Agents/metabolism ,Antihypertensive Agents/metabolism ,Benzhydryl Compounds/administration & dosage/blood/*pharmacology ,Caffeine/*metabolism ,Central Nervous System Stimulants/metabolism ,Cresols/administration & dosage/blood/*pharmacology ,Cross-Over Studies ,Cytochromes/*pharmacology ,Debrisoquin/*metabolism ,Drug Interactions ,Humans ,Male ,Muscarinic Antagonists/pharmacology ,Omeprazole/*metabolism ,*Phenylpropanolamine ,Polymorphism   Genetic ,Tolterodine Tartrate ,Urinary Bladder Diseases/drug therapy ,
...
...

数组的每个元素表示数据实例所属的类别。我需要使用单热编码,所以我可以使用它们作为一个功能来训练我的算法。我知道这可以使用scrikit-learn来实现,但是我不确定如何实现它。 (有大约150个可能的类别和大约1,000个数据实例。)

1 个答案:

答案 0 :(得分:1)

我建议您在pandas中使用get_dummies方法。界面更好一点,特别是如果你已经使用pandas来存储你的数据。 sklearn实现更复杂一些。如果您决定使用sklearn路线,则需要使用OneHotEncoderLabelBinarizer。两者都要求您首先将类别转换为可以使用LabelEncoder完成的整数值。