‫さて､ 前回のビデオの最後に､ すべてのデータが埋まっていること､ つまり欠損値がないことを確認すると言いましたね｡
‫でも､ 見直してみると､ まず数値で確認することに少し意味があるような気がします｡
‫では､ 少し見出しをつけましょう｡
‫これを1と呼ぶことにする｡ 1.
‫すべて数値で確認する｡
‫素晴らしい｡
‫そして今､ そもそも別のデータセットが必要なようなものです｡
‫さて､ それはなぜでしょう？
‫心臓病のデータセットがあるからです｡
‫こちらはもう､ すべて数値化されています｡
‫だから
‫そこで､ もう一つのデータセットである､ 信頼できる自動車販売データをインポートしてみましょう｡
‫さて､ 冒頭で少し明らかになりましたが､ これは10列しかないんです｡
‫さて､ 私が行ったのは､ 同じ見出しで色､ 走行距離､ ドア､ 価格を表示する､
‫この拡張版の製作です｡
‫でも､ 今回は1000列もあるんですよ｡
‫スクロールさせると時間がかかるのでやめておきます｡
‫とにかく私を信じてください｡
‫それを証明することができます｡
‫自動車販売｡
‫有料で輸入しよう｡
‫CSBは読まないでください｡
‫CSVファイルをすべてデータファイルに移動させたのは､ ベストプラクティスの一種です｡
‫作業ディレクトリを整頓する｡
‫自動車販売拡張ドットcsv｡
‫素晴らしい｡
‫それでは､ ご覧いただきましょう｡
‫自動車販売のドットヘッド｡
‫素晴らしい｡
‫そして､ 1000個あることを把握する｡
‫美しい｡
‫だから言ったでしょ？
‫そして､ makeはオブジェクト､ colorはオブジェクト､ dominar doorsとpriceはすべて整数というデータ型を見ていきます｡
‫そして､ これらは文字列であり､ カテゴリーであるため､ オブジェクトであるのに対し､ これらは数値である｡
‫さて､ このセクションでやらなければならないことは､ すべて数値であることを確認することです｡ 機械学習モデルを実行する前に､
‫これらを数値に変換する必要があります｡
‫でも､ それを証明するために､ とにかくやってみて､ どうなるかを見てみましょう｡
‫そこでまず､ 何をするかというと､ データをXとYに分割するのです｡
‫そこで､ この4つの列を使って､ オドメーターのドアの色を作り､ 価格ではなく､ これらのために､ 車の価格を予測しようとするものです｡
‫今､ 自分自身のために持っているもの｡
‫これは本当に意味があるのでしょうか？
‫現実にそんなことができるのでしょうか？
‫このような問題で機械学習モデルがうまく機能するでしょうか｡
‫もし､ メーカーがホンダで､ 色が白､ 走行距離が35,431km､ ドアが4つのホンダだけが与えられたら､
‫価格は15,323ドルだと予測できるでしょうか｡
‫そうかもしれませんね｡
‫そうではないかもしれませんが､ もう少し情報が必要でしょう｡
‫機械学習モデルも同じでしょうが､ それでも作ってみましょう｡
‫そこで､ xとyに分割します｡ つまり､ 特徴行列が欲しいので､ xは車の販売台数の減少に等しいとします｡
‫今度は価格欄はいらない｡
‫あぁ......実は私､ 何をしでかしたんだろう｡
‫シフトエンターを押す｡
‫この高貴な価格に､ 私はとてもトリガーハッピーになっています｡
‫アクセスイコール1､ そしてYイコール車の販売をやっていこうと｡
‫Xを使ってYを予測したいので､ これは価格の列だけにしておきます｡
‫にも分かれますね｡
‫トレーニングセットとテストセットに分かれる｡
‫そしてテスト｡
‫つまり､ x train x test y train y testはtrain test splitの前に見たのと同じです｡
‫xを渡し､ yを渡し､ test size equalsを渡します｡
‫テストデータセットには20%の行を使用しています｡
‫素晴らしい｡
‫では､ 学習データで学習する機械学習モデルを作ってみることにしましょう｡
‫Xの学習とYの学習､ そしてテストデータで予測するわけです｡
‫わかりました｡
‫機械学習モデルを構築する｡
‫さて､ 今回は､ やはりランダムフォレストを使用します｡
‫しかし､ このランダムフォレストが何に使えるか､ 当ててみてほしい｡
‫サイクロンアンサンブルのインポートから､ ランダムフォレスト回帰に移行するわけです｡
‫そして､ ワークフローに戻ると､ 分類の問題を予測していたことを思い出してください｡
‫さて､ このランダムフォレスト回帰は､ 分類器のランダムフォレストと同じですが､ 今回は数値を予測することができます｡
‫ある車の属性が与えられたときに､ その車の価格を予測しようとしているのです｡
‫そこで､ 回帰モデルをインポートして､ 今回設定することにします｡
‫selfと呼ぶのではなく､ model､ regress､ beautifulと呼んで､ モデルフィットにする｡
‫学習データで学習させ､ パターンやX変数と価格､
‫ラベルの関係を学習させ､ テストデータで評価させます｡
‫なぜ今テストするのか？
‫なんて美しいんでしょう｡
‫これがスケールラーニングの力なんですね｡
‫トレーニングしたり､ モデルトレーナーを作ったり､ 走らせたりすることができます｡
‫4行のコードで評価する｡
‫本当はもっと短くできるのですが､ 4行のコードで本格的な機械学習モデルを構築するにはかなり適しています｡
‫では､ やってみましょう｡
‫あ､ いや｡
‫エラーが発生しました｡
‫何があったんですか？
‫値のエラー｡
‫これは予想していたことではあるのですが､ どうでしょう？
‫Value error could not convert string to float Nissan.
‫機械学習モデルは文字列を扱えないということがわかりました｡
‫だから､ なんとなくわかっていたことですが､ これを数字に変換しなければならないのです｡
‫では､ SRC learnでどのように行うか見てみましょう｡
‫これから､ SRCローンを使ってカテゴリーを変えたり､ 色を数字に変換したりする作業を少しずつ進めていきますが､
‫最初は少し大変に思えるかもしれません｡
‫SRCから､ learn dot preprocessing src learnにはいくつかのモジュールがあり､ それぞれが様々なことを行います｡
‫ホットエンコーダ1個
‫ああ､ なんだろう｡
‫今まで見たことがない｡
‫カテゴリーを数字に変えるために何をするか､ ここに少しコメントを入れておきます｡
‫素晴らしい｡
‫SRC learn dot composeより｡
‫インポート列の変換｡
‫それはどうなんでしょうね｡
‫コラムトランスが何をするものか､ なんとなく想像がつくと思いますが､ まずはその動作を見てみましょう｡
‫次に､ カテゴリカルフィーチャーを定義します｡
‫つまり､ 今回の場合､ カテゴリ的な特徴はメイクの色です｡
‫そして､ やっかいなのがドアです｡
‫今､ あなたは､ なぜ､ と思うかもしれません｡
‫ドア？
‫上に戻ろう｡
‫見てみてください｡
‫5､ 4､ 4､ 3用のドア｡
‫うーん｡
‫これはなぜでしょうか｡
‫さて､ 見てみましょうか｡
‫自動車販売｡
‫ドアはカウントを重視しない｡
‫ドアは数値化されていると考えてよいでしょう｡
‫そうですね｡
‫価値観として4､ 5､ 3がありますから｡
‫しかし､ 4ドアの車もこのカテゴリーに入るので､ カテゴライズされているのです｡
‫5ドアの車もこのカテゴリーに入ります｡
‫つまり､ 79台と3ドアのクルマがこれに当てはまりますね｡
‫それが65個もあるんですね｡
‫そこで､ 私たちの場合は､ ドアをカテゴリー分けして扱うことにします｡
‫そして､ ひたすらコマンドのスパムを続ける｡
‫だから､ ノートは保存する｡
‫シフトとエンターを押せば勝手に動くのと同じで､ 習慣として身に付いている感じです｡
‫ということで､ 3つのカテゴリー別特徴､ 美しいができました｡
‫そして､ このone hotという小さな変数を作るのです｡
‫インポートした1つのホットエンコーダークラスの利点を生かします｡
‫そこでそれをインスタンス化し､ transformerという小さな変数を作って､ これは列のトランスフォーマーを使用することにします｡
‫これは､ 名前を持つタプルのリストを受け取ることになります｡
‫そこで今回は､ one hotと呼び､ 実際に使用するトランスフォーマーを､ 先ほどインスタンス化したone
‫hot変数に渡します｡
‫そして､ これをフォーマットしてきれいな間隔を確保し､ 変換したい機能のリストを渡します｡
‫そして最後に､ それは必要ない｡
‫それを元に戻そう｡
‫この辺りには､ いろいろなものが置いてあるんです｡
‫それを元に戻してください｡
‫素晴らしい｡
‫そして､ ここで､ 最後の変数やパラメータを､ リマインダ・イコール・パス・スルーというカラム・トランスフォームに渡します｡
‫美しい｡
‫そして､ ここにちょっとした変数を用意します｡
‫私たちは､ 基本的にXデータのバージョンになる変換されたXを保持しています｡
‫Xは基本的に私たちがそれらのすべてを望んでいない変換Xが起こっている何であるかを見てみましょう｡
‫数値に変換されたものを除くバージョンです｡
‫では､ それを見てみましょう｡
‫そこで､ ここにトランスを設置しました｡
‫そして､ ここからが本番です｡
‫Xに変形､ フィット､ 変形して､ 変形したXを見てもらう｡
‫無効な構文がありますね｡
‫ここにコンマがあります｡
‫名前エラー transform is not defined classic.
‫トランスフォーマーです｡
‫これでよしとしよう｡
‫素晴らしい｡
‫つまり､ これは配列を吐き出しているのです｡
‫これをデータフレームにすれば､ 意味があるのかもしれませんね｡
‫では､ PD dot dataframeで実際にxを変換してみましょう｡
‫素晴らしい｡
‫というわけで､ 「これは一体何なんだ」と思ってご覧になっているかもしれません｡
‫でも､ Xを復活させたら､ どうなるんだろう｡
‫ドットヘッドワークを少し拡大したところ｡
‫だから､ ちょっと上下に揺れ動き続けることになるんだ｡
‫しかし､ セカンドラインには､ メイクカラーとドアはカテゴリーであると伝えているため､ このコードが行ったことは､
‫それを具体的に1つのホットなものに変換し､ コード化したことです｡
‫これで､ メイクカラーとドアの列を1つのホットに変換し､ 変数をコード化したわけです｡
‫しかし､ オドメーターコラムは､ ここにあるように､ 実はまだ同じ数字であることがわかります｡
‫だから3543一｡
‫うん｡
‫192714.
‫うん｡
‫そうです､ そうです｡
‫オドメーターコラムは変更されていないんですね｡
‫そこで､ この上を振り返ってみると
‫メイクカラーやドアを変更したのは､ こちらで定義しているからです｡
‫1ホットエンコーダをインスタンス化しました｡
‫それが何であるかは､ 追って説明します｡
‫そして､ column transformerを使用してトランスフォーマーを作成しました｡
‫つまり､ カラムトランスファは､ 1つのホットエンコーダをカテゴリ特徴量に適用する､
‫ということです｡
‫そして､ 通過しているのを見つけた残りの列には何もしないでください｡
‫そして､ 私たちが行ったことは､ Xを作成し､ 変換し､ 変換器を適合させたことです｡
‫そこで､ Xのデータにフィットするように変換します｡
‫さて､ ここからはちょっと大げさな話になりますが､ 「1つのホットエンコーディングってどういう意味なんだろう」と思われるかもしれません｡
‫さて､ 見てみましょうか｡
‫基調講演に臨みます｡
‫これが､ 4台あれば一応ホットエンコードになるわけです｡
‫だから､ クルマは1､ 2､ 3がゼロで､ 色は赤､ 緑､ 青､ 赤ということです｡
‫1ホットにしたい場合は､ これをエンコードする｡
‫だから､ 基本的にはカテゴリーを数字に変えていく｡
‫こんな感じでしょうか｡
‫これが､ 1つのホットエンコードの役割です｡
‫0号車は赤色なので､ この小さな矢印はデータフレームを変換するために使用したコードと思われます｡
‫そこで､ カテゴリーを数字に変換するために
‫つまり､ これは一つのホットなエンコードなのです｡
‫つまり､ ゼロは色が赤だから1で､ 他の2つのカテゴリーではゼロになり､ 緑も同じです｡
‫しかし､ 今回は緑なので､ 赤は0点､ 緑は1点､ 青は0点となる｡
‫ブルーは全く同じです｡
‫赤がゼロ､ 緑がゼロ､ そして青い車なので青が1｡
‫そして最後に､ 3号車も赤なので､ 0号車と同じように1があり､ 緑と青には0と0があるのです｡
‫さて､ ここでやったことは､ 色の列だけでなく､ 他の面でも同じことです｡
‫MakeとDoorsのコラムでやりましたね｡
‫そのため､ 012から11の機能まで､ 0と1がずっと並んでいるわけです｡
‫ここで､ 各サンプルの異なるパラメータ､ つまりホンダ､ ホワイト､ ドアの数を0か1にエンコードしています｡
‫だから今､ 美しいのは私たちのデータなのです｡
‫すべて数値です｡
‫では､ どうすればいいのか？
‫まあ､ モデルに合わせればいいんですけどね｡
‫でも､ 念のために言っておくと､ それは明確ではありません｡
‫もうひとつ､ こんな方法もあるんです｡
‫そして今｡
‫ダミーのイコールになれるように｡
‫pandasにGet Dummiesという関数があるのですが､ これは1ホットエンコードのようなものです｡
‫でも､ どうなんだろう｡
‫実は､ なぜダミーと呼ばれるのか､ よくわからないんです｡
‫ただ､ 機能がゲットダミーであることは知っています｡
‫だから､ ダミーにするとPDはダミーにならず､ 車の販売を変革したいのです｡
‫変換したい､ あるいはダミーにしたい列のリストを渡します｡
‫そこで､ ドアです｡
‫では､ ダミーについて見てみましょう｡
‫さあ､ どうぞ｡
‫だから､ ドアだからと思うのです｡
‫ドーズは数字｡
‫ここでもうまくいっていない｡
‫しかし､ これはこれで､ 何が起こっているのかがわかる｡
‫だから､ ゼロなんです｡
‫マイク
‫BMWはゼロ｡
‫だから､ ホンダなんです｡
‫日産はゼロ､ トヨタはゼロ､ 黒､ 青､ 緑､ 赤､ 白もゼロだ｡
‫つまり､ これを通れば､ メーカーとカラーが0と1になるだけなんです｡
‫美しい｡
‫では､ データがすべて0と1になったので､ モデルを再フィットしてみましょう｡
‫だから､ 私たちは行きたいんです｡
‫42個になった時点で､ ランダムなシードは行わないので､ 結果の再現性があります｡
‫ここでXを変形させて使うんです｡
‫だから､ Xの代わりにこっちを｡
‫だから､ その×列車をしよう｡
‫新しい新しいトレーニングデータとテストデータのイコールtrain test splitを設定することにします｡
‫Xに変形させて渡すのですが､ Yはすでに数値化されているのでそのままでいいんです｡
‫そして､ テストも行う｡
‫サイズは0に等しい｡ 2.
‫素晴らしい｡
‫そして､ モデルフィッティング､ xトレインに進みます｡
‫Y列車｡
‫美しい｡
‫うまくいった｡
‫そして､ 今度はそれを評価してみましょう｡
‫モデルスコア
‫Xテスト｡
‫Yテスト｡
‫素晴らしい｡
‫これで､ うまくいきましたね｡
‫つまり､ 変換されたXを使い､ ここでちょっとしたコードを書いて､ データをカテゴリーから数値に変換しているわけです｡
‫また､ 以前は､ 私たちのモデルは､ 日産自動車のために､ 浮動小数点数を浮動小数点数に､ 文字列を浮動小数点数に変換することができませんでした｡
‫ここで､ 最初のX変数を使ったとき｡
‫データはカテゴリー形式なので､ やはり文字列でサンプルを表現しています｡
‫何があったんですか？
‫それをエラーにする｡
‫バリューエラーが発生しました｡
‫しかし､ ここで同じコード model fit x train, y, train and score を実行すると､ データはすべて数値なので､
‫y のエラーは出ません｡
‫さて､ こちらのスコアですが､ 仮にベストスコアを想像すると1です｡ 0.
‫モデルはおそらく､ できる限りやっていないのでしょう｡
‫でも､ ここのデータを見ていたら､ そんな話をしたのを思い出してください｡
‫ザ・エキサイター
‫そして､ それを使って車の価格を予測しようとしていたんですね｡
‫おそらく､ かなりハードになると思います｡
‫つまり､ モデルはいくつかのパターンを発見したのですが､ 各サンプルに関する情報があまりなかったため､ それほど素晴らしいものではなかったということでしょう｡
‫でも､ そんなことはどうでもいいんです｡
‫評価指標については､ 後で調べればいいのです｡
‫ここで重要なのは､ モデルやデータのストーリーを非数値的なものから完全に数値的なものに変換し､ それに機械学習モデルを当てはめることができるようになったということです｡
‫今はそれをカバーしています｡
‫すべてのデータを数字に変換しました｡
‫欠損値があった場合はどうなるのでしょうか？
‫次の動画で確認してみましょう｡