データセットのコレクションの読み込み-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
Каggleには多くのデータセットが含まれており、特定のコレクションもあります。グラフコレクションはこちらのリストを参照してください https://mathoverflow.net/a/359449/10446 、多くの生物学的データがここにあります: https://www.ncbi.nlm.nih.gov/gds
回答
PythonコードからKaggleデータをフェッチする方法は?
kaggleパッケージC:\ Users \ TalgatHafiz> pip installkaggleをインストールします
Kaggleアカウントにログインします。右上隅のアイコンをクリックします->マイアカウント[API]セクションまで下にスクロールします[CreateNewAPIToken]をクリックします "kaggle.json"ファイルが作成され、ローカルに保存されます
「.kaggle」dirC:\ Users \ TalgatHafiz> mkdir .kaggleを作成し、「kaggle.json」をそのディレクトリに移動します
次のコマンドを実行して、アクティブなすべてのコンテストを表示しますC:\ Users \ TalgatHafiz> kaggle Competitions list
サインアップしたコンテストの1つを選択します。例: https://www.kaggle.com/c/contradictory-my-dear-watson/data#下へスクロール。「データエクスプローラー」セクションの直前にAPI行があるはずです:「kagglecompetitionsdownload-ccontradictory-my-dear-watson」それをコピーします
ノートブックからこれらのコマンドを実行しますimportkaggle!kaggle Competitions download -c contradictory-my-dear-watson
zip形式のデータファイルは、ノートブックと同じディレクトリ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のコア開発者の1人です