데이터 세트 컬렉션로드-Python 코드 예제

Oct 20 2020

때로는 여러 데이터 세트에서 아이디어를 확인하고 싶을 수 있습니다. 데이터 세트 컬렉션이있는 곳이 여러 곳 있습니다.

질문 : 이러한 (또는 다른) 데이터 세트 컬렉션에서 여러 데이터 세트를 다운로드하는 방법에 대한 일부 Python 스크립트를 공유하십시오.

이상적으로는 다음을 수행 할 수 있어야합니다. 1) 데이터 세트 목록 가져 오기 2) 조건에 따라 원하는 항목 선택 3) 선택한 항목 다운로드. 그러나 다른 것이 있으면 어쨌든 공유하십시오.

"openml"데이터베이스의 경우-스크립트가 있습니다-내 답변을 참조하십시오. 그러나 나는 다른 컬렉션을 가지고 있습니다 : Kaggle, uci ...


다음은 데이터 세트 컬렉션의 몇 가지 예입니다.

https://www.openml.org/

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

https://ieee-dataport.org/datasets

카글에는 많은 데이터 세트가 포함되어 있으며 특정 컬렉션도 있습니다. 그래프 컬렉션은 여기 목록을 참조하세요. https://mathoverflow.net/a/359449/10446 , 많은 생물학적 데이터가 여기에 있습니다. https://www.ncbi.nlm.nih.gov/gds

답변

5 Farid Oct 22 2020 at 09:48

파이썬 코드에서 Kaggle 데이터를 가져 오는 방법은 무엇입니까?

  1. kaggle 패키지 설치 C : \ Users \ TalgatHafiz> pip install kaggle

  2. Kaggle 계정에 로그인 오른쪽 상단 모서리에있는 아이콘을 클릭합니다.-> 내 계정 API 섹션으로 아래로 스크롤합니다. "새 API 토큰 생성"을 클릭합니다. "kaggle.json"파일이 생성되고 로컬에 저장됩니다.

  3. ".kaggle"디렉토리 C : \ Users \ TalgatHafiz> mkdir .kaggle을 생성하고 "kaggle.json"을 해당 디렉토리로 이동합니다.

  4. C : \ Users \ TalgatHafiz> kaggle 대회 목록 명령을 실행하여 모든 활성 대회를 확인합니다.

  5. 등록한 대회 중 하나를 선택하십시오. 예 : https://www.kaggle.com/c/contradictory-my-dear-watson/data#아래로 스크롤. "데이터 탐색기"섹션 바로 앞에 API 줄이 있어야합니다. "kaggle Competitions download -c contradictory-my-dear-watson"복사

  6. 노트북에서 다음 명령을 실행하십시오. import kaggle! kaggle 대회 다운로드 -c contradictory-my-dear-watson

  7. 압축 된 데이터 파일은 노트북이있는 동일한 디렉토리에 다운로드됩니다. C : \ Users \ TalgatHafiz \ conda \ contradictory-my-dear-watson.zip 이제 압축을 풀고 데이터 사용을 시작할 수 있습니다.

그래도 질문이 있으시면 읽어주세요 https://medium.com/@jeff.daniel77/accessing-the-kaggle-com-api-with-jupyter-notebook-on-windows-d6f330bc6953

3 AlexanderChervov Oct 20 2020 at 02:35

다음은 "openml"데이터 세트 모음에 대한 스크립트입니다. 바라건대 다른 데이터베이스에도 비슷한 것을 제공 할 수 있습니다.

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

다음은 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에는 Python을 통한 데이터 세트 검색 및 다운로드, 벤치 마크 실행 등 다양한 사용 사례 갤러리가 있습니다. https://openml.github.io/openml-python/master/examples/index.html

새로운 알고리즘을 벤치마킹하려는 경우 이것이 핵심입니다.

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

출력 (10 중 CV 작업) :

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]

OpenML에서 결과를 직접 공유하도록 선택할 수도 있습니다. run.publish()

면책 조항 : 저는 OpenML의 핵심 개발자 중 한 명입니다.