데이터 세트 컬렉션로드-Python 코드 예제
때로는 여러 데이터 세트에서 아이디어를 확인하고 싶을 수 있습니다. 데이터 세트 컬렉션이있는 곳이 여러 곳 있습니다.
질문 : 이러한 (또는 다른) 데이터 세트 컬렉션에서 여러 데이터 세트를 다운로드하는 방법에 대한 일부 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
답변
파이썬 코드에서 Kaggle 데이터를 가져 오는 방법은 무엇입니까?
kaggle 패키지 설치 C : \ Users \ TalgatHafiz> pip install kaggle
Kaggle 계정에 로그인 오른쪽 상단 모서리에있는 아이콘을 클릭합니다.-> 내 계정 API 섹션으로 아래로 스크롤합니다. "새 API 토큰 생성"을 클릭합니다. "kaggle.json"파일이 생성되고 로컬에 저장됩니다.
".kaggle"디렉토리 C : \ Users \ TalgatHafiz> mkdir .kaggle을 생성하고 "kaggle.json"을 해당 디렉토리로 이동합니다.
C : \ Users \ TalgatHafiz> kaggle 대회 목록 명령을 실행하여 모든 활성 대회를 확인합니다.
등록한 대회 중 하나를 선택하십시오. 예 : https://www.kaggle.com/c/contradictory-my-dear-watson/data#아래로 스크롤. "데이터 탐색기"섹션 바로 앞에 API 줄이 있어야합니다. "kaggle Competitions download -c contradictory-my-dear-watson"복사
노트북에서 다음 명령을 실행하십시오. import kaggle! kaggle 대회 다운로드 -c contradictory-my-dear-watson
압축 된 데이터 파일은 노트북이있는 동일한 디렉토리에 다운로드됩니다. 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
다음은 "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')
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의 핵심 개발자 중 한 명입니다.