Comment convertir les données d'un objet Scikit-learn Bunch en un 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?
dataset
scikit-learn
pandas
Échantillons SANBI
la source
la source
load_boston()
. Cette réponse fonctionne plus généralement: stackoverflow.com/a/46379878/1840471Ce tutoriel peut être intéressant: http://www.neural.cz/dataset-exploration-boston-house-pricing.html
la source
La solution de TOMDLt n'est pas assez générique pour tous les jeux de données de scikit-learn. Par exemple, cela ne fonctionne pas pour l'ensemble de données sur les logements de Boston. Je propose une solution différente, plus universelle. Pas besoin d'utiliser numpy également.
En tant que fonction générale:
la source
Juste comme alternative que je pourrais comprendre beaucoup plus facilement:
Fondamentalement, au lieu de concaténer dès le départ, créez simplement un cadre de données avec la matrice des fonctionnalités, puis ajoutez simplement la colonne cible avec les données ['whatvername'] et récupérez les valeurs cibles de l'ensemble de données
la source
Il m'a fallu 2 heures pour comprendre cela
Récupérez les espèces pour mes pandas
la source
Sinon, utilisez des ensembles de données Seaborn qui sont de véritables trames de données pandas:
Comparez avec les ensembles de données scikit learn:
la source
Cela fonctionne pour moi.
la source
Une autre façon de combiner des fonctionnalités et des variables cibles peut être d'utiliser
np.column_stack
( détails )Résultat:
Si vous avez besoin de l'étiquette de chaîne pour la
target
, vous pouvez utiliserreplace
en convertissanttarget_names
pourdictionary
et ajouter une nouvelle colonne:Résultat:
la source
Fondamentalement, ce dont vous avez besoin, ce sont les "données", et vous les avez dans le groupe scikit, maintenant vous avez juste besoin de la "cible" (prédiction) qui est également dans le groupe.
Il suffit donc de concaténer ces deux pour rendre les données complètes
la source
Depuis la version 0.23, vous pouvez directement renvoyer un DataFrame à l'aide de l'
as_frame
argument. Par exemple, charger l'ensemble de données d'iris:D'après ce que je comprends, en utilisant les notes de publication provisoires , cela fonctionne pour les ensembles de données breast_cancer, diabète, digits, iris, linnerud, wine et california_houses.
la source
Mise à jour: 2020
Vous pouvez utiliser le paramètre
as_frame=True
pour obtenir des dataframes pandas.Si le paramètre as_frame est disponible (par exemple load_iris)
Si le paramètre as_frame n'est PAS disponible (par exemple, load_boston)
la source
En travaillant sur la meilleure réponse et en répondant à mon commentaire, voici une fonction pour la conversion
la source
Quelle que soit la réponse de TomDLT, cela peut ne pas fonctionner pour certains d'entre vous car
parce que iris ['feature_names'] vous renvoie un tableau numpy. Dans le tableau numpy, vous ne pouvez pas ajouter un tableau et une liste ['cible'] par juste + opérateur. Par conséquent, vous devez d'abord le convertir en une liste, puis l'ajouter.
Tu peux faire
Cela fonctionnera bien.
la source
Il y a peut-être un meilleur moyen, mais voici ce que j'ai fait dans le passé et cela fonctionne assez bien:
Maintenant, mydata aura tout ce dont vous avez besoin - attributs, variables cibles et noms de colonnes
la source
mydata = pd.DataFrame(items[1][1])
lancersTypeError: 'dict_items' object does not support indexing
Cet extrait de code n'est que du sucre syntaxique basé sur ce que TomDLT et rolyat ont déjà contribué et expliqué. Les seules différences seraient que
load_iris
cela renverra un tuple au lieu d'un dictionnaire et les noms de colonnes sont énumérés.la source
la source
L'un des meilleurs moyens:
Digits est le dataframe sklearn et je l'ai converti en un pandas DataFrame
la source
J'ai pris quelques idées de vos réponses et je ne sais pas comment raccourcir :)
Cela donne un Pandas DataFrame avec feature_names plus target en tant que colonnes et RangeIndex (start = 0, stop = len (df), step = 1). Je voudrais avoir un code plus court où je peux ajouter directement la «cible».
la source
L'API est un peu plus propre que les réponses suggérées. Ici, en utilisant
as_frame
et en veillant à inclure également une colonne de réponse.la source
Voici un autre exemple de méthode intégrée qui peut être utile.
Les données iris_X sont importées en tant que pandas DataFrame et la cible iris_y est importée en tant que pandas Series.
la source
la source