Kaggleに続いて、SIGNATEに参加してみました。
公式サイトによると、SIGNATEは、「テクノロジーによってあらゆるものが進化していく時代の中で、AI/データ分析人材をエンパワーする国内唯一のプラットフォーム」です。
私は、データ分析スキルを向上させたいと思い、SIGNATEに登録しました。
この記事では、SIGNATE登録から、コンペ参加、投稿までの流れを紹介します。
SIGNATE登録
下記の記事を参考にしました。
まずSIGNATEのサイトにアクセスします。
https://signate.jp
無料で会員登録または右上の会員登録をクリックし、メールアドレス、パスワード、ユーザ名を入力します。
また、誕生年、社会人/学生、最終学位(学生の方は取得予定)、卒業区分、卒業(予定)年月または中途退学年月を入力する必要があります。
コンペに参加する際には、電話番号の入力が求められます。
ユーザ名とプロフィール写真を除く情報は、本人の許可なくSIGNATEのサイト上に公開されることはないとのことです。
SIGNATEに登録することで、Registeredの称号を獲得することができました。
SIGNATEには7つの称号があり、それぞれ獲得条件があります。
- Grandmaster
金メダル3個以上(うち1個は個人参加で獲得) - Master
メダル合計3個以上(うち1個は金メダル) - Expert
メダル合計2個以上(うち1個は銀メダル以上) - Advanced
メダル合計1個以上 - Intermediate
上位60%を1回以上、称号限定コンペ指定閾値以上 - Beginner
投稿1回以上 - Registered
本登録会員
投稿1回以上でBeginnerを獲得できるということで、今回はBeginner獲得を目指しました。
コンペ参加
公式サイトでおすすめされていたため、タイタニックの生存予測に参加しました。
まず、データタブから学習用データ(train.tsv)、評価用データ(test.tsv)、応募用サンプルファイル(sample_submit.tsv)をダウンロードしました。
解析環境にGoogle Colaboratoryを用いるため、ダウンロードしたデータはGoogle Driveに移動します。
私は、Google Driveにtitanicディレクトリを作成し、titanicディレクトリにtrain.tsv、test.tsv、sample_submit.tsvを移動しました。
そして、Google Colaboratoryを起動し、コードを書いていきます。
u++さんのKaggleのNotebookを参考にさせていただきました。
https://www.kaggle.com/code/sishihara/upura-kaggle-tutorial-01-first-submission/notebook
# NumPyとpandasのインポート
import numpy as np
import pandas as pd
# データの読み込み
train = pd.read_csv("/content/drive/MyDrive/titanic/train.tsv", sep='\t')
test = pd.read_csv("/content/drive/MyDrive/titanic/test.tsv", sep='\t')
sample_submit = pd.read_csv("/content/drive/MyDrive/titanic/sample_submit.tsv", sep='\t', header=None)
# trainとtestの連結
data = pd.concat([train, test], sort=False)
# 欠損値の確認
data.isnull().sum()
# データ前処理
# sex
data['sex'].replace(['male','female'], [0, 1], inplace=True)
# embarked
data['embarked'].fillna(('S'), inplace=True)
data['embarked'] = data['embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int)
# age
data['age'].fillna(data['age'].median(), inplace=True)
# 学習データとテストデータの抽出
train = data[:len(train)]
test = data[len(train):]
y_train = train['survived']
X_train = train.drop('survived', axis = 1)
X_test = test.drop('survived', axis = 1)
# 機械学習
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
clf = make_pipeline(StandardScaler(), SVC())
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
clf.score(X_train, y_train)
スコアは0.8426966292134831でした。
# データの出力
sub = sample_submit
sub[1] = list(map(int, y_pred))
sub.to_csv("/content/drive/MyDrive/titanic/submit.tsv", sep='\t', index=False, header=False)
submit.tsvが出力されたことを確認したら、コンペのサイトに移動します。
https://signate.jp/competitions/102
右下の投稿をクリックし、ファイルを選択からsubmit.tsvをアップロードします。
これにより、結果を提出することができました。
このように、投稿済みファイルタブに、アップロードしたファイルが表示されました。
暫定評価(0.8005918)も表示されています。
コンペに参加し、投稿を行ったことにより、Beginnerを獲得することができました。
次はIntermediate獲得を目指します。