Cargando colecciones de conjuntos de datos: ejemplos de código de Python

Oct 20 2020

A veces, es posible que desee verificar sus ideas en varios conjuntos de datos. Hay varios lugares con colecciones de conjuntos de datos.

Pregunta: Comparta algunos scripts de Python sobre cómo descargar varios conjuntos de datos de esta (u otra) colección de conjuntos de datos.

Idealmente, uno debería ser capaz de: 1) obtener una lista de conjuntos de datos 2) seleccionar algunos deseados por condiciones 3) descargar los seleccionados. Pero si tienes algo diferente, compártelo de todos modos.

Para la base de datos "openml", tengo un script, vea mi propia respuesta. Pero sí tengo para otras colecciones: Kaggle, uci ...


Aquí algunos ejemplos de colecciones de conjuntos de datos:

https://www.openml.org/

https://archive.ics.uci.edu/ml/index.php

https://ieee-dataport.org/datasets

Каggle contiene muchos conjuntos de datos, también hay colecciones específicas: colecciones de gráficos ver lista aquí https://mathoverflow.net/a/359449/10446 , muchos datos biológicos están aquí: https://www.ncbi.nlm.nih.gov/gds

Respuestas

5 Farid Oct 22 2020 at 09:48

¿Cómo obtener datos de Kaggle desde el código de Python?

  1. Instale el paquete kaggle C: \ Users \ TalgatHafiz> pip install kaggle

  2. inicie sesión en su cuenta de Kaggle haga clic en el icono en la esquina superior derecha -> Mi cuenta Desplácese hacia abajo hasta la sección de API Haga clic en "Crear nuevo token de API" El archivo "kaggle.json" se crea y se guarda localmente

  3. Cree el directorio ".kaggle" C: \ Users \ TalgatHafiz> mkdir .kaggle y mueva "kaggle.json" a ese directorio

  4. ver todas las competiciones activas ejecutando el siguiente comando C: \ Users \ TalgatHafiz> lista de competiciones de kaggle

  5. Seleccione una de las competiciones en las que se inscribió, p. Ej. https://www.kaggle.com/c/contradictory-my-dear-watson/data#Desplácese hacia abajo. Justo antes de la sección "Explorador de datos" debería haber una línea de API: "kaggle compeitions download -c contradictory-my-dear-watson" cópielo

  6. ejecutar estos comandos desde el cuaderno importar kaggle! kaggle competiciones descargar -c contradictory-my-dear-watson

  7. El archivo de datos comprimido se descarga en el mismo directorio donde está su computadora portátil: C: \ Users \ TalgatHafiz \ conda \ contradictory-my-dear-watson.zip, así que ahora puede descomprimir y comenzar a usar los datos.

Si aún tiene preguntas, lea https://medium.com/@jeff.daniel77/accessing-the-kaggle-com-api-with-jupyter-notebook-on-windows-d6f330bc6953

3 AlexanderChervov Oct 20 2020 at 02:35

Aquí hay una secuencia de comandos para la recopilación de conjuntos de datos "openml". Es de esperar que se pueda proporcionar algo similar para otras bases de datos.

#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' )

Aquí hay un ejemplo aún más simple para los conjuntos de datos integrados de 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')
3 JoaquinVanschoren Oct 20 2020 at 16:35

OpenML tiene una galería de diferentes ejemplos de casos de uso, que incluyen la exploración y descarga de conjuntos de datos a través de Python y la ejecución de pruebas comparativas: https://openml.github.io/openml-python/master/examples/index.html

Cuando desee comparar nuevos algoritmos, esta es la esencia:

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))

Salida (estas son tareas de CV de 10 veces):

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]

También puede optar por compartir directamente el resultado en OpenML con run.publish()

Descargo de responsabilidad: soy uno de los desarrolladores principales de OpenML