[dataset] Scikit-learn 데이터 세트를 Pandas 데이터 세트로 변환하는 방법은 무엇입니까?

Scikit-learn Bunch 객체의 데이터를 Pandas DataFrame으로 어떻게 변환합니까?

from sklearn.datasets import load_iris
import pandas as pd
data = load_iris()
print(type(data))
data1 = pd. # Is there a Pandas method to accomplish this?



답변

수동으로 pd.DataFrame생성자 를 사용 하여 numpy 배열 ( data)과 열 이름 목록 ( )을 제공 할 수 있습니다 columns. 당신은 기능과 하나 개의 NumPy와 배열에 대상 연결할 수 있습니다, 하나 DataFrame에 모든 것을 가지고하려면 np.c_[...]합니다 (주의를 [])

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

# save load_iris() sklearn dataset to iris
# if you'd like to check dataset type use: type(load_iris())
# if you'd like to view list of attributes use: dir(load_iris())
iris = load_iris()

# np.c_ is the numpy concatenate function
# which is used to concat iris['data'] and iris['target'] arrays 
# for pandas column argument: concat iris['feature_names'] list
# and string list (in this case one string); you can make this anything you'd like..  
# the original dataset would probably call this ['Species']
data1 = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                     columns= iris['feature_names'] + ['target'])


답변

from sklearn.datasets import load_iris
import pandas as pd

data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df.head()

이 튜토리얼에 관심이있을 수 있습니다 : http://www.neural.cz/dataset-exploration-boston-house-pricing.html


답변

TOMDLt의 솔루션은 scikit-learn의 모든 데이터 세트에 대해 충분히 일반적이지 않습니다. 예를 들어 보스턴 주택 데이터 세트에서는 작동하지 않습니다. 더 보편적 인 다른 솔루션을 제안합니다. numpy도 사용할 필요가 없습니다.

from sklearn import datasets
import pandas as pd

boston_data = datasets.load_boston()
df_boston = pd.DataFrame(boston_data.data,columns=boston_data.feature_names)
df_boston['target'] = pd.Series(boston_data.target)
df_boston.head()

일반적인 기능으로 :

def sklearn_to_df(sklearn_dataset):
    df = pd.DataFrame(sklearn_dataset.data, columns=sklearn_dataset.feature_names)
    df['target'] = pd.Series(sklearn_dataset.target)
    return df

df_boston = sklearn_to_df(datasets.load_boston())


답변

훨씬 더 쉽게 머리를 감쌀 수있는 대안으로서 :

data = load_iris()
df = pd.DataFrame(data['data'], columns=data['feature_names'])
df['target'] = data['target']
df.head()

기본적으로 처음부터 연결하는 대신 특성 행렬로 데이터 프레임을 만든 다음 데이터 [ ‘whatvername’]가있는 대상 열을 추가하고 데이터 집합에서 대상 값을 가져옵니다.


답변

이것을 알아내는 데 2 ​​시간이 걸렸습니다.

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

iris = load_iris()
##iris.keys()


df= pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                 columns= iris['feature_names'] + ['target'])

df['species'] = pd.Categorical.from_codes(iris.target, iris.target_names)

내 판다의 종을 되찾아


답변

그렇지 않으면 실제 pandas 데이터 프레임 인 seaborn 데이터 세트 를 사용 하십시오 .

import seaborn
iris = seaborn.load_dataset("iris")
type(iris)
# <class 'pandas.core.frame.DataFrame'>

scikit learn 데이터 세트와 비교 :

from sklearn import datasets
iris = datasets.load_iris()
type(iris)
# <class 'sklearn.utils.Bunch'>
dir(iris)
# ['DESCR', 'data', 'feature_names', 'filename', 'target', 'target_names']


답변

이것은 나를 위해 작동합니다.

dataFrame = pd.dataFrame(data = np.c_[ [iris['data'],iris['target'] ],
columns=iris['feature_names'].tolist() + ['target'])