Как получить декартово произведение OrdinalEncoder в Scikit-узнайте?

#python #scikit-learn

#питон #scikit-учись

Вопрос:

Код:

 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 элемента вместо декартова произведения.

Не мог бы кто-нибудь, пожалуйста, дать мне несколько советов о том, как получить декартово произведение этих значений функций?

Ответ №1:

Вы были близки. Вам нужно будет сделать что-то вроде:

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

В принципе, вы должны распаковать oe.categories_ его так, чтобы его можно было рассматривать как отдельные итеративные itertools.product объекты .