京橋のバイオインフォマティシャンの日常

まずは、データ分析、コマンドラインのメモとして

文字コード変換コマンド 〜シングルバイト文字、マルチバイト文字、JIS、Shift_JIS、UTF-8、BOM付きUTF-8、Unicodeエスケープ文字、URLエンコードなどの諸問題について〜

シングルバイト文字・マルチバイト文字

「シングルバイト文字」は、1バイト(7ビット、または8ビット)のデータ量で表現できる文字である。文字コードとしては、ASCIIコードなどが該当する。

一方、ダブルバイト文字は、1文字を2バイト以上(16ビット以上)のデータ量で表現できる文字である。JISコード、Shift JISコードなどがそれに該当する。

以下、簡単な表にまとめてみた。

文字の種類 説明 文字コードの例
シングルバイト文字*1 1バイト(7ビットまたは8ビット)のデータ量で表現できる文字 主にアルファベットや数字
ASCIIコード、ISO/IEC 8859 など
ダブルバイト文字 *2 1文字を2バイト以上のデータ量で表現できる文字 JIS X 0208、JISコード、Shift JISコード、EUC-JP、など

UTF・BOM

UTF-8 *3やUTF-16 *4は、Unicode / UCS *5で定義された文字集合で表現できる文字コードである。

Unicodeには、「BOM無し」と「BOM付き」の2種類のファイルが存在する。 BOMは、「バイトオーダーマーク(Byte Order Mark)」の略で、 Unicodeで符号化したテキストの先頭に付与される数バイトのデータのことを指す。 具体的には、バイナリの先頭に付く、<0xEF 0xBB 0xBF> が BOM である。

実際、UTF-8のファイルにはBOMは必要ないものであるが、 「Excel」「メモ帳」など Microsoft のアプリ、Macのアプリでは、 「BOM」を付けないと、日本語文字がうまく読めず、文字化けを起こすことがある。

Unicodeエスケープ文字・パーセントエンコード文字

「\uXXXX」といったUnicodeエスケープ文字、「%XX」といったURLエンコード(パーセントエンコード)文字というのがある。

Unicodeエスケープ形式の文字では、「\u」に文字の符号位置を表す16進数の値を付加することで、1文字を 「\uXXXX」 のような16進数4桁のコード形式にて表す。

また、パーセント・エンコード形式の文字では、「%」に16進数の値を付加することで、1文字を「%XX」のような16進数2桁のコード形式にて表す。

日本語などの文字列は、URLとしてそのまま扱うことができないため、エンコード形式の文字を使用する。URLとして使う際に、「%」付きの半角英数字・記号に変換することから、「URLエンコード」と呼ばれる。逆に、元の文字列に戻すことを「URLデコード」という。

今回の内容

主に、nkfコマンドを用いた、文字コードの変換例をまとめてみた。

nkfコマンドの基本的な使い方

nkfは、ものすごく古い漢字コード変換プログラムである*6

まず、Homebrewで、nkfコマンドをインストールする。

ターミナルを起動して、以下を実行する。

#nkf コマンドのインストール
brew install nkf

#バージョン確認
nkf --version
#Network Kanji Filter Version 2.1.5 (2018-12-15) 
#Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
#Copyright (C) 1996-2018, The nkf Project.

#【nkfコマンドの主なオプション】
#-u: 出力時にバッファリングを行わない
#-j: JISコードに変換する
#-e: EUCコードに変換する
#-s: Shift JISコードに変換する
#-w: UTF8コードに変換する
#-r: ROT13/47の変換する
#-T: テキスト・モードで出力する
#file: 変換元のファイルを指定する
#-g: 文字コード自動判別の結果を表示
#–overwrite: 引数のファイルに直接上書き

nkfコマンドでの文字コードの変換例

テスト・ファイルをダウンロードする。

wget https://raw.githubusercontent.com/kumeS/Blog/master/nkf_test/test.txt 

ファイルの文字コードを表示

nkf -g test.txt
#UTF-8

Shift JISコードに変換する。

nkf -s test.txt > test01.txt

#ファイルの文字コードを表示
nkf -g test01.txt
#Shift_JIS

#上書きの場合
#nkf -s --overwrite test.txt

UTF8コードに変換する。

nkf -w test01.txt > test02.txt

#ファイルの文字コードを表示
nkf -g test02.txt
#UTF-8

#上書きの場合
#nkf -w --overwrite test01.txt

UTF-8からUTF-8(BOM付)への変換

#nkfで、BOM付きに変換
nkf --oc=UTF-8-BOM test.txt > test_BOM.txt

#上書きの場合
#nkf --overwrite --oc=UTF-8-BOM test.txt 

#OR
#テキストの先頭にBOM文字列を、catで追記する
#cat <(printf "\xEF\xBB\xBF") BOM無しファイル.txt > BOM付きファイル.txt
#ダブルクォーテーションは半角で、、

cat <(printf "\xEF\xBB\xBF") test02.txt > test02_BOM.txt

見た目では分からないが、エクセルとかで開いてみると違いがわかる。

Unicodeエスケープシーケンス形式を日本語文字に変換する

別のテスト・ファイルをダウンロードする。

wget https://raw.githubusercontent.com/kumeS/Blog/master/nkf_test/nkf_test.txt

#例題
cat nkf_test.txt

#\u30D9\u30EB\u30AE\u30FC
#\u5E78\u798F
#\u30B8\u30E7\u30FC\u30B8\u30FB\u30EF\u30B7\u30F3\u30C8\u30F3
#\u30B8\u30E3\u30C3\u30AF\u30FB\u30D0\u30A6\u30A2\u30FC
#\u30A6\u30A3\u30AD\u30C7\u30FC\u30BF
#\u5357\u6975\u5927\u9678
#\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF

それでは、Unicodeエスケープシーケンス形式の文字を日本語文字に変換してみる。

# エスケープ文字を日本語に変換する(デコード)
cat nkf_test.txt | sed 's/\\\u\(....\)/\&#x\1;/g' | nkf --numchar-input -w > nkf_test2.txt

#変換結果を表示
cat nkf_test2.txt
#ベルギー
#幸福
#ジョージ・ワシントン
#ジャック・バウアー
#ウィキデータ
#南極大陸
#コンピュータ

#エンコードについては、改行の入れ方を少し検討中
#cat nkf_test2.txt | iconv -t UCS-2 | xxd -p | fold -w4 | xargs -n1 printf '\\u%s' > nkf_test2_encode.txt
#cat nkf_test2_encode.txt
#\u30d9\u30eb\u30ae\u30fc\u000a\u5e78\u798f\u000a\u30b8\u30e7\u30fc\u30b8\u30fb\u30ef\u30b7\u30f3\u30c8\u30f3\u000a\u30b8\u30e3\u30c3\u30af\u30fb\u30d0\u30a6\u30a2\u30fc\u000a\u30a6\u30a3\u30ad\u30c7\u30fc\u30bf\u000a\u5357\u6975\u5927\u9678\u000a\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u000a

パーセント・エンコードを日本語文字に変換する

パーセント・エンコード文字を日本語文字に変換してみる。

#パーセント・エンコード: 日本語 => パーセント文字
cat nkf_test2.txt | nkf -WwMQ | tr = % > nkf_test3.txt

#変換結果を表示
cat nkf_test3.txt
#%E3%83%99%E3%83%AB%E3%82%AE%E3%83%BC
#%E5%B9%B8%E7%A6%8F
#%E3%82%B8%E3%83%A7%E3%83%BC%E3%82%B8%E3%83%BB%E3%83%AF%E3%82%B7%E3%83%B3%
#%E3%83%88%E3%83%B3
#%E3%82%B8%E3%83%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%83%90%E3%82%A6%E3%82%A2%
#%E3%83%BC
#%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%87%E3%83%BC%E3%82%BF
#%E5%8D%97%E6%A5%B5%E5%A4%A7%E9%99%B8
#%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF

#URLデコード:  パーセント文字 => 日本語
cat nkf_test3.txt | nkf -w --url-input > nkf_test4.txt

#変換結果を表示
cat nkf_test4.txt
#ベルギー
#幸福
#ジョージ・ワシン%
#トン
#ジャック・バウア%
#ー
#ウィキデータ
#南極大陸
#コンピュータ
#どうも、「%」が残っている、、変換に失敗しているっぽい。

#こっちが正解っぽい。
cat nkf_test3.txt | tr % = | nkf -WwmQ  > nkf_test5.txt

#変換結果を表示
cat nkf_test5.txt
#ベルギー
#幸福
#ジョージ・ワシントン
#ジャック・バウアー
#ウィキデータ
#南極大陸
#コンピュータ

どうも、nkfコマンドは、出力文字列が76文字を超えると、勝手に改行が挿入されるらしい。

76文字を超える文字列では、nkf -w --url-inputではうまく変換できない。

そういう場合には、tr % = | nkf -WwmQを使うと良い。

まとめ

「文字コード変換」という悩ましい問題をまとめてみた。

ファイル数が1つあるいは少ない場合には、 例えば、「BOM付きにする」とかの簡単な変換であれば、 CotEditor などのテキストエディターを使って、 エンコードを変更するのが手っ取り早い。

参考資料

kazmax.zpp.jp

feynmanino.watson.jp

nalab.mind.meiji.ac.jp

e-words.jp

blog.offline-net.com

blue-red.ddo.jp

www.ryotosaito.com

*1:SBCS: Single-Byte Character Set

*2:DBCS: Double-Byte Character Set

*3:UCS Transformation Format 8

*4:UCS/Unicode Transformation Format 16

*5:Universal Coded Character Set

*6:https://osdn.net/projects/nkf/

RからのKaggleコマンド実行のTips 〜コンペ一覧・データセット取得・submitなどを一通りやってみた。Predictionはまた今度で編〜

Kaggle(読み方は「ケグル」??、どうも「カグル」らしい)は、世界中のデータサイエンティストや統計分析者がその最適モデルを競い合う、予測モデリング及び分析手法関連プラットフォームである*1

この記事では、Terminalを使わずに、R上からすべてのKaggleコマンドを実行するやり方を解説する*2

以下記載のTerminalコマンドはすべて、Rのsystem関数で実行している。

まずは、Pythonの設定・configを確認してみる。今回も、Mac HomeBrewでインストールしたPythonを使用する。

# RでのPython設定
require(reticulate)
reticulate::use_python(python="/usr/local/bin/python", required = T)

reticulate::py_config()
#python:         /usr/local/bin/python
#libpython:      /usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8/config-3.8-darwin/libpython3.8.dylib
#pythonhome:     /usr/local/Cellar/python@3.8/3.8.8_1/Frameworks/Python.framework/Versions/3.8:/usr/local/Cellar/python@3.8/3.8.8_1/Frameworks/Python.framework/Versions/3.8
#version:        3.8.8 (default, Feb 26 2021, 23:59:43)  [Clang 12.0.0 (clang-1200.0.32.29)]
#numpy:          /usr/local/lib/python3.8/site-packages/numpy
#numpy_version:  1.16.3
#NOTE: Python version was forced by use_python function

次に、Terminal側のPythonパスを確認しておく。

system("which python; python -V")
#/usr/local/bin/python
#Python 3.8.8

system("which pip; pip -V")
#/usr/local/bin/pip
#pip 21.0.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

ちゃんと、/usr/local/bin/のパスとなっている。

それでは、pipでKaggle APIをインストールする。

#Kaggleのインストール
system("pip install kaggle")

system("which kaggle")
#/usr/local/bin/kaggle

ここまで出来たら、Kaggle HPにいって、Your Profile内 >> Account >> API で、Create New API Tokenをクリックする*3

f:id:skume:20210305022042p:plain:w500

そうすると、APIキーである kaggle.json がダウンロードされる。

f:id:skume:20210305022046p:plain:w500

次に、Rに戻って、ホームディレクトリ配下に.kaggleディレクトリを作成して、そこにAPIキーを移動させる。そして、chmodでAPIキーに読み書き制限を与える。

#フォルダ作成
system("mkdir ~/.kaggle")

#APIキーの移動: [Your name]はホスト名に入れ替え
system("mv /Users/[Your name]/Downloads/kaggle.json ~/.kaggle/")

#所有者のみのファイル読み書きに制限
system("chmod 600 ~/.kaggle/kaggle.json")

これで、Kaggle APIのセットアップは完了である。

実際に、kaggleコマンドをR上で実行してみる。

Kaggleコマンドの使い方

基本的な文法

大まかなKaggleコマンドの文法は、以下の通りである

使用方法: kaggle [-h] [-v] {competitions, c, datasets, d, kernels, k, config} ...

オプションの引数。
h, --help このヘルプメッセージを表示する。
-v, --version プログラムのバージョン番号を表示する。

コマンド:
kaggle competitions, 略: c
kaggle datasets, 略: d
kaggle kernels, 略: k,
kaggle config 

次のいずれかを使用すること
#コンペティション: Kaggle competitions に関連するコマンド
kaggle competitions {list, files, download, submit, submission, submission, leaderboard}

#データセット: Kaggle データセットに関連するコマンド
kaggle datasets {list, files, download, create, version, init, metadata, status}

# config: コンフィギュレーション設定
kaggle config {view, set, unset}.

# kernels: Kaggle カーネルに関連するコマンド
kaggle kernels

次に、実際に使用する順番で、コマンド実行の挙動を確認してみる。

【1】コンペ一覧の表示①: 全一覧の表示

system("kaggle competitions list")

#ref                                            deadline             category            reward  teamCount  userHasEntered  
#---------------------------------------------  -------------------  ---------------  ---------  ---------  --------------  
#contradictory-my-dear-watson                   2030-07-01 23:59:00  Getting Started     Prizes         80           False  
#gan-getting-started                            2030-07-01 23:59:00  Getting Started     Prizes        170           False  
#tpu-getting-started                            2030-06-03 23:59:00  Getting Started  Knowledge        392           False  
#digit-recognizer                               2030-01-01 00:00:00  Getting Started  Knowledge       2587            True  
#titanic                                        2030-01-01 00:00:00  Getting Started  Knowledge      20578            True  
#house-prices-advanced-regression-techniques    2030-01-01 00:00:00  Getting Started  Knowledge       5210           False  
#connectx                                       2030-01-01 00:00:00  Getting Started  Knowledge        465           False  
#nlp-getting-started                            2030-01-01 00:00:00  Getting Started  Knowledge       1341           False  
#competitive-data-science-predict-future-sales  2022-12-31 23:59:00  Playground           Kudos      10515            True  
#jane-street-market-prediction                  2021-08-23 23:59:00  Featured          $100,000       4245           False  
#hungry-geese                                   2021-07-26 23:59:00  Playground          Prizes        334           False  
#bms-molecular-translation                      2021-06-02 23:59:00  Featured           $50,000         86           False  
#hashcode-2021-oqr-extension                    2021-05-25 23:59:00  Playground       Knowledge         60           False  
#indoor-location-navigation                     2021-05-17 23:59:00  Research           $10,000        458           False  
#hpa-single-cell-image-classification           2021-05-11 23:59:00  Featured           $25,000        270           False  
#tabular-playground-series-mar-2021             2021-03-31 23:59:00  Playground            Swag        335           False  
#vinbigdata-chest-xray-abnormalities-detection  2021-03-30 23:59:00  Featured           $50,000        866           False  
#hubmap-kidney-segmentation                     2021-03-25 23:59:00  Research           $60,000       1171           False  
#ncaaw-march-mania-2021                         2021-03-15 23:59:00  Playground          Prizes        161           False  
#ncaaw-march-mania-2021-spread                  2021-03-15 23:59:00  Playground       Knowledge         17           False 

【2】コンペ一覧の表示②: titanicで検索した一覧の表示

system("kaggle competitions list -s titanic")

#ref      deadline             category            reward  teamCount  userHasEntered  
#-------  -------------------  ---------------  ---------  ---------  --------------  
#titanic  2030-01-01 00:00:00  Getting Started  Knowledge      20578            True  

【3】コンペ・ランキングの表示: titanic

system("kaggle competitions leaderboard titanic --show")

# teamId  teamName                   submissionDate       score    
#-------  -------------------------  -------------------  -------  
#6015697  Jizhou Wei                 2020-12-16 03:13:08  1.00000  
#6023788  JaesikYang                 2020-12-17 00:11:13  1.00000  
#4364147  Börkapanda                 2021-02-12 19:23:04  1.00000  
#6027704  Eleven_Wang                2020-12-17 04:07:35  1.00000  
#6030190  Ease Gao                   2020-12-17 13:16:29  1.00000  
#5322915  Marcel Reis                2020-12-17 15:57:42  1.00000  
#5919487  Test 1                     2020-12-17 17:09:30  1.00000  
#5705094  Zeeshan Patel              2021-02-15 04:04:10  1.00000  

【4】コンペ・データセットの表示: titanic

system("kaggle competitions files titanic")

#name                   size  creationDate         
#---------------------  ----  -------------------  
#train.csv              60KB  2018-04-09 05:33:22  
#test.csv               28KB  2018-04-09 05:33:22  
#gender_submission.csv   3KB  2018-04-09 05:33:22  

【5】コンペ・データセットのダウンロード・解凍・head表示: titanic

#データ・ダウンロード
system("kaggle competitions download titanic")

dir()
#[1] "R.Rproj" "titanic.zip"  

#unzip解凍
system("unzip titanic.zip")

#表示
system("head train.csv")
#PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
#1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S
#2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C
#3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S
#4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S
#5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S
#6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q
#7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S
#8,0,3,"Palsson, Master. Gosta Leonard",male,2,3,1,349909,21.075,,S
#9,1,3,"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",female,27,0,2,347742,11.1333,,S

system("head test.csv")
#PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
#892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q
#893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S
#894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q
#895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S
#896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S
#897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S
#898,3,"Connolly, Miss. Kate",female,30,0,0,330972,7.6292,,Q
#899,2,"Caldwell, Mr. Albert Francis",male,26,1,1,248738,29,,S
#900,3,"Abrahim, Mrs. Joseph (Sophie Halaut Easu)",female,18,0,0,2657,7.2292,,C

system("head gender_submission.csv")
#PassengerId,Survived
#892,0
#893,1
#894,0
#895,0
#896,1
#897,0
#898,1
#899,0
#900,1

【6】submitの履歴確認

system("kaggle competitions submissions titanic")

【7】submitの実行

試しに、サンプルデータであるgender_submission.csvで、一度submitしてみる。

system("kaggle competitions submit -f gender_submission.csv -m ok titanic")

#100%|██████████| 3.18k/3.18k [00:03<00:00, 911B/s]  Successfully submitted to Titanic - Machine Learning from Disaster

#引数
#-f: アップロードするファイル名/ファイルパス
#-m: 投稿ごとにメッセージを入れる

【8】submitの履歴を確認して、結果スコアを表示させる

system("kaggle competitions submissions titanic")

#fileName               date                 description  status    publicScore  privateScore  
#---------------------  -------------------  -----------  --------  -----------  ------------  
#gender_submission.csv  2021-03-04 13:44:04  ok           complete  0.76555      None   

ここで、Kaggleのtestデータは、基本的に、public/privateデータに分かれていて、それぞれでスコアが算出されるらしい。

Kaggleの掲示板では、publicデータで計算された、publicScoreでランキングされている。一方、最終的な成績は、privateデータ部分で計算されたprivateScoreの結果で判定されるようだ。

まとめ

Kaggleコマンドについて、Rから実行例をまとめてみた。

この機会に、実際のコンペにも参加しようと思う。

補足

kaggleコマンドのヘルプ表示

system("kaggle -h")

#usage: kaggle [-h] [-v] {competitions,c,datasets,d,kernels,k,config} ...
#
#optional arguments:
#  -h, --help            show this help message and exit
#  -v, --version         show program's version number and exit
#
#commands:
#  {competitions,c,datasets,d,kernels,k,config}
#                        Use one of:
#                        competitions {list, files, download, submit, submissions, leaderboard}
#                        datasets {list, files, download, create, version, init, metadata, status}
#                        config {view, set, unset}
#    competitions (c)    Commands related to Kaggle competitions
#    datasets (d)        Commands related to Kaggle datasets
#    kernels (k)         Commands related to Kaggle kernels
#    config              Configuration settings

その他コマンド

system("kaggle competitions list -h")
system("kaggle competitions files -h")
system("kaggle competitions download -h")
system("kaggle competitions submit -h")
system("kaggle competitions submissions -h")
system("kaggle competitions leaderboard -h")

#データセット一覧の取得
system("kaggle datasets list")

#ref                                                         title                                              size  lastUpdated          downloadCount  voteCount  usabilityRating  
#----------------------------------------------------------  ------------------------------------------------  -----  -------------------  -------------  ---------  ---------------  
#dhruvildave/wikibooks-dataset                               Wikibooks Dataset                                   1GB  2021-02-18 10:08:27            105         24  1.0              
#gpreda/reddit-vaccine-myths                                 Reddit Vaccine Myths                              215KB  2021-03-04 07:44:29             17          5  1.0              
#nickuzmenkov/ranzcr-clip-kfold-tfrecords                    RANZCR CLiP KFold TFRecords                         2GB  2021-02-21 13:29:51              7          8  0.8125           
#crowww/a-large-scale-fish-dataset                           A Large Scale Fish Dataset                          3GB  2021-02-17 16:10:44             47          8  0.75             
#landrykezebou/lvzhdr-tone-mapping-benchmark-dataset-tmonet  LVZ-HDR Tone Mapping Benchmark Dataset (TMO-Net)   24GB  2021-03-01 05:03:40              2          3  0.6875           
#fatiimaezzahra/famous-iconic-women                          Famous Iconic Women                               838MB  2021-02-28 14:56:00             10          5  0.75             
#imsparsh/musicnet-dataset                                   MusicNet Dataset                                   22GB  2021-02-18 14:12:19             26          3  1.0              
#coloradokb/dandelionimages                                  DandelionImages                                     4GB  2021-02-19 20:03:47             10          3  0.75             
#stuartjames/lights                                          LightS: Light Specularity Dataset                  18GB  2021-02-18 14:32:26              5          2  0.6875           
#nickuzmenkov/nih-chest-xrays-tfrecords                      NIH Chest X-rays TFRecords                          6GB  2021-03-04 09:26:08             12          3  0.88235295       
#mathurinache/the-lj-speech-dataset                          The LJ Speech Dataset                               3GB  2021-02-15 09:19:54              8          6  0.88235295       
#imsparsh/accentdb-core-extended                             AccentDB - Core & Extended                          6GB  2021-02-17 14:22:54              8          4  0.8125           
#shivamb/netflix-shows                                       Netflix Movies and TV Shows                         1MB  2021-01-18 16:20:26         102517       3841  1.0              
#gpreda/covid-world-vaccination-progress                     COVID-19 World Vaccination Progress               111KB  2021-03-04 08:10:11          21297        945  1.0              
#arashnic/hr-analytics-job-change-of-data-scientists         HR Analytics: Job Change of Data Scientists       295KB  2020-12-07 00:25:10          11430        631  1.0              
#michau96/restaurant-business-rankings-2020                  Restaurant Business Rankings 2020                  16KB  2021-01-30 14:20:45           5251        157  1.0              
#jsphyg/weather-dataset-rattle-package                       Rain in Australia                                   4MB  2020-12-11 10:26:12          36028        764  1.0              
#gpreda/reddit-wallstreetsbets-posts                         Reddit WallStreetBets Posts                         9MB  2021-03-04 07:43:48           2242        291  1.0              
#ayushggarg/all-trumps-twitter-insults-20152021              All Trump's Twitter insults (2015-2021)           581KB  2021-01-20 16:51:05           3768        362  1.0              
#datasnaek/youtube-new                                       Trending YouTube Video Statistics                 201MB  2019-06-03 00:56:47         129524       3642  0.7941176 

#データセット一覧をvotesでソートする
system("kaggle datasets list --sort-by votes")

#ref                                                       title                                                size  lastUpdated          downloadCount  voteCount  usabilityRating  
#--------------------------------------------------------  --------------------------------------------------  -----  -------------------  -------------  ---------  ---------------  
#allen-institute-for-ai/CORD-19-research-challenge         COVID-19 Open Research Dataset Challenge (CORD-19)    8GB  2021-03-02 04:14:53         118569       9177  0.88235295       
#mlg-ulb/creditcardfraud                                   Credit Card Fraud Detection                          66MB  2018-03-23 01:17:27         296222       7397  0.85294116       
#sudalairajkumar/novel-corona-virus-2019-dataset           Novel Corona Virus 2019 Dataset                       7MB  2021-02-28 10:05:39         307164       5270  0.9705882        
#ronitf/heart-disease-uci                                  Heart Disease UCI                                     3KB  2018-06-25 11:33:56         195378       4576  0.7647059 


#Configの確認
system("kaggle config view")

#Configuration values from /Users/[Your path]/.kaggle
#- username: [Your ID]
#- path: None
#- proxy: None
#- competition: None

参考資料

qiita.com

github.com

pypi.org

*1:https://ja.wikipedia.org/wiki/Kaggle

*2:個人的には、すでにTerminalを起動することすら、面倒になっている。。。

*3:事前に、アカウント登録をする必要がある。

【CentOSの基本コマンド①】 システム情報、CPU情報、メモリ情報を表示してみる

このコーナーでは、CentOSで使う、基本的なコマンドラインをまとめてみることにする。

第1回目として、ターミナルコマンドで、 システム情報、CPU情報、メモリ情報を表示するやり方について、 以下に示す。

システム情報

# システム情報の表示
# -a: コンピュータの種類、 ネットワークにおけるホスト名、OSのリリース番号・名称を出力
$ uname -a

# CentOS(Redhat)のバージョン確認
$ cat /etc/redhat-release
#CentOS Linux release 7.6.1810 (Core) 

CPU情報

# CPU情報の表示
$ cat /proc/cpuinfo

#grepコマンドと組み合わせて、processor Noとモデル名のみを表示
$ cat /proc/cpuinfo | grep -e "processor" -e "model name"

#processor : 0
#model name    : Intel(R) Xeon(R) Gold 5222 CPU @ 3.80GHz
#processor : 1
#model name    : Intel(R) Xeon(R) Gold 5222 CPU @ 3.80GHz
#processor : 2
#model name    : Intel(R) Xeon(R) Gold 5222 CPU @ 3.80GHz
#processor : 3
#model name    : Intel(R) Xeon(R) Gold 5222 CPU @ 3.80GHz

メモリ情報の確認

# メモリ情報の表示
$ cat /proc/meminfo

#grepコマンドと組み合わせて、トータルメモリ量のみを表示
$ cat /proc/meminfo | grep "MemTotal:"
#MemTotal:       725885112 kB