【问题标题】:How to get cartesian product of OrdinalEncoder in Scikit-learn?如何在 Scikit-learn 中获取 OrdinalEncoder 的笛卡尔积?
【发布时间】:2022-01-10 22:25:14
【问题描述】:

代码:

import itertools
import pandas as pd
from sklearn import preprocessing


data = pd.read_csv("data.csv")
feature_cols = ['country', 'city', 'pay_type']
X = data[feature_cols]
y = data.label
oe = preprocessing.OrdinalEncoder()
X = oe.fit_transform(X)
print(oe.categories_)
for element in itertools.product(oe.categories_):
    print(element)

然后输出:

[array(['Saudi Arabia'], dtype=object), array(['Dammam', 'Jeddah', 'Madinah', 'Makkah', 'Riyadh', 'Taif'],
      dtype=object), array(['COD', 'PREPAID'], dtype=object)]
(array(['Saudi Arabia'], dtype=object),)
(array(['Dammam', 'Jeddah', 'Madinah', 'Makkah', 'Riyadh', 'Taif'],
      dtype=object),)
(array(['COD', 'PREPAID'], dtype=object),)

从输出中,我们有 3 个特征,取值范围是:

Country: 'Saudi Arabia'
City: 'Dammam', 'Jeddah', 'Madinah', 'Makkah', 'Riyadh', 'Taif'
Pay type: 'COD', 'PREPAID'

我想得到所有特征值的笛卡尔积,也就是说:

('Saudi Arabia', 'Dammam', 'COD')
('Saudi Arabia', 'Dammam', 'PREPAID')
('Saudi Arabia', 'Jeddah', 'COD')
...

我尝试itertools.product,但只输出3个元素而不是笛卡尔积。

谁能给我一些关于获得这些特征值的笛卡尔积的提示?

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    你很亲密。您需要执行以下操作:

    ...
    for element in itertools.product(*oe.categories_):
        print(element)
    

    基本上,您必须解压缩oe.categories_,以便将其视为itertools.product 的单独迭代。

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多