Kaggleをとりあえず触ってみて少しづつ予測や分類を理解していくぞ!

最初の段階でタイタニックを触ることが普通かもしれませんが、この書籍でも触れてますがタイタニックは軽く触るくらいでいいと思います。 順位もあまり動かないですし、モチベも続かないと思うので他のコンペに早く参加したほうが楽しい気がします。 私は今開催されているこちらのコンペに参加しています。こちらのコンペは基となったデータから似たような特徴量を作成したものになります。中身はテーブルデータなうえに “id” と数値データのみなのでとっつきやすいと思います。 とりあえず中を見てみます。 <class 'pandas.core.frame.DataFrame'> RangeIndex: 19219 entries, 0 to 19218 Data columns (total 35 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 id 19219 non-null int64 1 X_Minimum 19219 non-null int64 2 X_Maximum 19219 non-null int64 3 Y_Minimum 19219 non-null int64 4 Y_Maximum 19219 non-null int64 5 Pixels_Areas 19219 non-null int64 6 X_Perimeter 19219 non-null int64 7 Y_Perimeter 19219 non-null int64 8 Sum_of_Luminosity 19219 non-null int64 9 Minimum_of_Luminosity 19219 non-null int64 10 Maximum_of_Luminosity 19219 non-null int64 11 Length_of_Conveyer 19219 non-null int64 12 TypeOfSteel_A300 19219 non-null int64 13 TypeOfSteel_A400 19219 non-null int64 14 Steel_Plate_Thickness 19219 non-null int64 15 Edges_Index 19219 non-null float64 16 Empty_Index 19219 non-null float64 17 Square_Index 19219 non-null float64 18 Outside_X_Index 19219 non-null float64 19 Edges_X_Index 19219 non-null float64 20 Edges_Y_Index 19219 non-null float64 21 Outside_Global_Index 19219 non-null float64 22 LogOfAreas 19219 non-null float64 23 Log_X_Index 19219 non-null float64 24 Log_Y_Index 19219 non-null float64 25 Orientation_Index 19219 non-null float64 26 Luminosity_Index 19219 non-null float64 27 SigmoidOfAreas 19219 non-null float64 28 Pastry 19219 non-null int64 29 Z_Scratch 19219 non-null int64 30 K_Scatch 19219 non-null int64 31 Stains 19219 non-null int64 32 Dirtiness 19219 non-null int64 33 Bumps 19219 non-null int64 34 Other_Faults 19219 non-null int64 dtypes: float64(13), int64(22) memory usage: 5.1 MB 中身は数値データで最後の7カラムが予測対象の列になります。それから欠損値はないみたいなので、欠損値については考えなくてよさそうです。 ...

2024年3月18日

仕事でミスが発生した場合、何を考えるか?どう対応するか?

人間が管理・作業をする以上ミスをするものだと思います。その度に反省して再発防止策を考えてシステム的にミスが起きないようにします。それを怠ったら同じミスが再発するわけですが… ちなみに私はよくミスを発生する人間だと自負しています。そんなこと自負するなと思いますが、学生のころからよくやっていたので折り紙つきです。 そう考えると短所は注意散漫になるのでしょうか?ケアレスミスや誤字脱字、表の線引きがずれてる等細かいところはよくあります。(毎日ではないですがレビューの時は6,7割) エンジニアであれば過去のプログラムを参考に現行のプログラムを作ったり修正したりするでしょう。その過去のプログラムの一部が間違っていてかつ自身が作ったということが多いです。頻度は1年に1回ぐらいだと思いますが…多分 ケアレスミスや誤字脱字はまだしも、プログラムの仕様が異なるは大事です。想定されていたものと異なるものができているわけですから。データを作る人だったら一部のデータが想定されたデータと異なるというとこでしょうか。 お客さん側から指摘されれば謝罪→修正→リリース→再発防止策という流れで進むでしょうが、お客さん側も気づかず、自身が気づいた場合はどうでしょうか?さらにそれが本人が作った物であればどうするか?が本題です。 他人が作ったものの場合は本人に直接聞くのが一般的だと思います。その後、本人からチームの人に共有してもらうのが波風立たないですね。勝手に"こんなミスがありました"という話をするとその人のメンタルに大ダメージを負っちゃいますので… それでは自身が作ったものの場合はどうでしょうか?上司やチームの人の相談しますか?見なかったふりをしますか?誰にも言わず修正しますか?私は葛藤したのちに相談するタイプです。隠蔽の考えがよぎるのですが、先々を考えるとまずいので相談します。 相談については メリット:将来他の人に迷惑が掛からない デメリット:信用が下がる、怒られる、状況によっては自社に損害が発生する まあ自身へのメリット少ないですが将来膨らむ迷惑や負債は潰せますね。デメリットの2つはまだしも損害発生は大事ですね。どうしようもないものはどうしようもないですが 見なかったふりについては メリット:近々自身が辞めるもしくは抜ける予定ならば保身になる デメリット:将来他の人に迷惑をかける、ばれないかなどでメンタルがやられる 所謂 “爆弾” や “負債” を残す形になります。保身のために言わない人も多そうですが、サイコパスでなければずっと頭をよぎりますし、他の人に押し付けるのはどうかと思います。周りがそんな人たちばかりなら速攻辞める職場ですね。 次にしれっと修正するついては メリット:ばれなければ誰にも迷惑をかけない デメリット:記録に残さなければ同じミスを再発する可能性がある そもそもしれっと直せるような状況はあまりない気がしますが迷惑を一番かけない形になる気がします。ただ、同じミスは再発する可能性が高いですね。そこで終われば大体忘れるものですから。 いずれにせよ障害の対応になるので自身にとっていいことは起こらないのですが、他の人にどれだけ迷惑をかけるかが変わるので正直に話しましょう。 この話をしたのは直近で自身のミスに気付いたからですね。迷ったんですがしっかり話して、リカバリーと再リリースを早く実施して対応したので将来的に良かったと思います。自身の評価は下がった気がしますけどね(笑) まあ反省はしても落ち込まずどうしようもなくなったら “辞めてやるし、別のいい環境で頑張るわ!” くらいの心持をしましょう!誰にでも何とでもできますので、多分。ではでは

2024年3月15日

E資格が終わったので実践としてKaggleにも挑戦してみよう!

G検定に続きE資格も無事取得できたので今度は統計検定準1級やDS検定になるかと思いますが、一旦受験関係はやめてKaggleに挑戦しようと思います。 英語という観点では少し不利ですが、名前はよく知られてますし英語の練習にもなるかもしれないのでこちらを選びました。日本語が良ければSIGNATEというコンペがあります。 まずKaggleとはなんぞやということですが、競技プログラミングのデータサイエンティスト版ですね。要件を確認して、入力データを見て、予測や分類を行い、csvファイルを提出してスコアを競うという流れですね。 Kaggleの始め方は該当のページに飛んでアカウントを作成してください。メールアドレスまたはGoogleアカウントですぐに始められます。 そもそもKaggle以前にプログラム自体に触ったことがない人もいるかと思います。そんな人はpythonの勉強から始めましょう!こちらからKaggle内で勉強することもできます。pythonやpandasはもちろん、データの可視化、機械学習や深層学習、SQLも勉強できます。 プログラムが書けるようになったらいよいよ挑戦することになると思いますが、データ分析で一番重要なのはデータへの理解と加工だと考えています。 どんなデータが使われているか?、どの変数がどんな型になっているか?、外れ値や欠損値が含まれているか?、各変数の相関関係はどうか?など確認すべき点は多いです。また、そのデータに対する加工が適切かどうかも考えないといけません。欠損値は削除すべきか埋めるべきか?外れ値としてみるべきか? 8割くらいがデータへの理解と加工が重要だと思うのでこちらをさらっと流し見するといいかもです。ただ、プログラムはほぼ書いておらず図の見方やデータの確認方法がメインなので流し見でいいかと思います。 Kindle Unlimitedであればただで見れるので入っておくことをおススメします。サブスクで月額300円くらいですし、他のためになる本やくだらない本も読めますので本を読むいいきっかけになると思います。ただで見れるので細かく見ずわかってる場所は飛ばして、さらっと見ていきましょう。 次はこちらですね。たくさんの人がおすすめしてますが、データの加工方法からモデルの作成と評価、細かいポイントまで記載しています。私もまだ読み始めですが、目次を見た限りだとこれを見ればデータ分析が十分できると思います。画像や自然言語処理、GANなどは触れてないですが… 本を読みながらKaggleを触っていくのがいいと思います。よくタイタニックがおすすめされていますが、ランキングはほぼ変わらない上にやる気に繋がりにくいので今開催されているコンペに出るといい気がします。 賞金のほうでもいいですし、SwagやKnowledgeでもいいと思います。最初は上を目指さず、自身でいろいろ試して解答を提出して、他の人のコードを覗いたりDiscussionに参加したりするといいと思います。思わぬアイデアが埋まってたりしますし、知らないですが… とまあこんな感じで参加しようと思います。まずはテーブルデータのコンペから参加してみて、ゆくゆくは画像系とかやってみたいですね。ではでは

2024年3月13日

E資格(エンジニア資格)2024#1に無事合格したのでそれまでの話をつらつらと

E資格について昔話したと思いますが(こちら)、結果はどうだったか、どんな勉強をしたのかを話していこうかと思います。 まずこちらでJDLAが2024年第一回E資格の結果発表が出ています。合格率や平均得点率、年代・業種・職種・役職別の合格者数が出てます。 私の結果がこんな感じです。 応用数学と開発環境は6割切ってますが、機械学習と深層学習は7割近くになってますね。ちなみに今のタイミングでX(旧: Twitter)で"E資格"を調べると他の人の得点率を見れます。落ちた人の結果を見ると機械学習と深層学習の得点率が低かったみたいです。 問題数から見ると応用数学と開発環境は出題数が少ないので最悪ほぼ取れなくても問題なさそうです。機械学習と深層学習が問題数多いのでこちらを抑えればいけそうな気はしてます。 結果はこんな感じでしたが勉強方法は割とシンプルです。 前にもお話ししましたが私はStudy-AIを使って認定証を取りました。Study-AIでは模擬試験とその解説、過去問(32問分)がありますのでそこを徹底的に理解し、満点取れるまでやりました。 他の方法だと黒本だったり参考書をチェックしたりですかね?それからデータ加工のプログラムは仕事で使ってるので “np.array” だったり、論文で書かれてることはこんな書き方できそうだなというのはなんとなくわかります。実際にプログラムを動かすのは大事ですね。 何度も話してますが資格はあくまで資格なので実際に実装できたり、知識を活用していくことが大切だと思います。資格を取って終わり、じゃなくどう活用していくか?なのでそろそろKaggleに挑戦してみようかと思います。ではでは。

2024年3月10日

pythonの仮想環境構築をいくつかやったので使ってみた感想を書く

前回の続きになります。 前回は仮想環境が必要なの?というテーマで書いてみましたが、とはいえ使えるに越したことはないので実際に試してみて使った感想を残そうと思います。 今回仮想環境を構築するにあたって試してみたのは以下 pip venv pyenv(環境的に使えなかった) pipenv poetry docker(環境的に使えなかった) Rye(環境的に使えなかった) 一応ざっくりと説明すると ライブラリのインストール:pip、pipenv、poetry 仮想環境の構築:venv、pipenv、poetry、docker pythonのバージョン管理:pyenv、docker 一般的に組み合わせとしては pip + venv + pyenv pipenv + pyenv poetry + pyenv docker + pipenv あたりだと思います。私も依存関係とかは詳しくないのでそうなんだという認識ですが… まずは “pip” 、pythonユーザーであれば皆さん使用してるので説明は省きますが、標準ライブラリで馴染みがあるものですね。 次は “venv” 、昔はvertialenvが使われていたみたいですがそれが標準ライブラリになったものです。vertialenvとは別物ですが使い方は同じですね。 仮想環境の作成や有効化ができ、標準ライブラリなので様々な教材でも使用されると思います。有効化に面倒な設定があったり、自動化やライブラリ一覧の出力にも手間がかかるので少し使いにくいですが、覚えておいた方がいいですね。vscode使うならインタープリターの選択で有効化できますが… 次は “pyenv” です。私の環境ではシステム環境変数をいじれないので使えませんでした。 pythonのバージョンがインストールできず、localやglobalの設定もできない状況でした。使えなくて残念ですが、vscodeのインタープリターで選択すれば問題ないのでいいかと あるいはユーザー環境変数で任意のpythonバージョンのPATHを上に移動させるとかですかね。 次は “pipenv"です。こちらはライブラリのインストールと環境変数の作成が一体化した便利なライブラリになっています。 個人的には一番使いやすく感じました。仮想環境構築のしやすさ、ライブラリ一覧の自動化は便利だなと感じました。制限がなければ “pipenv + pythonのバージョン管理” が一番楽な気はします。 ただ、インストールの遅さや抱えてる問題もあるみたいなのでpipenvさえあればいいとは思いませんが、優先度は高いというイメージですね。 次は “poetry” です。使う用途としては"pipenv"と同じですが、異なる点で言うとPyPIにビルド・公開ができるという点になります。 PyPIにビルド・公開することはあまりないので、そうなるとpipenvとの使いやすさを比べてどうか?ということになりますが、使いやすさはpipenvに軍配が上がります。 まず、poetryはpython3.9以上でしか使用できません。今の現場はpython3.7(いつか3.11になる予定)なので使えなかったりします。また、ライブラリのバージョンでも同様に使えないものがあります。 他にも仮想環境の有効化がvenvと同様手間がかかったり、vscodeのインタープリター選択画面に出なかったのでパスを通す設定をしないといけないなどがあったりして使いにくさを感じました。私の環境構築方法に問題があるかもしれませんが… おまけとしてRyeはチームよりも個人開発向けなのでやろうとしたのですが、客先PCでは使わないほうがよさそうです。個人で触ってみようとは思います。 それからDockerです。Desktop版をインストールしようとしましたがダメでした。とはいえAWSの実行ではdockerコンテナを利用しているので、ローカルでは使えませんが開発や本番環境では使われているのでdockerfileの中身やdocker-composeをチェックしてみます。ローカルだとどんな使いやすさなんですかね? 前にも話したんですが、pythonやライブラリのバージョンが固定されているような現場では正直不要だとは思いますが、知っておいて損はないかと思いますし、知識はどこかで役立つと思います。 手軽で使いやすいという点では “pipenv” > “poetry” >= “pip + venv"に"pyenv"を足したものかと思いますが、覚え順としては"pip + venv” > “pipenv” > “poetry” がいいと思います。ついでにDockerまで使えればほぼ問題ないという印象です。 ...

2024年3月8日

常駐先のPCでPythonの仮想環境構築って必要なの?

たまには自身の仕事の環境のことでも話をしてみるのもいいかと思って記事にしました。ただ自身の疑問や考えを整理するために書いてるので、大したことは書かないかと思います。人間っぽくていいなと思います。 大前提としてpythonの仮想環境構築について知っておくに越したことはないと思います。客先に派遣される業態ではいつ使うかわかりませんし、自社開発でもライブラリの更新をした方がセキュリティ面でも安心できると思うので、安定板と更新版で使い分けができそうです。 さて、最近新PCに移行することになりました。前のPCでは仮想環境を使ってこなかったので、これを機に仮想環境について調べこの記事を書くことにしました。仮想環境で何を使ったかはあまり触れないと思います。 私の現場では客先常駐ではないですが、お客様先から配布されたPCを使って開発を行います。スペックは特段低いわけではないので、重たい処理や大量のデータを扱わなければ問題ない程度です。ちなみにWindowsです。 ただお客様先から配布されたPCなのでセキュリティは固めです。実はpyenvを使おうとしたのですがインストールがうまくいかずpythonバージョンの使い分けができませんでした。 他にもDocker Desktopをインストールしようとしましたがこちらも無理でした。申請すれば通るかもしれないですが、他にも方法はありますので一旦諦めました。ちなみにWinMerge(ファイル同士の比較)もインストールできませんでした。前のPCは標準搭載だったのですが… ここから本題なのですが、仮想環境を作る必要があるのか?ライブラリの管理をする必要があるのか?という問題です。もちろん客先によっては自由度が高いところもあるので一概には不要だとは思いません。 私の話になりますが、本番環境ではAWSを使っています。開発環境もありますがスコアリングのみであればローカルでvscodeを使用しています。 AWSではDockerfileでpythonとライブラリのバージョンを指定して実行しているのですが、そのバージョンが全てのプロジェクトで統一されています。pythonのバージョンであれば3.7.12、pandasであれば1.12.0という具合です。 こうなるとローカルでも使用するpythonやライブラリのバージョンは固定されるので、仮想環境の構築は不要でとりあえずpipでインストールしてしまえばいい気もします。requirements.txtに吐き出していまえば他の人にも共有できて同じ環境が作れますし… 整理してみましたがやはり不要な気がします。とは言え仮想環境構築で使ったvenvとpyenv(ほぼインストールのみですが…)の使い方もわかりましたし、他のライブラリであるpipenvやPoetryも触ってみようと思います。 次に話すとしたら実際に仮想環境構築したことかAWSについてですかね?ではでは

2024年3月6日

セキュリティを学ぶことができる"TryHackMe"で遊んでみたよ!

最近のニュースでセキュリティに関する漏洩がよく起きている気がします。 外部からの攻撃はもちろん内部からの漏洩も存在します。内部からの攻撃(人的ミス、スパイ等)は防ぐのは難しそうですが外部からの攻撃であれば大体は防ぐことができると思います。 クラウド等であればセキュリティに関するものもありますが、Webサイト等ではセキュリティに弱い部分もありそうな気はします。 セキュリティについて騒がれているのに私は全く知らなかったので少しは勉強しようかと思って"TryHackMe"というサイトで学習し始めました。こちらから学べます。 ただ、こちらは全て英語になりますので翻訳しながら少しずつ進めています。学習はこんな感じです。やる内容と進行度、難易度が表示されています。 少し触ってみた内容では以下の画像みたいな感じです。 左の方ではハッキングの内容や手順を動画付きで説明して、右側では実行する環境を作って手順通りに作業していきます。 まだ始めたばっかりなのでわかっていないことや翻訳しながらで大変ですが、少しずつ学んでセキュリティ意識を高めていけたらと思います。 余談なんですが最近物理学が面白いと思い始めました。理系なので物理学に触れたことはありますが、あまり理解できていませんでした。量子力学はAIと同様発展途中ですが、もしかしたら数十年後には必要不可欠になりそうなので、そっちも知っておくとよさそうです。 今はAIみたいな実用段階ではないですが今のうちに知って、ビジネスにも活かせる段階になった時、有利に働き稼ぐ手段が増える!かもしれないですね(笑)ではでは

2024年3月1日

引き続きfreeCodeCampの機械学習で苦戦している話

勉強していますか! 私は引き続きfreeCodeCampで認定証を取れるよう頑張っているのですが、なかなか難しくて苦戦しています。 現状機械学習プロジェクトで終わってるのがじゃんけんと画像分類と医療費予測ですね 画像分類と医療費予測はそこまで難しくないのですが、じゃんけんと今やってる自然言語処理は苦戦しています。 じゃんけんは4人のボットに60%以上の勝率を出すことがクリアの条件です。 4人のボットはそれぞれ特徴があって(以下グー: “R”、チョキ: “S”、パー: “P"とする) 特定の順でじゃんけんの手を出す 前回出したプレイヤーの手に勝つ手を出す プレイヤーの過去10回分を集計して1番多く出した手に勝つ手を出す 過去2回分(“RR"や"PP"等)のパターンを毎回全て記録し、前回出した手+“次出す手"を過去履歴から一番多い手に勝つ手を出す。(例:過去のパターンで"RR"が8回、“RS"が5回、“RP"が10回だった場合、前回プレイヤーの手が"R"なら"RP"が10回の最多なので"P"に勝つ"S"を出す) この4人に勝率60%以上出せばいいのですが時間がかかってしまいました。ちなみに最終的には画像のような勝率になってました 1人以外は99%以上の勝率になりました(笑)。3人だけ個別で対応して1人は何もしなくてもテストクリアしたので特に対策はしていません。もしかしたら連鎖マルコフモデルを使えばよかったかもしれませんが、力押しです💪 画像分類と医療費予測はChat-GPTに手伝ってもらいました。とは言え簡単な加工とモデルの作成だけだったのですが、コードの中身を全て解説してもらいながら終わらせました。 残りの自然言語処理問題ですね。書籍推薦アルゴリズムとスパム分類ですね。こちらもChat-GPTに頼って解説してもらいながやったのですがうまくいきませんでした… なかなか難しいですがもう少しいい方法がないかChat-GPTとキャッチボールしながら探してみようと思います。気晴らしに他の講座をやるのも手ですね!ではでは

2024年2月28日

freeCodeCampというサイトで認定証でも取ってみる話

E資格が終わって次に何しようかなと思った時にたまたま目が付いたサイト"freeCodeCamp“をやってみました。 一応無料でできるものでテストに合格できれば認定証がもらえます。このようなサイトやCourseraなどで認定証をもらえますが、どこまで効果があるかはわかりません。 ただし、海外でも十分役に立つかなと思っているので学位とかなければ取るに越したことはないかと思います。日本だけでいいなら不要だと思いますが、私は日本だけで活躍するのは危ういと感じているので、海外でも使えそうなものを探していました。 講座はいろいろありますので気になったものを触ってみればと思います。 基本は英語ですが日本語に変えることもできます。翻訳が怪しい部分もありますが、なんとなくわかります。本格的な翻訳も募集しているみたいです。 私はメインはpythonを使っていますのでpythonに関する認定証を2つ取りました。 今は残りのpythonに関する認定証を取得中です。少し難しいですが… これが終わったら他のやつも取ってみようと思います。APIやデータベースはできたほうが楽しそうですからね。 問題としてChat-GPTを使っても問題ない気はします。コードをほぼ任せてみましたが合格できましたので。また、Copilotのような機能があるので気にせず、積極的に利用しても問題ないかと思います。コードの中身はしっかりと理解したほうがいいですが… テストを受ける前に学習をすることもできます。動画での学習と内容チェックですね。 さて、生成AIが出てきてもしかしたらプログラマーやデータサイエンティスなどの業種が将来的になくなるかもしれない時代、さらに日本は少子化により給料も需要も下がるかもしれない時代に突入しているので、今のうちにやれることをやって将来に備えたいですね。 それでは楽しいエンジニアライフを。ではでは。

2024年2月25日

E資格お疲れさまでした!合格したかどうか五分五分…

2024#1のE資格お疲れさまでした!個人的には五分五分くらいの出来でした。振り返るとあの箇所間違ってたなと思うとこもいくつかあります。 今回テストを受けてみてわかったことは、G検定同様言い回しが少し独特に感じました。言い方を変えると表面だけの理解では解けないと感じました。 全ての問題がそうではないですが4割くらいがそう感じました。 また問題数は103問の120分ですがある程度理解して入れば、計算問題があっても20分くらいは余る気がします。 シラバスを見て記事に簡単にまとめたりしましたが、全く出ない内容(コンテナやCTC等)があったりして少し困惑しました。学べてよかったとは思いますが… 次回のシラバス(こちらからダウンロードできます。)見る感じだと数学の内容はあまり変わらず、機械学習はバッサリ削られてる雰囲気です。深層学習も音声処理とメタ学習はバッサリですね。能動学習と連合学習は元からなかった気がします。 こうやってバッサリカットされたということは他の箇所が頻出するということなので、深層学習はより理解を深めたいといけなさそうですね。特に生成AIに関するGPT系やGNA系は最近の論文も確認したほうがよさそうですね。 今回の学習で色んな事が学べました。Dockerはローカルで使ったことがないので触ってみよう!とかHagging Faceで配布されてるモデル使って自然言語処理のプログラム作ってみよう!とか画像認識でいい使い道ないかな?とか考えてました。 一先ず資格が終わって勉強から解放されたので他にやりたいことをやっていきたいと思います。ちなみに試験後にコオロギラーメン食べてきたのでその話もしようと思います。ではでは!

2024年2月20日