Comment convertir les données d'un objet Scikit-learn Bunch en un DataFrame Pandas ?
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?
Comment convertir les données d'un objet Scikit-learn Bunch en un DataFrame Pandas ?
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?
Manuellement, vous pouvez utiliser pd.DataFrame
en donnant un tableau numpy ( data
) et une liste des noms des colonnes ( columns
). Pour avoir tout dans un seul DataFrame, vous pouvez concaténer les caractéristiques et la cible dans un tableau numpy avec np.c_[...]
(notez le []
):
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'])
Pouvez-vous ajouter un petit texte pour expliquer ce code ? C'est un peu court selon nos normes.
Certaines grappes ont les noms des caractéristiques sous la forme d'un tableau ndarray, ce qui casse le paramètre columns.
from sklearn.datasets import load_iris
import pandas as pd
data = load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)
df.head()
Ce tutoriel peut vous intéresser : http://www.neural.cz/dataset-exploration-boston-house-pricing.html
La solution de TOMDLt n'est pas assez générique pour tous les jeux de données de scikit-learn. Par exemple, elle ne fonctionne pas pour le jeu de données des logements de Boston. Je propose une solution différente qui est plus universelle. Il n'est pas nécessaire d'utiliser numpy en plus.
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()
En tant que fonction générale :
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())
C'était juste une alternative que je pouvais comprendre beaucoup plus facilement :
data = load_iris()
df = pd.DataFrame(data['data'], columns=data['feature_names'])
df['target'] = data['target']
df.head()
En fait, au lieu de concaténer dès le départ, il suffit de créer un cadre de données avec la matrice des caractéristiques, puis d'ajouter la colonne cible avec data['whatvername'] et de récupérer les valeurs cibles de l'ensemble de données.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.