Chargement de collections d'ensembles de données - Exemples de code Python
Parfois, vous voudrez peut-être vérifier vos idées sur plusieurs ensembles de données. Il existe plusieurs endroits avec des collections de jeux de données.
Question: Veuillez partager quelques scripts Python. Comment télécharger plusieurs jeux de données à partir de ces (ou d'autres) collections de jeux de données?
Idéalement, on devrait être en mesure de: 1) obtenir la liste des ensembles de données 2) sélectionner certains souhaités par les conditions 3) télécharger ceux sélectionnés. Mais si vous avez quelque chose de différent, veuillez quand même le partager.
Pour la base de données "openml" - j'ai un script - voir ma propre réponse. Mais j'en ai pour d'autres collections: Kaggle, uci ...
Voici quelques exemples de collections de jeux de données:
https://www.openml.org/
https://archive.ics.uci.edu/ml/index.php
https://ieee-dataport.org/datasets
Каggle contient de nombreux ensembles de données, il existe également des collections spécifiques: les collections de graphiques voir la liste ici https://mathoverflow.net/a/359449/10446 , de nombreuses données biologiques sont ici: https://www.ncbi.nlm.nih.gov/gds
Réponses
Comment récupérer les données Kaggle à partir du code python?
Installez le package kaggle C: \ Users \ TalgatHafiz> pip install kaggle
Connectez-vous à votre compte Kaggle cliquez sur l'icône dans le coin supérieur droit -> Mon compte Faites défiler jusqu'à la section API Cliquez sur "Créer un nouveau jeton API" Le fichier "kaggle.json" est créé et enregistré localement
Créez ".kaggle" dir C: \ Users \ TalgatHafiz> mkdir .kaggle et déplacez "kaggle.json" dans ce répertoire
voir toutes les compétitions actives en exécutant la commande suivante C: \ Users \ TalgatHafiz> kaggle competitions list
Sélectionnez l'un des concours auxquels vous vous êtes inscrit, par exemple https://www.kaggle.com/c/contradictory-my-dear-watson/data#Défiler vers le bas. Juste avant la section "Explorateur de données", il devrait y avoir une ligne API: "kaggle competitions download -c contradictory-my-dear-watson" copiez-le
lancez ces commandes depuis le notebook import kaggle! kaggle competitions download -c contradictory-my-dear-watson
Le fichier de données zippé est téléchargé dans le même répertoire que celui où se trouve votre ordinateur portable: C: \ Users \ TalgatHafiz \ conda \ contradictory-my-dear-watson.zip donc vous pouvez maintenant décompresser et commencer à utiliser les données
Si vous avez encore des questions, veuillez lire https://medium.com/@jeff.daniel77/accessing-the-kaggle-com-api-with-jupyter-notebook-on-windows-d6f330bc6953
Voici un script pour la collection "openml" d'ensembles de données. Espérons que l'on puisse fournir quelque chose de similaire pour d'autres bases de données.
#see docs: https://docs.openml.org/Python-guide/
!pip install openml
import openml
import numpy as np
import pandas as pd
import time
# Get information on all collection of openml datasets:
datalist = openml.datasets.list_datasets(output_format="dataframe")
# select datasets by some conditions (just pandas) - we will get just 4 such datasets
datasets_selected = datalist[ (datalist.NumberOfInstances < 2550) & (datalist.NumberOfInstances > 300)& (datalist.NumberOfFeatures > 10000) & (datalist.NumberOfFeatures < 40000) & \
( datalist.NumberOfFeatures != 10937) ].sort_values(["NumberOfInstances"], ascending=False)#.head(n=20)
print(datasets_selected.shape)
# load all selected datasets and print short info:
for i in range(len(datasets_selected)):
nm = datasets_selected['name'].iloc[i]
print(nm, i )
did = int( datasets_selected['did'].iloc[i] ) # did - dataset_id
t0 = time.time()
data = openml.datasets.get_dataset(did)
X, y, categorical_indicator, attribute_names = data.get_data(
dataset_format="array", target=data.default_target_attribute )
print(X.shape, y.shape, time.time()-t0,'secs passed' )
Voici un exemple encore plus simple pour les ensembles de données intégrés sklearn:
import numpy as np
from sklearn import datasets
import time
list_id = ['load_boston', 'load_iris', 'load_diabetes', 'load_digits', 'load_linnerud', 'load_wine' , 'load_breast_cancer'] + \
['fetch_california_housing', 'fetch_covtype', 'fetch_lfw_people', 'fetch_20newsgroups_vectorized','fetch_olivetti_faces' ]
# 'fetch_rcv1', - too long
# 'fetch_lfw_pairs' - TypeError fetch_lfw_pairs() got an unexpected keyword argument 'return_X_y
# 'fetch_kddcup99' - sometimes problem happens
for id in list_id:
print(id)
t0 = time.time()
func_load = getattr(datasets, id )
X,y = func_load(return_X_y = True)
print(id, X.shape, time.time()-t0, 'secs passed')
OpenML a une galerie d'exemples de cas d'utilisation différents, y compris la navigation et le téléchargement d'ensembles de données via python, et l'exécution de benchmarks: https://openml.github.io/openml-python/master/examples/index.html
Lorsque vous souhaitez évaluer de nouveaux algorithmes, voici l'essentiel:
import openml
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
suite = openml.study.get_suite('OpenML-CC18') # get benchmark suite
tasks = np.random.choice(suite.tasks, size=10, replace=False) # sample 10 tasks randomly
clf = make_pipeline(SimpleImputer(),RandomForestClassifier()) # simple pipeline
for task_id in tasks:
task = openml.tasks.get_task(task_id)
print("Running on task",task.get_dataset().name)
run = openml.runs.run_model_on_task(clf, task)
print(run.get_metric_fn(accuracy_score))
Sortie (ce sont des tâches CV de 10 fois):
Running on task credit-approval
[0.928 0.884 0.841 0.768 0.913 0.884 0.884 0.841 0.899 0.884]
Running on task pc1
[0.955 0.919 0.946 0.955 0.937 0.973 0.919 0.928 0.919 0.918]
Vous pouvez également choisir de partager directement le résultat sur OpenML avec run.publish()
Avertissement: je suis l'un des principaux développeurs d'OpenML