SIGNATEに参加してみた

https://qiita.com/wawana12/items/dd733fac4ce3f5bdd7ad

Kaggleに続いて、SIGNATEに参加してみました。

公式サイトによると、SIGNATEは、「テクノロジーによってあらゆるものが進化していく時代の中で、AI/データ分析人材をエンパワーする国内唯一のプラットフォーム」です。
私は、データ分析スキルを向上させたいと思い、SIGNATEに登録しました。
この記事では、SIGNATE登録から、コンペ参加、投稿までの流れを紹介します。

# SIGNATE登録
下記の記事を参考にしました。

まずSIGNATEのサイトにアクセスします。
https://signate.jp
![スクリーンショット 2023-12-03 14.59.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/c44ea69e-140f-ba07-1171-f9400011d19a.png)

無料で会員登録または右上の会員登録をクリックし、メールアドレス、パスワード、ユーザ名を入力します。
また、誕生年、社会人/学生、最終学位（学生の方は取得予定）、卒業区分、卒業(予定)年月または中途退学年月を入力する必要があります。
コンペに参加する際には、電話番号の入力が求められます。
ユーザ名とプロフィール写真を除く情報は、本人の許可なく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獲得を目指しました。

# コンペ参加
公式サイトでおすすめされていたため、タイタニックの生存予測に参加しました。

https://signate.jp/competitions/102

まず、データタブから学習用データ（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

```Python
# NumPyとpandasのインポート
import numpy as np
import pandas as pd
```
```Python
# データの読み込み
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)
```
```Python
# trainとtestの連結
data = pd.concat([train, test], sort=False)
```
```Python
# 欠損値の確認
data.isnull().sum()
```
```Python
# データ前処理
# 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)
```
```Python
# 学習データとテストデータの抽出
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)
```
```Python
# 機械学習
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でした。
```Python
# データの出力
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
![スクリーンショット 2023-12-03 15.43.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/3e66c19f-c8ad-fa29-50b2-77404f216cda.png)

右下の投稿をクリックし、ファイルを選択からsubmit.tsvをアップロードします。
これにより、結果を提出することができました。

![スクリーンショット 2023-12-03 15.48.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/bcf96474-e75a-3733-d3e3-4d71d87a05fa.png)

このように、投稿済みファイルタブに、アップロードしたファイルが表示されました。
暫定評価（0.8005918）も表示されています。

コンペに参加し、投稿を行ったことにより、Beginnerを獲得することができました。
次はIntermediate獲得を目指します。