Эффективный способ перейти от набора данных радужной оболочки в форме Панды к форме обучения? - PullRequest
0 голосов
/ 01 октября 2018

Как я могу преобразовать версию набора данных радужной оболочки Pandas в форму, используемую sk-learn?

#Seaborn dataset
import seaborn as sns
iris_seaborn = sns.load_dataset("iris")


sepal_length    sepal_width petal_length    petal_width species
0   5.1 3.5 1.4 0.2 setosa
1   4.9 3.0 1.4 0.2 setosa
2   4.7 3.2 1.3 0.2 setosa
3   4.6 3.1 1.5 0.2 setosa
4   5.0 3.6 1.4 0.2 setosa

Sci-kit Learn:

#sk-learn dataset
from sklearn.datasets import load_iris
iris_sklearn = load_iris()

[Out] array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2]])


iris_sklearn.target[0:5]

[Out] array([0, 0, 0, 0, 0])

Я знаю, чтошаги нормализуют столбцы, используя sklearn.preprocessing.MinMaxScaler и sklearn.preprocessing.LabelEncoder для числовых и категориальных данных соответственно.Но я не знаю более эффективного способа, кроме как сделать это для каждого столбца, а затем сложить их вместе с zip().

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете factorize метки, а затем использовать базовый массив numpy для остальных данных:

target = pd.factorize(iris_seaborn.species)[0]
# alternatively:
# target = pd.Categorical(iris_seaborn.species).codes
# or 
# target = iris_seaborn.species.factorize()[0]

data = iris_seaborn.iloc[:,:-1].values

# look at start of data:
>>> data[:5,:]
array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2]])

# and of target:
>>> target[:5]
array([0, 0, 0, 0, 0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...