分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。
金子研において、学生が研究室配属になった後は、新人研修として Python プログラミングを学んだり 色々なデータ解析・機械学習をしたりします。そして毎週、進捗の状況を報告してもらっています。その報告する資料の作り方として、データ解析・機械学習の結果は図表にしたり、図表からの違和感を大切にしたりすることは、こちらに書いた通りです。
データ解析・機械学習を行うためには、プログラミングをする必要があります。金子研では、Pythonを使用していますので、データ解析・機械学習の理解だけでなく、Python プログラミングのトレーニングも新人研修で行います。
今やPythonは広く知られたプログラミング言語であり、インターネットで検索すれば多くの Python コードが出てきますし、ChatGPT でも Python コードを生成してくれます。ただ、それを盲目的に使うことは非常に危険です。
Python コードの1行1行、各行の意図や意味を説明できるようにプログラミングするよう伝えていることはこちらに書いたとおりです。
プログラムを書く時、1行1行説明できるだけでは不十分なことがあります。例えば、他人が自分のコードを使用する時や未来の自分がコードを使用する時です。「今の」自分は説明を理解できたとしても、他人が理解できなかったり、未来の自分が理解できなかったりすることがあります。
他にも、自分のフォルダ (ディレクトリ) やファイルを絶対パスで指定していると、他の人のパソコンでコードが動かなかったり、自分で新しく買い替えたパソコンでコードが動かなかったりします。また、ファイル名、サンプル番号、ハイパーパラメーターの値などの、何らかのパラメータをコードの途中で、しかも手打ちで設定もしくは変更していると、そのパラメータが途中で (再) 設定されていることに気づきません。他の人や未来の自分も、もちろん気づくことは困難です。さらには、別のデータセットを解析するときなど、設定したパラメータの値がフィットしない時には使い物になりません。
このようにコードを作成する時は、他人や未来の自分が見ても分かりやすく、そして可能な限り多くの状況で対応可能になるよう汎用的に作成すると良いでしょう。変数の名前を分かりやすくしたり、変数の内容を設定することをコードの最初でのみ実施したり、絶対パスではなく相対パスで指定したり、保存されるファイルがある時は設定したパラメータによって自動的にファイル名が変わるようにしたりといった方法があります。
自分一人でできることは限られていますが、他の人と協力することでより多くのことができるようになります。自分のコードを他人が見ることもありますし、相手のコードを自分が見ることもあります。また、将来的に自分のコードを見返すこともあるでしょう。そのような時に問題なく対応できるように、分かりやすく、適用的なコードの作成を心がけると良いでしょう。
以上です。
質問やコメントなどありましたら、X, facebook, メールなどでご連絡いただけるとうれしいです。