0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Kaggle初心者】環境系院生がKaggleを始めてみた(Day1)

0
Last updated at Posted at 2026-05-03

はじめに

環境工学専攻の修士2年です。
学部時代はプログラミングとは無縁でしたが、指導教員のせい(=おかげ)で機械学習を学び始めました。(いつもありがとうございます)
最近Kaggleを始めたので、学習記録として残していこうと思います。

初心者の方・これから始めようと思っていた方は一緒に頑張りましょう!!
有識者の方々、アドバイス等ございましたらぜひお願いいたします。

今日やったこと

  • Kaggle登録
  • Predicting F1 Pit StopsのEDAなど

ここでお詫びがあります。本来Kaggle登録の後にTitanicHouse Pricesというチュートリアルコンペを行うのですが、すでにやったことがあったので先に行っています・・追ってチュートリアルについて【Day0】を作成しようと思います。

Kaggle登録

  1. メアドなどを登録

    ログインすると以下のような画面に遷移
    image.png

    英弱なのでさっそく挫折しかけるが、なんとかlearn to compete on Kaggle(チュートリアル的なやつ)をクリック

  2. 実際にコンペを解く

    Begginerを選択するとTitanicHouse Prceなどの典型的なチュートリアルを解くことが出来ます。Begginerでは先人が作っているチュートリアル用のノートブックが存在するので、それを実行するだけで教師あり学習の概要が分かるようになっていました。今回はIntermediateからPredicting F1 Pit Stops(F1のピットインを予測せよ)を選択。

Predicting F1 Pit Stops

260501から始まり260531まで続くコンペらしい。何回投稿できるやら。

どうやら開催中のコンペでは核心に触れるようなことを記載するのは規約上ダメっぽいのでさらっと流すかも知れません。(私程度が核心に触れられるのか微妙ですが一応)

ここではどういう風にKaggleを使用するのか・勉強するのかについて記載しようと思います。

image.png

あんまよく分かってないんですけど、ノートブックは新規作成でいいんですかね?画面左上の+Createからnotebookを選択すると作成できました。

作成するとデフォルトでnumpy・pandasがimportされていた。またデータ取得用のpathも書かれている。

全体的な流れ

教師あり学習の基本的な流れについてはこのページを参考にしてください。

まずは問題設定について確認ですね。

問題設定の理解

今回の問題はF1ドライバーが次に周でピットインするかどうか予測するです。YES or Noの分類タスクと言えます。

上記のサイトでも触れていますが、問題理解は特徴用エンジニアリングの観点から非常に重要と言えます。私はF1についてよく知らないので、簡単にchatGPTに聞いてみました。

■ F1(フォーミュラ1)とは

  • 世界最高峰の自動車レース
  • サーキットを約50〜70周走行し、最も早くゴールしたドライバーが勝利
  • 単純なスピードだけでなく「戦略」が非常に重要

● 重要な特徴

  • レース中にタイヤ交換(ピットストップ)が必要
  • タイヤは使うほど劣化し、ラップタイムが遅くなる
  • 「いつタイヤ交換するか」が勝敗を左右する

だそうです(笑)。つまり与えられたデータから次のラップでタイヤ交換しに行くか当てろと言われています。確かにラップタイムやレースの進行状況などで当てられるかもしれませんね。

データはどこだ

次に訓練データの中身をチェックします。がその前に、データどこやねん。Kaggleというプラットフォームを使い始めたばかりなのでシンプルにKaggleの使い方が分かっていません。

10分後・・・

ありました。下の画像のDataに訓練・評価データがあります。右からそれぞれのデータセットの概要を確認できます。
image.png

ノートブックでどう使うかなんですが、画面右の+Add Inputから問題のタイトルを入力するとOKです。
image.png

ここからデータを読み込み・確認していきます。

# read_csv in training data
path = "/kaggle/input/competitions/playground-series-s6e5/train.csv"
df_train = pd.read_csv(path)

print(df_train.head(3)) # 上から3行出力
print(df_train.columns) # 列名チェック
df_train.info()      # その他いろいろ確認

いろいろ出てきますが重要なのは列名とデータの型とかかな?

データの列名
Index(['id', 'Driver', 'Compound', 'Race', 'Year', 'PitStop', 'LapNumber',
       'Stint', 'TyreLife', 'Position', 'LapTime (s)', 'LapTime_Delta',
       'Cumulative_Degradation', 'RaceProgress', 'Position_Change',
       'PitNextLap'],
      dtype='object')

データの型
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 439140 entries, 0 to 439139
Data columns (total 16 columns):
 #   Column                  Non-Null Count   Dtype  
---  ------                  --------------   -----  
 0   id                      439140 non-null  int64  
 1   Driver                  439140 non-null  object 
 2   Compound                439140 non-null  object 
 3   Race                    439140 non-null  object 
 4   Year                    439140 non-null  int64  
 5   PitStop                 439140 non-null  int64  
 6   LapNumber               439140 non-null  int64  
 7   Stint                   439140 non-null  int64  
 8   TyreLife                439140 non-null  float64
 9   Position                439140 non-null  int64  
 10  LapTime (s)             439140 non-null  float64
 11  LapTime_Delta           439140 non-null  float64
 12  Cumulative_Degradation  439140 non-null  float64
 13  RaceProgress            439140 non-null  float64
 14  Position_Change         439140 non-null  float64
 15  PitNextLap              439140 non-null  float64
dtypes: float64(7), int64(6), object(3)
memory usage: 53.6+ MB

列名が英語すぎてつらいですが、生成AIに解説お願いすると以下のよう教えてくれました。

● 基本情報

  • id
    データ識別用のID

  • Driver
    ドライバー名

  • Race
    レース名

  • Year
    開催年


● タイヤ・走行状態(重要)

  • Compound
    タイヤの種類

    • Soft:速いが劣化が早い
    • Medium:バランス型
    • Hard:遅いが長持ち
  • TyreLife
    タイヤ使用開始からの周回数
    → 大きいほど劣化している

  • Stint
    タイヤ交換ごとの区間番号
    → 1回目のタイヤ、2回目のタイヤなど


● レース進行

  • LapNumber
    現在の周回数

  • RaceProgress
    レース進行度(0〜1)
    → 例:0.5 = レースの半分


● ピット関連(非常に重要)

  • PitStop
    そのラップでピットに入ったか

    • 1:入った
    • 0:入っていない
  • PitNextLap
    次のラップでピットに入るか
    → 戦略予測に利用される


● パフォーマンス

  • LapTime (s)
    1周にかかった時間(秒)
    → 小さいほど速い

  • LapTime_Delta
    前のラップとの差分
    → 正:遅くなった(劣化など)

  • Cumulative_Degradation
    タイヤ劣化の累積量
    → パフォーマンス低下の指標


● 順位・結果

  • Position
    現在の順位(1位がトップ)

  • Position_Change
    順位変動
    → 正:順位アップ、負:ダウン

いろいろ情報が多いので工夫のしがいがありそうです。

ということで今回はここまで。次回からEDAと呼ばれる基本的なデータセットの確認を行おうと思います。が、どうやら問題の核心に触れるようなことは規約上ダメっぽいのでさらっと流すかも知れません。(私程度が核心に触れられるのか微妙ですが一応)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?