2019.10.29この記事は約53分で読めます。このページは、AIや機械学習・ディープラーニング(深層学習)に興味はあるけど、プログラミングも数値解析もさっぱり!というAI初心者の方(私です)のための機械学習入門です。どちらも無料で利用できます。IDは学習データを用意するために使用します)難しい数式は使わずに、機械学習の一連の流れと基礎知識を学べるようにまとめていますので、機械学習やディープラーニング、AIなどに興味のある方はぜひコードを実行しながら読み進めてみて下さい。新しいアイデアを形にする足がかりになれば幸いです。IDをまだ持っていない方は、以下の記事を参考にしてIDを取得して下さい。IDの作成方法【無料で簡単】このページではGoogleアカウントの作成方法をご説明します。Googleアカウントがあると『Goog...tecurio.com2019.09.26SIGNATEのアカウント作成方法【無料で簡単】このページではAI・機械学習を学ぶ上で必要な学習データを入手するのにに便利な『SIGNATE』のアカウントの作成方法をご説明します。アカウントは無料かつ2~3分で簡単に作成できます。『SIGNATE』は機械...tecurio.com2019.10.08事前準備SIGNATEからデータをダウンロードまずは機械学習に必須である学習データを準備しましょう。下のリンクからSIGNATEへログインし、「【練習問題】お弁当の需要予測」のデータページを開いて下記3つのデータをダウンロードして下さい。(sample.csv)リンク:SIGNATE「【練習問題】お弁当の需要予測」データデータはファイル名の左にある「ダウンロードマーク」からそれぞれダウンロードできます。データをGoogleドライブへアップロード次に学習データをGoogleコラボから読み込めるようにGoogleドライブにアップロードします。Googleドライブにファイルをアップロードする方法このページではGoogleドライブに学習データをアップロードする方法をご説明します。アップロードは簡単で2~3分で完了します。略です)というフォルダを作成し、その中に先ほどダウンロードした3つのファイルをアップロードして下さい。これで事前準備は完了です。Googleコラボで機械学習をはじめるGoogleコラボでノートブックを作成Googleコラボではノートブックというファイルにプログラムを書くことで機械学習を行っていきます。新しいノートブックを作成しましょう。下のリンクからGoogleコラボを開いて下さい。リンク:Googleコラボこの画面が表示された場合は「キャンセル」を選択します。新しいノートブック」を選択します。このように新しい真っ白なにノートブックが開きます。左上には「untitled0.ipynb」とノートブックのタイトルが表示されています。タイトルは直接編集可能なので、今回は「tml-1」などご自分がわかりやすい名前に変更しておいて下さい。これで新しいノートブックが用意できました。ノートブックの使い方の説明です。ノートブックの入力エリアには「コードセル」と「テキストセル」の2種類のセルがあります。テキストセルは補助的な役割で、メインのプログラムはコードセルに記入します。背景がグレーのエリアが「コードセル」、白いエリアが「テキストセル」です。「+コード」ボタンでコードセルを、「+テキスト」ボタンでテキストセルを追加します。「コードセル」にはコード(プログラム)を記述します。基本的に「コードセル」だけ使えれば機械学習が可能です。1つの「コードセル」には以下の3つが含まれます。・コード入力エリア:ここにコードを記述します。・実行ボタン:「コード入力エリア」に入力したプログラムを実行します。実行中はボタンの見た目が次のように変化します。・各種操作:コードの移動や削除などが行えます。テキストセル「テキストセル」には、あとで自分が見返す時や、共同作業する人が見た時にわかりやすくなるように、コードの説明を書いたり、参照リンク、参考画像を貼り付けたりできます。1つの「テキストセル」には以下の3つが含まれます。・テキスト入力エリア:ここにメモなどを記述します。・テキスト装飾:メモ内容を色づけしたり、リンクや画像を挿入したりできます。・各種操作:テキストの移動や削除などが行えます。GoogleコラボのセットアップそれではGoogleコラボで機械学習をする環境を整えましょう。セットアップといっても難しくなく、慣れれば1分もかからずにできるくらい簡単です。Googleドライブにマウントまず始めに、GoogleコラボからGoogleドライブに接続してファイルを読み込めるようにします。ここからはいよいよ実際にコードを書いて実行していきます。下のコードをコードセル内に書いて下さい。drivedrive.mount(‘/content/drive’)GoogleコラボからGoogleドライブに接続するという意味です。Notebooks/tml-1”先ほど作成してデータファイルをアップロードした「tml-1」フォルダに移動するという意味です。それでは画面を見ながら進めていきましょう。入力したコードを実行するため「実行」をクリックします。Googleドライブに接続するための認証コードを発行するリンクが表示されます。リンクをクリックしましょう。アカウント選択ページが表示されます。現在ログインしているアカウントを選択します。アクセス確認ページが表示されます。「許可」を選択して下さい。認証コードが表示されるので、コピーして下さい。Googleコラボに戻って認証コードを貼り付けます。貼り付けたら「Enter」キーを押します。上のように表示されたら、GoogleコラボからGoogleドライブへの接続完了です。(また、コードの左横には「[1]」と表示されます。これは実行が完了した時に表示され、中の数字は実行した順番です。今は最初に実行したコードなので1と表示されています)では、実際にGoogleドライブのファイルにアクセスできているかどうか、現在の作業フォルダにあるファイルの一覧を確認してみましょう。「+コード」を押してコードセルを追加し、以下のコードを実行してみて下さい。%ls実行結果は次のようになります。このようにアップロードした3つのファイルが表示されたらOKです。Googleドライブに置いたデータにアクセスできるようになりました。Googleコラボの日本語化&ライブラリの読み込み日本語版グラフ描画ライブラリのインストールGoogleコラボは便利な開発環境ですが、初期状態ではグラフに日本語が使えません。次は日本語を使えるようにしましょう。「+コード」を押してコードセルを追加し、以下のコードを実行して下さい。※以降、新たにコードを書く時には新しいコードセルを追加してそこに書くようにして下さい。japanize-matplotlibpipという管理ツールを使って、「japanize-matplotlib」というグラフを日本語化するモジュールをインストールする。ライブラリの読み込み&グラフ日本語化設定ライブラリとは、誰でも使える便利なプログラムの集まりです。用途に合わせた様々なライブラリがあります。ここでは機械学習をするのに便利なライブラリを読み込みます。下のコードを実行して下さい。pdデータ分析のためライブラリ「pandas(パンダス)」を読み込み、pdと略して使用するという意味です。np数値計算のためライブラリ「numpy(ナムパイ)」を読み込み、npと略して使用するという意味です。plt可視化ライブラリ「matplotlib(マットプロットリブ)」に含まれるグラフ描画モジュール「pyplot」を読み込み、pltと略して使用するという意味です。sns先に読み込んだ「matplotlib」を使いやすくするライブラリ「seaborn(シーボーン)」を読み込み、snsと略して使用するという意味です。LR機械学習ライブラリ「scikit-learn」から線形回帰モデル作成モジュール「LinearRegression」を読み込み、LRと略して使用するという意味です。mean_squared_error機械学習ライブラリ「scikit-learn」から予測値の誤差を算出して評価するモジュール「mean_squared_error」を読み込んでいます。japanize_matplotlib先に読み込んだ「matplotlib」で日本語を使えるようにするライブラリ「japanize_matplotlib」を読み込むという意味です。sns.set(font=“IPAexGothic”)グラフに使用する文字のフォントを「IPAゴシック」という日本語対応フォントに設定しています。これでGoogleコラボのセットアップも完了し、いつでも機械学習を始められる準備ができました。今回の機械学習の目的さっそく機械学習をはじめたいところですが、その前に今回の機械学習の目的を覚えておいて下さい。今回の機械学習の目的は、徐々に売上が少なくなり経営が苦しくなっているとあるお弁当屋さんの利益向上に貢献することです。日々の売上データを学習データとして機械学習を行い、毎日のお弁当の販売個数を予測して廃棄処分するお弁当を減らすことで余計な材料費を削減できるように手助けをしましょう。今回の学習データは練習用で、本当にお弁当屋さんがあるわけではありませんが、実際の機械学習の流れを理解するためにも、このような目標があることを念頭に置いてこの入門を進めて下さい。先ほどダウンロードした「train.csv」には、下のような日毎のお弁当の販売データが約1年分入っています。内容datetidインデックスとして使用する日付(yyyy-m-d)y販売数(目的変数)week曜日(月~金)soldout完売フラグ(0:完売せず、1:完売)nameメインメニューkcalおかずのカロリー(kcal)欠損有りremarks特記事項event13時開始お弁当持ち込み可の社内イベントpayday給料日フラグ(1:給料日)weather天気precipitation降水量。今回のケースでは、曜日や天気・気温などの情報を利用して、販売数(y)を予測できるようになることがゴールです。(予測するデータのことを目的変数(今回は販売数y)、予測するために使用するデータを説明変数または特徴量(今回は日付・曜日・天気など)といいます)データの種類についてデータは大きく2つの種類に分けられます。量的データと質的データです。日付、西暦、温度など。足し算・引き算ができる。足し算・引き算ができ、比率にも意味がある。