‫お帰りなさい｡
‫前回のビデオでは､ アンパイア・レースを作るためのいくつかの方法を紹介しました｡
‫サンプル配列は単なる配列ですが､ ここではNP配列を使って数値のリストを渡しています｡
‫もうひとつある｡
‫もし､ 1だけのMP配列を作りたかったら､ シェイプを渡せばいい｡
‫さらに続けて､ ゼロの配列が必要な場合は､ NPゼロを使うことができます｡
‫例えば､ 0から始まり､ 10で止まり､ 2まで進むような､ 異なる数値の範囲にある配列が必要な場合です｡
‫範囲指定もできますし､ 乱数の配列が必要な場合は､ いくつかの選択肢があります｡
‫ある範囲の整数を返すrand intや､ ある形の0から1までの数を返すrandom
‫randomがあります｡
‫そして､ これらの機能が何をするものなのか､ どうやって知ることができるのでしょうか？
‫さて､ シフトとタブを押せば､ docstringが返されます｡
‫np random randomは0から1までの半開放区間を浮動小数点数で表し､ sizeというパラメータを取りますが､
‫ここでは5と3です｡
‫つまり､ 5行3列ですね｡
‫素晴らしいということがわかります｡
‫さて､ 前のビデオでnumpyが乱数を生成すると言いましたが､ 実際には乱数ではないのですが､ このセルを実行することがあります｡
‫私はこれを50回ほど奇数回実行したが､ そのたびに新しい乱数が出た｡
‫で､ どうするんだ？
‫どうしたんだ､ ダニエル？
‫なぜ？
‫この数字はランダムだと思うんです｡
‫まあ､ そうでしょうね｡
‫私たちにはランダムにしか見えません｡
‫しかし､ その実態は擬似乱数である｡
‫そして､ これはnumpyの乱数種を使うことで確認できます｡
‫さて､ 機械学習をしていると､ ノートブックの冒頭などで､ この小さな関数を目にすることがある｡
‫numpyがあるところならどこでも､ randomパッケージが使われている｡
‫さて､ これでどうでしょう｡
‫むしろ､ 話すこと？
‫実用的な意味でどうなのか､ これから見ていきたいと思います｡
‫ということで､ とりあえずコメントアウトしておきましょう｡
‫そして､ もう1つ作ればいいのです｡
‫我々はそれがこの1つが前にあり､ ランダムに支払われるのと同じではないことを確認することができますので､ ちょうどのためにランダム配列を移動します｡
‫ランドは､ サイズ5.3の10までの数字が欲しいので､ ラウンドしてみましょう｡
‫素晴らしい｡
‫そして､ これが何のためのランダム配列に見えるかを見てみましょう｡
‫これでよしとしよう｡
‫よし､ 数字だ｡
‫これらは､ 0から10までの数字です｡
‫ゼロファイブがある
‫大きさの美しさ｡
‫まあ､ これは本当に形なんですけどね｡
‫ナムパイとちょっと紛らわしいですね｡
‫このCreating a Ray関数のsizeパラメータは､ 実はshape属性なんですね｡
‫でも､ それでいいんです｡
‫こういうことは､ 自分たちで考えていけばいいんです｡
‫私たちは賢いので､ それができます｡
‫しかし､ これを実行したら毎回
‫新しいランダム配列と思われるもの｡
‫そして､ 我々が見ているものについては､ この乱数を毎回考えることができます｡
‫しかし､ このノートブックを他の人と共有し､ その人がノートブックの上から下まで細胞を走らせ､
‫私たちが行ったのとまったく同じ結果を得て､ 実験を再現できるようにしたいとしたらどうでしょう｡
‫そこで､ numpy is random seedの出番です｡
‫これにより､ 乱数を発生させることはできますが､ 再現性のある乱数を発生させることができます｡
‫では､ 見てみましょう｡
‫このセルの先頭のランダムシードを0に設定すると
‫そこで､ shift tabでパラメータを取り､ seedが何かと等しくなるようにすることができます｡
‫ですから､ 実際には好きな数字を設定することができます｡
‫ちょっと見てみましょう｡
‫そこで今回は､ ゼロに設定することにします｡
‫シフトとエンターキーを押そう
‫何があったんですか？
‫一票です｡
‫ちょっと待ってください｡
‫の数字が変わらなくなってしまったんです｡
‫さて､ これをコメントアウトするとどうなるか｡
‫変わったんです｡
‫なるほど｡
‫つまり､ 乱数シード関数は､ 「おい､ numpy､ 乱数を作ってくれ､ ただし､
‫シードと一致するようにしろ」と言うのです｡
‫だから､ ランダムシードは0である｡
‫この組み合わせは必ず見ますね｡
‫503503503 このセルを動かしているのは私です｡
‫ここで数字が上がっていくのがわかる｡
‫さて､ これはあなたの種が何であろうと関係なく機能します｡
‫だから637637｡
‫999031031に設定することもできる｡
‫え？
‫では､ 別のランダムな関数で再チャレンジしてみましょう｡
‫ランドイントでしたね｡
‫たぶん､ ここに行くんだと思います｡
‫念のためランダム配列5にして､ ランダムランダムとシフトタブをやってみましょう｡
‫これには何が必要なのでしょうか？
‫大きさは何かに等しい｡
‫だから､ 5と3が欲しいんです｡
‫ここでも､ ビューを追加します｡
‫どうしたんだ？
‫ランダムアレイ5
‫なるほど｡
‫この新しい数字を実行するたびに
‫なるほど｡
‫では､ ここにランダムシードを入れてみましょう｡
‫どうすればいいのでしょうか？
‫あなたが考えている1つの数字｡
‫私は7つ考えています｡
‫これでよしとしよう｡
‫7つです｡
‫です｡
‫私にはまだ数字が一見ランダムに見えますが､ ランダムCが行うのは､ それが数字を覚えていて､ ちょっと､
‫乱数を生成することなのです｡
‫しかし､ ランダムシーンを見て､ それが7に設定されている場合､ ランダムシードが7に設定されるたびに､ それらが同じであることを確認します｡
‫では､ 今､ この全く同じコードを実行すると｡
‫次のセルに
‫ランダム・ライ・ファイブは､ 任意のランダム・ファイブ・スリーに等しい｡
‫そして､ 私たちはもう一度言って､ 5つ祈りたいのです｡
‫ここが違う｡
‫これを続けていけば､ 最終的にはランダムシードと並ぶことになる｡
‫でも､ そんな時間はないんです｡
‫では､ ここからが本題です｡
‫さて､ NumPyが生成する数字は一見ランダムに見えますが､ 実はランダムではないのです｡
‫疑似乱数なんです｡
‫つまり､ numpy seedを実行せずにこの関数を実行すると､ 実際にやっていることは､ この関数を実行するたびに何かランダムな種を設定することなのです｡
‫しかし､ 手動で種を設定すると､ 同じ乱数が返ってくることになる｡
‫さて､ 重要なことは､ これらの数字は一見ランダムに見えますが､ ランダムシードを使う主な目的は､ 他の誰かが私たちのノートブックを使って､
‫私たちと同じ乱数を生成し､ それによって私たちの実験を再現することができるようにしたい場合です｡
‫その通りです｡
‫ランダムシードを設定することになる｡
‫つまり､ NPランダムシードが表示されていれば､ それが実行されていることになります｡
‫実行されたセル内の乱数が毎回同じになるようにしているのです｡
‫さて､ これで見納めです｡
‫ここまで､ いくつかの配列の作成方法について見てきました｡
‫乱数を用いて配列を生成する方法について見てきました｡
‫ここでは､ さまざまな配列や行列の表示方法について見ていきましょう｡
‫それでは､ 少し休憩して､ もっとランダムな配列を生成して､ numpyとrandom seedの練習をしてください､
‫次のビデオでお会いしましょう｡