#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
объекты .