LogoMark.png

データサイエンス/2021/1105

第8回 データサイエンスとPython

データサイエンス/20212021.11.05

AGENDA


以下、LIVE動画をご覧下さい。記事に沿って解説します。
記録動画、学科サイトの特設ページ(要ログイン)に移動しました。



CONTENTS




はじめに

現代社会におけるデータサイエンスの位置付け

データサイエンス(Data Science)とは、データそのものの性質やデータを取り扱う手法を研究する科学全般を指す言葉で、統計学機械学習データマイニング、可視化・・など、様々な分野を包括する概念です。

数値や文字(カテゴリ)として得られるデータを統計的手法や機械学習(近年の AI の技術ベース)などを用いて分析・処理することによって、世界に潜む様々な物事の関係(モデル)を見出す科学であるとも言えます。

関連する諸分野との関係を図で表すと以下のようになります。
GoogleImage:Data Science Machine Learning AI

これが正しい・・という図を書くことはできません。作図する人の立場や説明の手順によって、それぞれの包含関係は変わるので、ざっくり位置関係を把握すれば十分ではないかと思います。

データサイエンスにできること

データサイエンスの限界

データからわかるのは過去から現在までことです。データの活用は、未来の予測や目標達成のための「最適化」には効果的かもしれませんが、生物の社会のような複雑な系の未来を予測することや「創発」的なデザインには限界があります。

人は未知のものにニーズを抱くことはありません。デザインを志すみなさんには、データサイエンスの威力を感じつつも、若干引きで眺める視点が必要です。

関連事項

一般にデータサイエンスの教科書では、データを扱う人の心構えとして、以下のような事項が記載されていますが、みなさんは、すでにソーシャルデザイン演習・応用演習、また学科サイトの日常的な運用において、このあたりは学習済みなので、この演習では省略します。




Python 言語について

第8回から第14回まで、すべての学習体験に Python というプログラミング言語を使います。データサイエンスの世界では、スプレッドシートを用いた統計処理と並んで、Python言語による統計処理が主流となっており、インターネット検索でも、様々な手法を知ることができます。

Google Colaboratoryについて

Python言語を使うには、パソコンに開発環境をインストールする方法もありますが、ここでは Python の学習環境として様々なテキストで紹介されている Google Colaboratory を使用します。

Google Colaboratory とは、Googleの仮想マシン上で動く Jupyter Notebook*1 をベースとした開発環境です。Googleアカウントがあれば、日常的に用いているブラウザから誰でも無料で利用できます。
https://colab.research.google.com



さっそく、使ってみましょう。



Google にアクセスしてログイン

Colaboratoryにアクセス

login.jpg
rename.jpg

Jupyter Notebook の概要

Jupyter Notebookには、コード(プログラム)を書くためのコードセルと、テキスト(ノート)を書くためのテキストセルの2つがあります。この2つのセルを使うことで、見出し・解説・プログラムを文字通り「ノート」のようにまとめることができます。


対話処理の初期体験

学科サイトにリンク掲載(その1)

上記のプログラムのノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。

このようなファイルを作っておくと、今後ちょっとしたコードの動作確認を行うためのノートとして活用することができます。


付記1

Googleアカウントがあれば、誰でも無料で利用できますが・・


最初のプログラミング体験

モンテカルロ法で π の値を求める

円周率(π)を近似的に求めるプログラムを通して、Google Colaboratoryの使い方とPythonプログラムの書き方を体験してみましょう。

ノートブックの新規作成

サンプルコード


手法の解説

Montecarlo_pi2.PNG

Wikimediacommons File:Montecarlo pi2.PNG

学科サイトにリンク掲載(その2)

「モンテカルロ法で π の値を求める」プログラムのノートを、学科サイトの個人ページからリンクして下さい。以下、手順です。

付記2

今日の AI技術 もデータサイエンスも「大量のデータから最適解を見出す」という点では共通しています。これまで、数理的な問題解決には、解析的な方法で数式を解いて答えを出す・・という学び方をしてきたと思いますが、コンピュータが使える今日では「力ずくで最適解に近づく」ということが可能になりました。

数学の問題は、計算によって綺麗な整数解が得られるように作られていますが、現実の問題はそうではありません。で、実際のモノ作りの現場では、実用上「ミリの単位までの数字で十分」ということがあります。

今日の数理の世界では、コンピュータの登場によって従来とは異なる発想が可能になっている・・という事実を確認しておきましょう。



Python プログラミング入門

Pythonプログラミングの文法 について説明しはじめると、それだけで長期の学習期間が必要になってしまいます。ここでは、上記の事例体験を通してその概要を把握することからはじめましょう。

import <モジュール名>

既存のライブラリプログラムを利用するための下準備です。Python には、様々な既存の機能が「ライブラリ」というかたちで用意されています。例えば、乱数を発生する機能もその一つで、みなさんがその機能を実現させるためのコードを一から書く必要はありません。

import math        # 数学関数を利用する場合に読み込みます。
import random    # 乱数を利用する場合に読み込みます。


変数と代入

変数の活用と、代入処理はプログラミングの基本です。

n = 1000

制御文

上記のプログラムでは if 文for 文を利用していますが、プログラムの流れを制御するには、これに while 文 を加えた3つの文の書き方がわかっていれば、大半のことは可能になります。

if 文

判断結果(true / false)によって処理を分岐します。

 if r <= 1.0:
     cnt_in += 1
 else:
     cnt_out += 1

この例では、r が 1.0以下の場合は、cnt_in が1つ増え、そうでない場合は、cnt_out が一つ増えます。

for 文

一定回数処理を繰り返す場合に利用するものです。

for i in range(1000):
    # ここに処理内容を記述

この例では i の値が 0 から 999 まで「処理」が1000回繰り返されます。

while 文

while 文は条件が真の間処理を繰り返します。

while n < 100:
    # ここに処理内容を記述

この例では n の値が 100未満の場合に「処理」が繰り返されます。

range関数 について

range 関数は開始値から終了値(未満)までの数値を要素として持つオブジェクトで、繰り返し処理では頻繁に利用されます。
range(start, stop[, step])

インデントについて

Python ではインデント(字下げ)によってブロックを表現します。


コメント

Python では # 記号以降はコメントとして扱われます。プログラム上で文の機能を一時的に無効にする(コメントアウト)場合にも利用可能です。

本日の入門解説はこれにて終了です。
本日作成した2つのノートについては、各自の関心に応じてコードやコメントを追記してください。



APPENDIX

皆さんは、数学の世界を分類する代数 幾何 解析という用語を覚えていますか。学問領域を完全に線引きして区別することはできないのですが、それでも分類用語を知っておくことは「今、自分は何を学んでいるのか」を理解する一助となります。データサイエンスの世界も同様、様々な 関連用語 をざっくりと把握するだけでも、全体像が把握しやすくなります。

以下の区分も、知っていると世界がさらに見えやすくなります。

決定論と確率論

数理の世界には、決定論的なアプローチと、確率論的なアプローチの2つがあります。たばこの煙に例えると、たばこの先から一直線に上昇している部分の粒子の位置は、時刻 t を変数とした数式で決定論的に記述されますが、天井に拡散した粒子のふるまいは、確率論的にしか記述できません。ちなみに、その中間にある煙の「乱れそめ」の部分は「カオス理論」の対象となりあす。

線形と非線形







PAGES

GUIDE

TOOL

DATA


*1 Jupyter Notebook は、ブラウザ上で Python のコードの編集とインタラクティブな実行ができるだけでなく、テキストドキュメントを挿入したノートとして情報共有する仕組みを実現したオープンソースのWebアプリケーションです。数値シミュレーション、統計モデリング、データの視覚化、機械学習などを得意とする、総合的なデータサイエンスツールです。
Last-modified: 2021-11-05 (金) 08:52:39