Laden von Sammlungen von Datensätzen - Python-Codebeispiele

Oct 20 2020

Manchmal möchten Sie Ihre Ideen möglicherweise in mehreren Datensätzen überprüfen. Es gibt mehrere Orte mit Datensatzsammlungen.

Frage: Bitte teilen Sie einige Python-Skripte mit, wie Sie mehrere Datensätze aus dieser (oder einer anderen) Datensatzsammlung herunterladen können.

Idealerweise sollte man in der Lage sein: 1) eine Datensatzliste zu erhalten 2) einige nach Bedingungen gewünschte auszuwählen 3) die ausgewählten herunterzuladen. Aber wenn Sie etwas anderes haben, teilen Sie es bitte trotzdem mit.

Für "openml" -Datenbank - ich habe ein Skript - siehe meine eigene Antwort. Aber ich habe für andere Sammlungen: Kaggle, uci ...


Hier einige Beispiele für Datensätze:

https://www.openml.org/

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

https://ieee-dataport.org/datasets

Containsаggle enthält viele Datensätze, es gibt auch bestimmte Sammlungen: Diagrammsammlungen siehe Liste hier https://mathoverflow.net/a/359449/10446 Viele biologische Daten sind hier: https://www.ncbi.nlm.nih.gov/gds

Antworten

5 Farid Oct 22 2020 at 09:48

Wie rufe ich Kaggle-Daten aus Python-Code ab?

  1. Installieren Sie das Kaggle-Paket C: \ Users \ TalgatHafiz> pip install kaggle

  2. Melden Sie sich bei Ihrem Kaggle-Konto an. Klicken Sie auf das Symbol in der oberen rechten Ecke -> Mein Konto. Scrollen Sie zum API-Bereich. Klicken Sie auf "Neues API-Token erstellen". Die Datei "kaggle.json" wird lokal erstellt und gespeichert

  3. Erstellen Sie das Verzeichnis ".kaggle" C: \ Users \ TalgatHafiz> mkdir .kaggle und verschieben Sie "kaggle.json" in dieses Verzeichnis

  4. Zeigen Sie alle aktiven Wettbewerbe an, indem Sie den folgenden Befehl C ausführen: \ Users \ TalgatHafiz> Liste der Wettbewerbe kaggle

  5. Wählen Sie einen der Wettbewerbe aus, für die Sie sich angemeldet haben, z https://www.kaggle.com/c/contradictory-my-dear-watson/data#Runterscrollen. Unmittelbar vor dem Abschnitt "Daten-Explorer" sollte eine API-Zeile stehen: "Kaggle-Wettbewerbe herunterladen -c widersprüchlich-mein-lieber-Watson" kopieren

  6. Führen Sie diese Befehle aus dem Notebook-Import aus. kaggle! kaggle-Wettbewerbe laden -c widersprüchlich-mein-lieber-Watson herunter

  7. Die komprimierte Datendatei wird in dasselbe Verzeichnis heruntergeladen, in dem sich Ihr Notizbuch befindet: C: \ Users \ TalgatHafiz \ conda \ contraictory-my-dear-watson.zip. Jetzt können Sie die Daten entpacken und verwenden

Wenn Sie noch Fragen haben, lesen Sie bitte https://medium.com/@jeff.daniel77/accessing-the-kaggle-com-api-with-jupyter-notebook-on-windows-d6f330bc6953

3 AlexanderChervov Oct 20 2020 at 02:35

Hier ist ein Skript für die "openml" -Sammlung von Datensätzen. Hoffentlich kann man etwas Ähnliches für andere Datenbanken bereitstellen.

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

Hier ist ein noch einfacheres Beispiel für integrierte sklearn-Datensätze:

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 verfügt über eine Galerie mit verschiedenen Anwendungsfallbeispielen, darunter das Durchsuchen und Herunterladen von Datensätzen über Python und das Ausführen von Benchmarks: https://openml.github.io/openml-python/master/examples/index.html

Wenn Sie neue Algorithmen vergleichen möchten, ist dies das Wesentliche:

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

Ausgabe (dies sind 10-fache Lebenslaufaufgaben):

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]

Sie können das Ergebnis auch direkt in OpenML für freigeben run.publish()

Haftungsausschluss: Ich bin einer der Hauptentwickler von OpenML