【Python】Pythonで何ができるの?

いろいろなところでAIが活用されており、建設業でも活用が模索され実際に使われてきています。

これからAIについて勉強したい方は、AIで使われているプログラム言語を先に学び始めることでしょう。

そんな中、どうやって学んでよいかわからない方は是非この記事を参考にしていってください。

今回は、AI開発に使われているpythonについて説明します。

これから勉強しようと思っている方が、pythonがどういったもので、どういうことができるかが理解できるように説明していきます。

pythonとは

pythonの記述はwikiとか色々ありますが、以下の特徴があります。

  • 人気ランキング上位
  • AI開発での必須言語
  • ライブラリが多い
  • Windows、LinuxなどOSの違いがあっても動作する

他にもいっぱいありますが、この記事を読まれる方も、これらが勉強始めようと動機付けになったのではないでしょうか?

ライブラリとは?

プログラムの集合体
自分でコードを書かなくても、誰かが書いてくれたコードを使うことができる
そのため、難しい数式を使った処理も数行で書くことができる

現状はPython3を使おう

pythonにはバージョンを大きく分けて、2と3があります。

2014年頃は対応したライブラリが少ないことから、2を使う傾向にありましたが、現状は3を選択して使用してください。

2は使う人が少なくなってきているバージョンなのであえて使う必要はありません。

python3では、2020年時点で、3.7や3.8がありますが、その時の新しいものを使用してください。

pythonのダウンロードページのStable Releaseのバージョンを選んでおくのが良いです。

なぜpythonが選ばれるのか

なぜpythonがここまで人気になったのでしょうか?確実にAIの開発言語として使われていることがありますが、他にも多くのメリットがあります。

「見える化」「統計」「機械学習」などの処理が簡単にできる

今までデータのグラフ化や解析にはどのようなツールを使ってきたでしょうか?

Excel?JMP?MATLAB?最近では、BI(Business Intelligence)ツールなども増えてきています。

MicrosoftのPower BIなどは無料で使えるのでなかなか有用です。

最近では、pythonでデータ解析ができることも注目を集めています。

データ解析は後で詳しく説明しますが「見える化」「統計」「機械学習」などの処理が簡単にできます。

多数のライブラリがあり簡単に開発できる

pythonには色々なライブラリが用意されています。

普通に自分で最初からコードを書いていると途方もない時間がかかるものが、ライブラリをあらかじめインストールするだけで、数行でできるようになります。

下記がいくつか例になりますが、今後こんなことしたいなといった時に大抵は便利なライブラリに出会えることでしょう。

色々なライブラリ
機能 ライブラリ
画像処理 opencv、pillow
機械学習 scikit-learn
表データ pandas
行列演算 numpy
AI tensorflow、keras、pytorch
グラフ表示 matplotlib、seaborn
web操作 selenium、 beautiful soap

ユーザーが多いので検索で情報がすぐ手に入る

先ほどのライブラリが多いのもユーザーが多いから得られるメリットです。

さらにユーザーが多いので、困ったことがあれば本記事を見られている方のようにウェブで調べればすぐ解決しますし、本屋に行っても初学者から上級者までの本がたくさんあります。

また、最近はウェビナーと呼ばれる、ウェブ動画の講座が多くあります。

ウェビナーはYouTube、Udemy、Cousera、fastaiなど色々なところから出ています。

pythonでできること

pythonではいろいろなことができますので、いくつか紹介していきます。

データの見える化 相関を見出す

データの見える化は数字がいっぱい並んでいる状態ではなく、パッと見て何かが判断できるようにグラフ等にすることです。

pythonでは、エクセルやCSV、データベースなどのからデータを取得して、グラフにするまでは数行のコードでできます。

例えば、下記のコードでは3つのステップでグラフを描いて見える化をしています。

  1. ライブラリ読み込み
  2. CSVデータの読み込み
  3. グラフの表示

下記のようなCSVデータを読み込んで「sepal_width」「sepal_length」をグラフにしているコードだと理解しておいてください。

このグラフから「species(品種)」ごとに「sepal_width」「sepal_length」に相関の関係がありそうだということがすぐわかりますね。

このように、数字が並んでいるだけではわかりにくいデータを何かしら判断しやすい形に見える化ができます。

統計、機械学習による解析ができる

pythonでは簡単に統計、機械学習による解析ができるのも魅力の一つです。

簡単にタイタニックのデータから生存率の高いのはどういった人だったかという解析を機械学習を使ってやってみます。タイタニックのデータがどういったものか見てみましょう。

こういった表データは建設業関係なくどこ業界でも使うものだと思います。

このデータを機械学習の処理にかけて、どの因子が重要か機械に教えてもらいます。

「因子」としてますが、機械学習的には「特徴量」ですし、「要因」と置き換えても良いです。

まず、機械学習の処理ですが、使うデータの選択や、文字データを数値化する処理を入れて、機械学習の処理をしています。

次に、機械学習の結果から、重要な因子を見える化します。

このコードで、出来上がるグラフが下記になります。

このように、そうなった原因が何であるかは機械の処理によって調べることができます

機械学習は、分類や予測などに使いますが、こういった因子を調べることにも使えます。

ディープラーニングを使ったAI開発

ディープラーニングは機械学習の1つですが、今の翻訳、画像処理などはディープラーニングの技術によって実現されています。

難しそうなディープラーニングも画像の分類などであれば、20行程度で済みます。

試しに、次の猫の画像をAIで判定させてみます。

コードは以下のステップで処理しています。

  1. 画像読み込み
  2. AIモデルを選択
  3. 読み込んだ画像を前処理
  4. AIで分類処理
  5. AIの分類結果表示

コードは今は理解する必要はなく、AIの処理がこのコード量で済むということがわかればやる気も出てくるのではないでしょうか?

コードはpytorchのドキュメントを参考にしています。

以下が処理結果です。「tabby=とら猫」であっていますね。

すでに、学習された猫とか車とかを認識するAIですが、自社製品などの判定に使うAIも学習させることができます。

無料でウェブ操作自動化ができる

数年前からRPAという単語をよく耳にします。

人が日々繰り返しているパソコン業務をロボット(プログラム)でやってもらおうというものです。

当然ですが、プログラム言語であるpythonでも人の作業を置き換えるということはよくされます。

RPAの方が簡単にできるかもしれませんが、pythonやり方を覚えると無料でできるようになります。

ここでは、そのうちのウェブ操作の自動化について簡単に紹介しますので、興味を持っていただけたらなと思います。

普段ウェブはChrome、Safariなどのブラウザを利用すると思いますが、自動化する場合もブラウザを利用します。

今回は、ChromeDriverを使い、次のことを自動化してみようと思います。

  1. yahooを開く
  2. 「python」を入力
  3. 検索する

これくらいの作業でも毎日の繰り返すとなると自動化するのが良いでしょう!

コードは以下のようになります。

実行すると、Chromeが立ち上がって、「python」を検索してくれます。

検索だけではイメージがつきにくいかもしれませんが、他にも

  • 検索して決まった箇所のデータの取得
  • データのダウンロード、アップロード

などのウェブ操作が自動でできるようになります。

ウェブアプリケーションのバックエンド処理

ウェブアプリケーションのバックエンド処理というのは、いわゆるサーバーサイド側の処理です。

といっても、馴染みのない方にはわかりにくいですが、ウェブアプリケーションは「ユーザー側で操作する画面や処理」と「サーバー側のデータ検索などの処理」にわかれて動いています。

バックエンド側にpythonを使うこともできるので、AIの処理などをウェブアプリケーションに使うことができます。

ウィンドウアプリケーション開発

パソコン業務では皆さんが大抵このウィンドウアプリケーションを使うので、一番馴染みがあるアプリケーションになると思います。

pythonであれば、WindwosやLinux両方で動くウィンドウアプリケーションの開発が可能です。

ユーザーに使ってもらうときにはやはり、ボタンなどの操作画面があると受け入れてもらいやすいのではないでしょうか?

まとめ

どうでしょう?これからpythonを習得しようと思っている方が、pythonがどういったもので、何ができるかがわかったでしょうか?

どういったアプリを作りたいかがpythonを習得するための大事なモチベーションになるので、是非作りたいものをイメージながら、pythonの習得をしていってください。