hirobiroshi’s blog

アラフォーSEの備忘録

Kaggleノートブックで「選択実行」してみた話

Kaggleでノートブックを動かしてるときに、
「ライブラリはインポートしたいけど、その後の重たい処理まで走っちゃうのはちょっと…」
って思うことありませんか?

 

自分も最初は毎回全部実行しちゃって、無駄に時間かかってました。
GPUの待ち時間が地味にストレス…)

で、最近になって知ったのが「セルを選択して実行」できるってこと。

 

やり方は超シンプル:

  1. Shift を押しながら、実行したいセル番号をクリックして複数選択

  2. 上にある Run Current Cell(実行ボタン) をポチッ

これで、欲しいところだけ実行できるんです。
「ライブラリだけ読み込みたい」とか「前処理だけやって確認したい」ってときにめちゃ便利!

なんで今まで知らなかったんだろう…っていう小ワザでした。

 

※以下 ノートブックの画面

 

 

AIツール活用: GitHubCopilotとChatGPTを使ったKaggle解析(途中)

過去のコンペである店舗売上 - 時系列予測(Store Sales - Time Series Forecasting)を

試してみます。

 

有識者もコンペを実際にやってみてひも解いていくのがいいと言っている為、

まず自身が流通業に関わるSEということもあり、興味をもっている需要予測系のコンペにて回帰分析を試してみます。

 

まず、シンプルLightGBMカーネルでsubmission.csv作成している内容を解読することから進めようと思います。

 

■ステップ

1.コメントを日本語に翻訳

 参考となるカーネルのノートブックをDLし、

 内容を説明させると「Google翻訳」より「ChatGPT」でコメントを

 抜粋して訳と解説をしてくれる。

 

2.各ブロックの内容確認

 参考となるカーネルのノートブックをDLし、

 VSCodePythonのアドオンを入れて、

 ローカルで「GitHubCopilot」と「ChatGPT」を

 組み合わせて解読してみる。

 

 処理を実行しなくても、ステップの処理前後イメージを

 解説してくれるのはとても便利です。

 

3.修正したり、他のカーネルを組み込む

 他のカーネルからよさそうな内容をまねて組み込んでみる。

 

 

 

 

 

 

 

Kaggle少し修正

以下、AIの指摘に従い、特徴量対象項目を増やしたら前回よりはスコアが上がった。

仮説としては有効な特徴量を持つ項目を絞れば、よりスコアが上がるということですね。

 

#説明変数(特徴量)と目的変数を設定
# 2025/09/26 デフォルト以下の為、特徴量対象項目を変更
# features = ['Pclass','Sex','Age']
features = ['Pclass','Sex','Age','SibSp','Parch','Fare']

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier #データ読込 train = pd.read_csv('../input/titanic/train.csv') test = pd.read_csv('../input/titanic/test.csv') #データ属性表示 #print(train.info()) # 複数列を選択する場合はリストで指定 x_train = train[["Pclass","Fare"]] print(x_train.shape) #前処理 #性別を数値化(male:0,female:1) train['Sex'] = train['Sex'].map({'male':0, 'female':1}) test['Sex'] = test['Sex'].map({'male':0, 'female':1}) #欠損値を埋める(AgeとFareを中央値で埋める) print('処理前の欠損数') print(train.isnull().sum()) # Age列の欠損値が中央値で補完されているか確認 print(test['Age'].isnull().sum()) # Age列の欠損値が中央値で補完されているか確認 train['Age'] = train['Age'].fillna(train['Age'].median()) test['Age'] = test['Age'].fillna(test['Age'].median()) test['Fare'] = test['Fare'].fillna(test['Fare'].median()) print('処理後の欠損数') print(train.isnull().sum()) # Age列の欠損値が中央値で補完されているか確認 print(test['Age'].isnull().sum()) # Age列の欠損値が中央値で補完されているか確認 #説明変数(特徴量)と目的変数を設定 # 2025/09/26 デフォルト以下の為、特徴量対象項目を変更 # features = ['Pclass','Sex','Age'] features = ['Pclass','Sex','Age','SibSp','Parch','Fare'] X = train[features] y = train['Survived'] #モデル学習 model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X, y) #予測 X_test = test[features] predictions = model.predict(X_test) #提出用ファイル作成 output = pd.DataFrame({ 'PassengerId': test.PassengerId, 'Survived': predictions }) output.to_csv('submission.csv', index=False) print("submission.csv出力完了しました!")

 

 

Kaggle提出の流れ(備忘メモ)

ひとまず、「年齢」と「運賃」を中央値で欠落埋めて、

 ※ChatGPTさんに聞いた内容より


import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

#データ読込
train = pd.read_csv('../input/titanic/train.csv')
test = pd.read_csv('../input/titanic/test.csv')

#データ属性表示
#print(train.info())
# 複数列を選択する場合はリストで指定
x_train = train[["Pclass","Fare"]]
print(x_train.shape)

#前処理
#性別を数値化(male:0,female:1)
train['Sex'] = train['Sex'].map({'male':0, 'female':1})
test['Sex'] = test['Sex'].map({'male':0, 'female':1})


#欠損値を埋める(AgeとFareを中央値で埋める)
print('処理前の欠損数')
print(train.isnull().sum())  # Age列の欠損値が中央値で補完されているか確認
print(test['Age'].isnull().sum())  # Age列の欠損値が中央値で補完されているか確認



train['Age'] = train['Age'].fillna(train['Age'].median())
test['Age']  = test['Age'].fillna(test['Age'].median())
test['Fare'] = test['Fare'].fillna(test['Fare'].median())


print('処理後の欠損数')
print(train.isnull().sum())  # Age列の欠損値が中央値で補完されているか確認
print(test['Age'].isnull().sum())  # Age列の欠損値が中央値で補完されているか確認

#説明変数(特徴量)と目的変数を設定
features = ['Pclass','Sex','Age']
X = train[features]
y = train['Survived']

#モデル学習
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)

#予測
X_test = test[features]
predictions = model.predict(X_test)

#提出用ファイル作成
output = pd.DataFrame({
    'PassengerId': test.PassengerId,
    'Survived': predictions
})

output.to_csv('submission.csv', index=False)



print("submission.csv出力完了しました!")
  

 

 

All Runする

バージョン保存する

 

左下の対象結果よりビューア選択

 

Submit to Competition

 

Submit

 

そのまま提出したデータよりスコア下がっている。

 

ChatGPTに聞いてみると

ひとまず、情報が少なすぎたということかな。
改善案は出てきたので、明日か週明け試そう。

 



Kaggleに手を出してみる

文系出身でアラフォーになって管理業務がメインの為、

何かしら社外で技術的ことができないか考えて6年ぶりにKaggleに手を出してみました。といってもまだタイタニックでうんうん悩んでいます。

 

ただし、正直6年前の当時は、課題に詰まったらその先どうやって

進めていいかわからず悩んでいるうちにモチベーションが低下してしまいました。

 

昨今は生成AI(ChatGPT、GitHubCopilot等)が悩みに対して

100点ではなくても方向性を示してくれる為、

前より何かしら進められるのではと勝手な期待感を感じています。

 

まずは、1つくらいコンペに出ることを目的として

やってみたいと思います。

レガシーエンジニアが「新刊書籍がリリースされたらLINEへ自動通知するDjangoアプリを開発しよう」をやってみた

Sinyさんがnoteで提供している

「新刊書籍がリリースされたらLINEへ自動通知するDjangoアプリを開発しよう」

やってみた。

結論としては、手軽にWEBアプリ作れて楽しかった!!

f:id:hirobiroshi:20190623113025p:plain

楽天アプリ

 

<動機>

普段の業務ではレガシーな技術(VB6やCOBOL)で開発しているけど、

たまにはモダンな技術(pythonとか)を使って、WebApiとLineを連携したWebアプリ作りたいと思っていた。そこで、簡単に作れて面白いやつないかなと探したところ…。

 ⇒あるじゃん!

 

<良かった点>

・自分のようなpython初心者でも、お手軽にWEBアプリ公開の手順が学べる。

・LINE連携するので一般人にもアプリ内容が伝わりやすい。(自慢できる!?)

 

<個人的振り返り> 

・環境の問題なのか(Win7にて作業)、Herokuデプロイ時にうまくデプロイできなかったので色々調べる必要があった。(requirement.txtに必要なライブラリが書き込まれない?等)

 ⇒結果的にいい勉強となった気がする。

・レガシー技術で身につけた不具合調査のコツなどは、モダンな言語でも活用できる。(効率的な開発には、しっかり言語やフレームワークの勉強が必要だと思うが)

 

<今後>

スキルアップの為、各コーディングの意図について分析し、他のアプリ作成にも応用できるようにしたい。

・また、ヘッダーのソートオプション等が有効でないので、原因分析して修正してみたい。

 

 

 



書籍『はじめよう! 要件定義 ~ビギナーからベテランまで』感想

 

 

商品の詳細

Amazon.co.jp: はじめよう! 要件定義 ~ビギナーからベテランまで: Kindleストア

 

●内容

 要件定義とはどういうもので、成果物、何時、何故、どのようにやるのかということについて説明がされています。

 

例)要件定義の成果物は、ソフトウェア作成に必要な情報(UI、機能、データ) であり、特にユーザが唯一評価できるUIが大事。

 

●個人的に思ったこと

 イラストがふんだんでわかりやすいです。作者自体おっしゃっていることですが、

重要なところに絞り込んで説明している為、本当にわかりやすいです。

  自分はあまり要件定義の経験をつんでこなかった為、どんな作業があるのか学びたいと思って手を出しました。細かいところについては別の書籍で補う必要がありますが、

概要をつかむ上では良著かと思います。