‫これで理想的なモデルができあがり､ 検証用データセットでかなり -- うまく機能しています｡
‫つまり､ valid arm's lengthは､ 今回のKaggleコンペティションの評価指標であるため､ 私たちが注目している指標です｡
‫もちろん､ 別の問題や別のデータセットに取り組んでいる場合は､ 改善しようとする評価指標も異なるかもしれません｡
‫でも､ 私たちの場合は､ かなりうまくいっていますよ｡
‫そこで､ 理想的なモデルを使って､ テストデータで予測をしてみましょう｡
‫このセクションには､ 覚えておくと本当に便利な小ネタがあり､ これから紹介します｡
‫ということで､ まずはテストデータのインポートです｡
‫さて､ 見てみると｡
‫私たちのデータフォルダで
‫これはJupiterのホームで､ この特定のプロジェクト用にプロジェクトフォルダを作成し､ データをダウンロードし､
‫ここに入れています｡
‫この中にテスト用CSVのデータセットがあります｡
‫ということで､ 今回使用するのはこれ｡
‫そして､ Kaggleに戻ると､ テストCSVはコンペティションの最終週まで公開されないテストセットであると表示されるのです｡
‫このコンペティションは既に終了していますので､ 現時点で入手できるのは､ 2012年5月1日から2012年11月までのデータです｡
‫なるほど､ 検証セットから半年ほど経った頃ですね｡
‫美しい｡
‫そして､ 私たちのモデルは検証セットで問題なく動作しています｡
‫ですから､ この先の半年間のデータでどのような予測ができるかを見ていただくのが良いと思います｡
‫そこで､ rdv test equals PDFまたはread see as vとします｡
‫最初にやったのと全く同じように､ 訓練データと有効データセットでやってみます｡
‫ブルドーザー用ブルーブック｡
‫素晴らしい｡
‫テストCSVと呼ばれるもので､ Low Memory equals falseを渡します｡
‫また､ 日付も渡します｡ このデータセットには､ 他のデータセットと同じように何も操作していないことを思い出してください｡
‫それがどこに出てくるか､ ちょっと見てから､ DFテストのドットヘッドを確認します｡
‫ああ｡
‫どうしたんですか？
‫あ､ 誤字脱字｡
‫美しい｡
‫だから､ これは見覚えがある｡
‫以前にも見たことがあるようなものです｡
‫今以外はね｡
‫今回､ テストデータセットには販売価格の列がない｡
‫その理由は､ 私たちが予測しようとしているのが､ このコラムだからです｡
‫では､ それができるかどうか､ 試してみませんか？
‫そこで､ イコール理想的なモデルをテストしてきます｡
‫今回は理想的なモデルを使いますが､ 理想的なモデルが最も良いパフォーマンスをしているので､ データフレーム全体を渡すことができるはずですよね？
‫なぜなら､ これが私たちのXの値になり､ 販売価格の列がないので､ 列を落とす必要がないからです｡
‫では､ どうなるか見てみましょう｡
‫このセルを動かす前に､ 何が起こるか考えてみてください｡
‫機械学習モデルは､ 特定のデータセットで学習させた後､ テストデータセットをインポートしています｡
‫このデータセットで予測をしようとすると､ どうなるのでしょうか？ ヒントは､ 私たちのモデルが学習したデータに基づいてあげましょう｡
‫また､ よくわからないという方も大丈夫です｡
‫すぐに見ることができます｡
‫今すぐ見るべき
‫ああ､ そうだったのか｡
‫値のエラー｡
‫なるほど｡
‫どうしたんですか？
‫文字列をfloatに変換できませんでした｡
‫あ､ そうか｡
‫では､ 冒頭を思い出して､ これまで作業してきた野獣のようなノートブックをスクロールアップしてみましょう｡
‫機械学習モデルを学習させる前に､ 私たちは何をしていたのでしょうか｡
‫私たちが最初にモデリングを始めたときにも､ 同じようなエラーがありました｡
‫見つけられたら最高なんだけどな｡
‫当社のモデルです｡
‫うまくいかなかった｡
‫さあ､ どうぞ｡
‫なるほど｡
‫モデルを作る｡
‫だからDFのテンプレート落ち｡
‫文字列をフライトに変換できませんでした｡
‫つまり､ 同じエラーメッセージが下にあるものです｡
‫さて､ なぜこのような事態になったかというと､ あなたはどう思いますか？
‫それは､ 元のデータセットをインポートする際に､ 何らかの操作を行ったからです｡
‫私たちは何をしたのか？
‫データが数値であることを確認し､ 欠損値がないことを確認しました｡
‫そこで､ DFテストをインポートしてみました｡
‫欠損値があるかもしれない､ それはそうだ｡
‫また､ すべてが数字ではないかもしれません｡
‫と｡
‫遠くへ｡
‫ここでは､ かなりのデータ処理を行いました｡
‫そして､ 列をとると｡
‫というわけで､ 以上が特徴のすべてです｡
‫しかし､ 元電車のコラムをチェックすると｡
‫ああ､ そこにブラケットは必要ないんですね｡
‫列の長さが違うことに気づきました｡
‫ふむ｡
‫つまり､ Xトレインには102本のカラムがあるわけです｡
‫一方､ DFテストではどうでしょう？
‫以前､ ドットヘッドをやったときに､ この辺りで見たんですよ｡
‫52列｡
‫うーん｡
‫つまり､ 機械学習モデルが現時点でテストデータセットで予測できない理由は､
‫モデルが学習したデータセットと同じ形式でないためです｡
‫ということになりますね｡
‫わかりました｡
‫ここでこれらを解消しておきましょう｡
‫それがどうした？
‫どうすればいいのでしょうか｡
‫だから､ データの前処理をすることもあります｡
‫つまり､ テストデータセットをトレーニングデータセットと同じフォーマットで取得することです｡
‫素晴らしい｡
‫では､ どうすればいいのでしょうか｡
‫そこで､ どうすればいいかというと､ そのための機能を作ればいいと思うんです｡
‫ですから､ 新しいデータセット､ 例えばテストデータセットをインポートする場合､ 実はトレーニングデータセットに何らかの操作を加えているのです｡
‫トレーニングデータセットで行った関数を､ テストデータセットでも全く同じように行うことができるのです｡
‫そうすると､ どちらも同じになるんですね｡
‫なるほどね｡
‫まずは見てみよう｡
‫やってみましょう｡
‫そこで､ データを事前に処理したり､ データフレームを渡したりします｡
‫ここに少し書き残しておきます｡
‫つまり､ DFに対して変換を行い､ 変換後のDFを返すという単純なものですね？
‫ある種のデータフレームを受け取る関数を作りたい｡
‫そのデータフレームに対して様々な操作を行い､ 最終的にそのデータフレームを返します｡
‫では､ ここでテンプレを行うために元々行っていた変換をすべて記入する必要があります｡
‫そして､ それを実現するのが､ 「上がる」ことです｡
‫ここは何度かコピーしてペースを上げるしかないかもしれませんね｡
‫だから､ 一番上に戻ってすぐ覚えてください｡
‫だから､ これはちょっとしたルール､ ちょっとした豆知識なんです｡
‫トレーニングデータセットに行ったことは､ テストデータセットにも行わなければならないのです｡
‫これは機械学習の豆知識ですね｡
‫なるほど｡
‫そこで､ 最初に行った大きな操作のセットを紹介します｡
‫それをコピーするのかもしれません｡
‫素晴らしい｡
‫そして､ この台詞を思い出せばいいのです｡
‫そこで､ ここでは日付時間列の販売日に基づいて情報を追加し､ それを削除しました｡
‫だから､ この2つが最初のステップになるんです｡
‫なるほど｡
‫ノートの最後までスクロールします｡
‫このビデオでは､ スクロールが多くなりますが､ それは､ 大きく3つのことを正しく行ったからです｡
‫ここで､ 日付時刻に情報を追加したり､ 抽出したりしました｡
‫そのほうがいいかもしれませんね｡
‫日付時刻のカラムから情報を抽出し､ データフレームに追加したのです｡
‫そこで､ def dot dropを行い､ この後､ 販売日の列を落とすかもしれません｡
‫そして､ axisイコール1､ in placeイコールtrueとします｡
‫素晴らしい｡
‫そして､ DFしか使っていないので､ これらすべてからtempを削除しなければなりません｡
‫カーソルを移動させながら､ Macならcommand､ Windowsならcontrolを押しながら､
‫ここでbackspaceを押すのがちょっとしたコツです｡
‫素晴らしい､ ですね｡
‫DFの派遣ではなく､ DFと一緒に仕事をしているからです｡
‫そのため､ 任意の名前のDataFrameがこの関数で動作します｡
‫そこで､ 次に行うことは､ 数値の行を中央値で埋めることです｡
‫そして､ 私たちも｡
‫カテゴリーを満たした｡
‫データを欠落させ､ 数字にする｡
‫そして､ カテゴリーを数字に変える｡
‫だから､ それをスクロールして探し出すしかないのです｡
‫まずはそれをやってみましょう｡
‫足りない足りない新しい奇跡を手に入れる｡
‫幸いなことに､ 私たちはノートを敷いています｡
‫ここでは､ 何をやっていたのかがわかるように､ このような見出しをつけました｡
‫これも自助努力の一つですよね？
‫そのため､ 数値行は中央値で埋める｡
‫実はこのコード､ 全部ここで必要なんです｡
‫それをコピーするのです｡
‫美しい｡
‫このように､ ノートブックにコメントやさまざまな見出しをつけることは､ 将来の自分にとって､ 目線を機能させたり､
‫物事を整理したりする際にとても役に立ちます｡
‫そこで､ またまた
‫DF tempを削除して､ DF tempを得る必要があります｡
‫そのDFのテンプレはいらない､ DFだけでいいんだ｡
‫なるほど｡
‫美しい｡
‫そして､ カテゴリー別の欠損データを埋め､ カテゴリーを数値にする必要がまだあります｡
‫さて､ この方法を思い出せるかどうかですが､ 正直なところ､ もう十分スクロールしましたので､
‫上に戻る必要はありません｡
‫だから､ こんなことができるんです｡
‫そうでなくても､ 覚えていれば､ 数値型でなければ､ そのようにしました｡
‫Typekitはループしているので数値型コンテンツです｡
‫ここでも同じようなループに陥っています｡
‫行きたいコンテンツ
‫Def label plus underscore is missing yes equals.
‫つまり､ NULLかどうか､ NULLの場合はチェックされるわけです｡
‫ラベルが欠けている､ その特定のデータポイントが欠けているというラベルを追加したいのです｡
‫また､ カテゴリーコードにプラス1したことを思い出してください｡ パンダは､ カテゴリーが見つからないとマイナス1としてコード化するからです｡
‫だから､ ここが勝負どころなんです｡
‫Def labelはPD categoricalに等しいので､ categoricalに変えてください｡
‫そこで､ 特定の列の内容をカテゴリーに変え､ そのコードにアクセスすることで､ それを数字に変え､
‫プラス1するのです｡
‫わかりました｡
‫悪くない機能です｡
‫ノートブックのワークフローでは､ このようなことが行われているのですね｡
‫この上か？
‫このほとんどは､ かなり雑に分類できるのではないでしょうか｡
‫コメントで見出しを変えたりして､ 自分たちを助けてくれています｡
‫しかし､ さらにプロセスを進めると､ こうしたヘルパー機能を構築するようになります｡
‫つまり､ さまざまなステップを1つの関数に集約し､ ノートブックの中で本当に同期させることができるのです｡
‫このような関数を呼び出すだけで､ show scores関数のように､ 毎回同じ処理を行うことができます｡
‫ノートブックをスクロールして別のセルにあるものを探す必要はありません｡
‫これでシフトエンターを押せば､ 期待通りのブロックができあがります｡
‫必要ないと思っていました｡
‫ああ｡
‫だからこそ､ 必要なのです｡
‫ここではダンスで必要なんです｡
‫これでよしとしよう｡
‫クラシック
‫コードをコピー＆ペーストすると､ こうなるのです｡
‫そうだろ？
‫フォーマットは必ずしも完璧ではありません｡
‫美しい｡
‫ここでは､ ある種のデータフレームを事前に処理する関数を持っています｡
‫販売日の列を元に情報を追加していくのです｡
‫中央値で数値行を埋めることになる｡
‫欠損したカテゴリーデータをゼロ値に､ 残りのデータをカテゴリーコード番号に変換します｡
‫美しい｡
‫つまり､ いくつかのステップを経ているわけです｡
‫でも､ 大丈夫です｡ 私たちは､ すべてが一緒に起こるように機能しています｡
‫さて､ ここで私たちは何をすればいいのでしょうか？
‫実は､ この機能はどこで壊れる可能性があるのか､ というのが良い質問なんです｡
‫このビデオは､ 長くならないように､ これでお別れかもしれませんね｡
‫私たちが作ったこの大きな機能を見て､ 考えてみてほしいのです｡
‫これを学習用データフレームに渡すと､ どのように動作するのでしょうか？
‫そして､ テスト用のデータフレーム､ 右側のDF testを渡すと､ このデータフレームを渡します｡
‫どのように壊れる可能性があるのでしょうか？
‫次の動画でお答えします｡