Использование метода corr () для связки объектов sklearn iris - PullRequest
0 голосов
/ 13 октября 2018

Я предполагаю, что в следующем коде радужная оболочка - это группировка объектов, специально созданная для наборов данных / sklearn.

# import load_iris function from datasets module
from sklearn.datasets import load_iris

# save "bunch" object containing iris dataset and its attributes
iris = load_iris()

Когда я пытаюсь понять, какой тип объектаэто так, он говорит связка объекта.

type(iris)
Out[4]:
sklearn.utils.Bunch

Теперь, если мне нужно использовать метод corr () для вычисления стандартной корреляции между каждой парой атрибутов, которые должны работать с кадром данных, а не с объектом связки.

Как мне это сделать?Могу ли я выполнить это на iris.data?Я знаю, что это массив.Не датафрейм.

# check the types of the features
print(type(iris.data))
Out[5]:
<class 'numpy.ndarray'>

Теперь, если бы я использовал встроенный набор данных seaborne или из фактического источника данных, у него не было бы этой проблемы.Здесь iris.corr () работает отлично.Да, здесь iris - это датафрейм.

iris = sns.load_dataset("iris")
type(iris)
Out[7]:
pandas.core.frame.DataFrame
iris.corr()
Out[8]:

              sepal_length  sepal_width  petal_length  petal_width
sepal_length      1.000000    -0.117570      0.871754     0.817941
sepal_width      -0.117570     1.000000     -0.428440    -0.366126
petal_length      0.871754    -0.428440      1.000000     0.962865
petal_width       0.817941    -0.366126      0.962865     1.000000

Как запустить corr () в предыдущем примере?Использование объекта связки sklearn?Как преобразовать объект связки sklearn в фрейм данных?Или преобразовать iris.data ndarray в dataframe?

1 Ответ

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

После просмотра ответов на Как преобразовать набор данных Scikit-learn в набор данных Pandas? , здесь может быть ответ.Спасибо всем за руководство.

from sklearn.datasets import load_iris
import pandas as pd
import numpy as np

data = load_iris()

Мы можем комбинировать объекты и целевые переменные, используя np.column_stack.

df = pd.DataFrame(np.column_stack((data.data, data.target)), columns = data.feature_names+['target'])
print(df.head())

Вывод:

sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)     target
0                5.1               3.5                1.4               0.2     0.0
1                4.9               3.0                1.4               0.2     0.0 
2                4.7               3.2                1.3               0.2     0.0 
3                4.6               3.1                1.5               0.2     0.0
4                5.0               3.6                1.4               0.2     0.0

Теперь мы можем заменить, преобразовав target_names всловарь и добавьте новый столбец:

df['label'] = df.target.replace(dict(enumerate(data.target_names)))
print(df.head())

Вывод:

sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)     target  label 
0                5.1               3.5                1.4               0.2     0.0     setosa
1                4.9               3.0                1.4               0.2     0.0     setosa
2                4.7               3.2                1.3               0.2     0.0     setosa
3                4.6               3.1                1.5               0.2     0.0     setosa
4                5.0               3.6                1.4               0.2     0.0     setosa
...