1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AutoGymデータサイエンスコースでの3か月で学習した内容

Posted at

受講したきっかけと受講前の私のレベル
私は現在文系の大学3年生であり、2022年の秋学期から休学している。統計学の授業をとったのをきっかけにデータサイエンスに興味を持ち、データサイエンティストとして就職することを目標に休学を決断した。プログラミング経験は全くなく、8月はprogateなどを活用してpythonを最も基本の部分から学習を開始した。この時同時に統計検定二級の学習も並行していた。

その後pythonや統計学の基礎的な学習は一通りしたものの、学習計画や学習の中身について質問できる環境が欲しいと考え8月中旬あたりからスクールを探した。AutoGymに決めた理由としてはチャットでの質問対応だけでなく週一回の面談があることでメンターと週単位での計画について相談できること、教材としてKaggleに取り組めること、相対的に安価であったことがあげられる。

実際の学習内容 
9月
三か月のうちの最初の一か月はLaibraというプログラミング学習サイトを利用してnumpyやpandasからscickit-learnやkerasなどの機械学習ライブラリについて基礎を学んだ。

10月
Laibraが終わると次に前処理やEDAにおいて大事となってくる処理を『データサイエンス100本ノック 構造化データ加工編ガイドブック』を使って学んだ。このあとデータサイエンスコンペに取り組むうえでこの本にあったことの重要性が分かってきました。またシンプルに多くのコードに触れたことで基本的なプログラミングに対する理解も少しずつできたのではないかと感じている。
例:054: 顧客データデータフレーム(df_customer)の住所(address)は、埼玉県、千葉県、東京都、神奈川県のいずれかとなっている。都道府県毎にコード値を作成し、顧客ID、住所とともに抽出せよ。値は埼玉県を11、千葉県を12、東京都を13、神奈川県を14とすること。結果は10件表示させれば良い。

100本ノック
df_customer_tmp = df_customer[['customer_id', 'address']].copy()
df_customer_tmp['prefecture_cd'] = df_customer['address'].str[0:3].map({'埼玉県':'11',
                                                                       '千葉県':'12',
                                                                        '東京都':'13',
                                                                        '神奈川':'14'})
df_customer_tmp.head(10)

11月
三か月目はデータサイエンスコンペに取り組んだ。まずKaggleのチュートリアルであるTitanicやHouse Pricesを解答を見ながら取り組むことで流れを把握した。最初に基本的なフォーマットを知れたことでそのあとSignateのコンペに自力で取り組むときにもスムーズに進められた。
自力で取り組む際は『Kaggleで勝つ データ分析の技術』を主に使用することでそれなりに精度も上げることができた。
この段階では安易に質問することを避けてできる限り自分で調べることを大切にした。最初は全くわからないエラーが出ても案外何とかなることを知った。
以下一部抜粋

Signate練習問題
lgb_params = {"objective":"regression", 
              "metric":"mse"}
cat_features = {"origin", "car name"}
evaluation_results = {}
scores = []

kf = KFold(n_splits = 5)
for tr_index, va_index in kf.split(train_x):
  tr_x, va_x = train_x.iloc[tr_index], train_x.iloc[va_index]
  tr_y, va_y = train_y.iloc[tr_index], train_y.iloc[va_index]
  
  lgb_train = lgb.Dataset(tr_x, tr_y)
  lgb_eval = lgb.Dataset(va_x, va_y)
  
  model = lgb.train(lgb_params, num_boost_round=500,
                    categorical_feature=cat_features,
                    verbose_eval=20, 
                    evals_result=evaluation_results,
                    early_stopping_rounds=10,
                    train_set=lgb_train,
                    valid_sets=[lgb_train, lgb_eval], valid_names=["Train", "Valid"])

講座の感想
やはり週一回の面談は自分に合っていたと思う。モチベーションを保つことができたり、チャットでわざわざ質問しないような細かいこともさらっと聞けたのが良かった。内容面は自分のペースでサクサク進められる教材だったので独学しているのと感覚的には変わらず、プラスして質問がしやすい環境だったのでモチベーションの高い生徒にとっては非常に良いと感じた。

今後の展望
休学を決めた段階から長期インターンをする予定だったので、可能であればデータサイエンスに関するインターンをすることで実務経験を得たいと考えている。ただ最近はもし厳しいようだったら興味のある業界に関するドメイン知識を得るためにデータサイエンスと関係ない職種でも悪くはないかなと考え始めた。その場合はKaggleに集中することでメダル獲得まで挑戦したい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?