nago3は機械学習エンジニアとして生きていきたい

未経験から機械学習エンジニアに転職したなご3の技術ブログ

Pythonを学ぶと何ができるようになるのか

 

【はじめに】

 

 「Pythonってどんなイメージ?」

 

皆さんはPythonと聞いたらどんなイメージを思い浮かべますか?

私が学習初期のころは何となく "AI", "自動化" みたいな、

最新技術に関わる言語といったイメージを持っていました。

 

あとは企業が持っているデータを分析する際に利用され、

マーケティングや意思決定に関わるイメージもありましたね。

 

もちろんそれらも間違いではないのですが、

プログラミング言語って役割が決められているわけではなく、

一つの言語でもできることがわりと幅広かったりします。

 

Pythonでのデータ分析をメインに学習を進める中で、

「へー、Pythonだけでもこんなことできるんだ」

と感じる場面もいくつかありました。

 

「具体的に何ができるか分からないけど、
 市場価値の高そうな言語だから学んでみたい」

と考えている方は、Pythonでできることを何となく知ることで、

今後の勉強方針を決める助けになるかも知れません。

 

私はほとんどPythonしか勉強していない弱小者なので

他の言語の話はあまり取り上げることができませんが、

今回はPythonの特徴や関わるサービスを見ていきましょう。

 

【なご3が今できること】

まずは今の自分ができることを整理してみました。

 

1.データ分析

Pythonができることとして最もベーシックで、

最もイメージに当てはまる領域ではないでしょうか。

自分も最初はこちらから勉強しました。

 

データ分析というってとてもふわふわした言葉ですよね。

軽く調べても具体的な定義は見つからないのですが、

「データを構成する成分について分類/整理したり、

 表現を工夫することで潜在的な意味を読み取れるようにすること」

という風に自分は理解しています。

 

世の中には様々なものをデータとして扱うことが可能です。

・気温や天気、湿度などの気象関連情報

・企業が持つ顧客の購買情報

・インターネットの閲覧履歴情報

しかし上記のような情報はあくまでも数字や文字の羅列であり、

それ単体では何かに活用できるものではありません。

 

データ分析ではそれら情報を意図に合わせて要約したり、

各データを組み合わせてそれらの関連性を可視化することで、

そこから人間が新しい知見を汲み取れる形に変換する作業を行います。

 

<データを組み合わせた分析の例>

気象×購買 → "アイスは夏場の暑い時期に売れやすい"

購買×閲覧 → "商品紹介ページを1分以上見ている人は購買しやすい"

閲覧×気象 → "夏休み前はレジャー関連のサイト閲覧が増えやすい"

 

自分は以前Twitter上の情報から、

任天堂のゲーム「Splatoon3」のコンテンツ分析を行いました。

qiita.com

上記記事の中ではゲーム内のワードをTwitterで検索し、

各ワードを含むツイートのネガポジ度を判別して可視化しています。

よかったら上記記事の後半を見て頂ければと思います。

 

2.予測モデルの構築

こちらはデータ分析とイメージが近いので、

自分は勉強を始めたころ結構違いがあやふやでした。

 

Pythonでは機械学習という技術を用いることで、

過去の傾向から未来の結果を予測することができます。

 

以下のようなサービスで使われている技術ですね。

・クレジットカードの不正利用検知

・動画視聴履歴を元にしたオススメ動画の表示

 

なおタイトルで使っている"モデル"という言葉は、

対象となるデータを入力してから予測結果を出力するまでの

一連の処理の流れをまとめて"モデル"と呼びます。

 

自分は過去に気象庁東京電力が公開するデータから、

将来の電力需要を予測するモデルの構築を行いました。

qiita.com

記事は残していないのですが他にも、

ゴールデンレトリバーサモエドスピッツなどの

犬種を画像から見分ける分類モデルなども作ってました。

 

3.処理の自動化

Pythonは作業の自動化も得意分野です。

Python 自動化」で調べるとたくさん記事が出てきます。

 

よくあるのは、ネット上でデータ収集する"スクレイピング"や、

Excelなどの表データからのデータ抽出の自動化などです。

 

上述した犬種分類の画像データを集める際や、

Twitter分析でツイートを集める際も収集は自動化していました。

qiita.com

 

PC内に保存されているExcelファイルからのデータ抽出作業や、

WEB上からの特定の情報を収集する作業は、

IT関連でなくても活用の機会は多いため需要の高い技術だと思います。

 

【こんなこともできる】

自分は最初上記の内容が主なPythonの領域だと思ってましたが、

勉強する中で以下のようなこともできることを知りました。

 

1.WEBアプリの作成

以下のようなフレームワークを利用することで、

Python環境でWEBアプリを作成することも可能です。

Django

・Flask

・FastAPI

・Streamlit

 

youtubeDjangoを利用したWEBアプリとして有名で、

初めて聞いたときに驚いたことを覚えてます。

 

ただ同じPythonという言語を利用しているとしても、

WEBアプリ開発とデータ分析などでは、

使われている技術は全くと言って違います。

 

共通するのは一部の技術やコーディングの構文であり、

WEBアプリを開発するにはデータベースやネットワーク、

セキュリティなどの知識が別で必要になります。

 

2.ゲーム開発

なんとPythonでゲームを作ることもできます。

こちらも初めて知ったときはとても意外でした。

 

ゲーム開発というとやはり有名なのはUnityで、

他にもC#C++JavaScriptが開発に向いているそうです。

 

Pythonのゲーム開発ではPygameというライブラリを利用します。

名前そのまんまでとても覚えやすいですね。

 

ただ実際Pythonで開発されている有名ゲームは少ないので、

ゲーム開発を目的にPythonを勉強するのは効率が悪そうです。

 

Pythonを勉強する前に決めるべきこと】

自分自身、データ分析をメインに勉強する中で、

他領域でもPythonが利用されていることを知りました。

 

PythonでWEBアプリが作れること初めて知った際、

「Flask勉強してみよう」と思い書籍を買ったのですが、

まったく書籍の内容が分からず、結果的に積み書籍となりました。

 

またデータ分析に絞って勉強するにしても、

データベースや環境構築など他の領域の知識は必要で、

Pythonだけでできることは少ないんだなぁ」と感じました。

 

そのためやはり勉強を始める際の意識として、

Pythonについて勉強する!」という認識ではなく、

作りたいサービスや領域をより明確にすることが大切だと思います。

 

 「分析したい?
  WEBアプリ作りたい?」

 

ぜひ自身の興味のある領域や技術を明確にしてから、

より詳細な学習に入るようにしていきましょう。

新年なので技術ブログ始めてみました。

【はじめに】

初めまして、なご3と申します。

2022年の7月にエンジニアに未経験で転職し、

現在は実際に現場に入りながらプログラミングを学んでいます。

 

少しずつ現場で働くこと自体にも慣れてきたので、

年明けに合わせて技術ブログを始めてみることにしました。

 

今までに学習の過程でいくつかQiitaにも記事を載せているので、

こちらも読んで頂ければ嬉しいです。

qiita.com

 

【ブログを始めた理由】

普段は基本的にPython言語を利用しており、

基本的な機械学習深層学習(ディープラーニング)

データの可視化や要約による分析業務を主としています。

 

実際にPythonでのデータ分析を1年ほど勉強してみて、

  • データサイエンティストとデータアナリストの違いとは何か
  • 実際の業務での分析の方法や環境構築とはどのようなものか
  • Pythonを学ぶことで具体的にどのような働き方が実現できるか

などは早い段階で知っておきたかったと感じています。

 

しかし書籍や動画での独学は個別の技術について学べるだけで、

分析の環境やPythonを学んだ先の働き方などの情報については、

そもそも疑問を持つ機会もあまりなかったように思います。

 

また1年間学習して分厚い書籍の内容を理解していても、

初めての現場に行ったときは正直何もできませんでした。

 

個人で学習するうちはあくまでも個人PCでの分析に過ぎず、

そもそも業務で使われる環境とは全く違かったからです。

 

業務に入って経験を積むことで理解できることが多いですが、

それでももう少し事前にその辺りに関する知識を

準備した状態で現場に向かえたらよかったと思いました。

 

私は前職でフィットネストレーナーとして働いていましたが、

場所に縛られず価値を生み出せるエンジニアに憧れて、

Aidemyというオンラインのプログラミングスクールを利用しました。

 

エンジニアへの転職を希望する方の中には、

  • 自分の将来のために手に職をつけておきたい
  • リモートで働くことのできる仕事に就きたい

などの考えを持っている方も多いのではと思います。

 

そのモチベーションを維持し、また高めるために、

学んだ先に選べる働き方の選択肢について知ることは、

技術の学習を進めるのと同様に大切なことだと思います。

 

技術系の記事はQiitaを探せばいくらでも良いものが見つかるので、

学習初心者の方の助けになるようなブログを作ろうと思いました。

 

現在予定している記事の投稿としては、

  • Pythonを学ぶことで出来るようになること
  • Pythonが使われているサービスや仕事
  • 勉強初期の環境構築方法
  • 時間を無駄にしないための効率的な学習方法

などを考えています。

 

独学だと誰かに質問できる機会は少ないと思いますので、

気軽にコメント等で取り上げて欲しい内容や、

学習に関するご相談等を頂ければとても喜びます。

 

ぜひ今後ともよろしくお願いします。