Python | Pythonでできる3つのこと

## はじめに
* 機械学習
* データ分析・可視化
* WEBアプリケーション開発

Pythonでできることは主にこの３つです。
一つ一つ解説していきます。

## 機械学習
* 機械学習とはなにか
* 機械学習におけるPython
* 機械学習の学び方

### 機械学習とはなにか
機械学習を簡単に説明すると、課題をこなすのに一番コスパがいい方法はどれかをデータから発見するというものです。

よくAIと混同されがちですが、一部はあっています。AIという大きな枠組みの中に機械学習が有る、というものです。ジュースのという大きな枠組みの中に炭酸という分野が存在するようなものです。

具体的に、機械学習を用いると、言語間の翻訳やECサイトでのレコメンデーション（おすすめ機能）ができます。

### 機械学習におけるPython

Pythonには機械学習のためのライブラリ・モジュールが豊富です。
代表的には

* NumPy
* scikit-learn
* TensorFlow

などがあります。それぞれの特徴は以下のとおりです。

||特徴  |
|---|---|
|NumPy  |数学的計算を高速にできる  |
|scikit-learn|アルゴリズムやデータセットが豊富 |
|TensorFlow|Googleが開発・ニューラルネットワークの構築ができる|

### 機械学習の学び方3選

* ゼロから作るDeep Learning
* DL4US 東京大学松尾研究室
* Cousera 機械学習 スタンフォード大学

#### [__ゼロから作るDeep Learning__](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep+Learning&qid=1600215913&s=books&sr=1-1)
![ゼロから作るDeep Learning](https://images-na.ssl-images-amazon.com/images/I/51aFEr4SG4L._SX350_BO1,204,203,200_.jpg "ゼロから作るDeep Learning")

書籍で機械学習、特にディープラーニングを学ぶならこの1冊です。Pythonをある程度学んでから取り組むのがベストです。しかし、本自体が分厚いので書籍での勉強が苦手の人には、挫折率が高いかと思われます。

#### [__DL4US 東京大学松尾研究室__](https://weblab.t.u-tokyo.ac.jp/dl4us/)

日本ディープラーニング協会理事長、ソフトバンクグループ社外取締役である、東京大学の松尾豊教授を中心に作成された、授業で使われている実際のコンテンツです。すべて無償でダウンロードすることができます。

> 本コンテンツは、エンジニア向けDeep Learning講座「DL4US」のコンテンツです。高度な数学的知識を必要とせず、Deep Learningの新しいモデルを構築したり、高度な研究・開発を行うために重要な知識が基礎から学べるように設計されています。 
- https://weblab.t.u-tokyo.ac.jp/dl4us/ | 松尾研究室 DL4USコンテンツ　公開ページより引用

#### [__Cousera 機械学習 スタンフォード大学__](https://www.coursera.org/learn/machine-learning)

名門大学やGoogle,IBMなどの優良企業の一流講師によるオンライン講座であるCouseraにある、スタンフォード大学の機械学習コースです。言語は英語ですが、日本語字幕があります。機械学習を網羅的に学ぶことができます。

> このコースでは、機械学習、データマイニング、統計的パターン認識について幅広く紹介します。トピックは以下の通りです。(i) 教師あり学習（パラメトリック/ノンパラメトリックアルゴリズム、サポートベクターマシン、カーネル、ニューラルネットワーク）。(ii) 教師なし学習（クラスタリング、次元削減、推薦システム、ディープラーニング）。(iii) 機械学習のベストプラクティス（バイアス/分散理論、機械学習とAIのイノベーションプロセス）。また、多数のケーススタディやアプリケーションから学習アルゴリズムを引き出し、スマートロボットの構築（知覚、制御）、テキスト理解（ウェブ検索、スパム対策）、コンピュータビジョン、医療情報学、オーディオ、データベースマイニングなどの分野への応用方法も学びます。
- https://www.coursera.org/learn/machine-learning Coursera 機械学習 Stanford　より引用（https://www.deepl.com/ja/translator DeepLにて翻訳）


# データ分析・可視化
* データ分析・可視化とはなにか
* データ分析・可視化におけるPython
* データ分析・可視化の学び方

### データ分析・可視化とはなにか
データ分析とは、数字や文字などを収集し、各要素に分類・削除・付加などを行い、データの価値をつけることです。データ分析をすることで、傾向やそこからみつかる問題点を改善し、事業の発展に役立てることができます。

また、同時にデータ可視化を行い、グラフや表にすることで、さらにデータの本質・価値が見えてきます。

### データ分析・可視化におけるPython
Pythonにはデータを扱うのためのライブラリもあります。
代表的には

* Pandas
* SciPy
* Matplotlib
など

||特徴  |
|---|---|
|Pandas|データのグラフ化・データ分析・データの読み込み|
|Scipy|科学技術計算ライブラリ（微分積分・統計学など）|
|Matplotlib|グラフ描画ライブラリ|

## WEBアプリケーション開発
* WEBアプリケーションとはなにか
* WEBアプリケーションにおけるPython

### WEBアプリケーションとはなにか
WEBアプリケーションとは、サーバとクライアントを連携させて稼働するアプリケーションです。簡単に言うと、YoutubeやTwitterなどの個々人がアカウントを持っているようなアプリケーションです。

### WEBアプリケーションにおけるPython
PythonのフレームワークにはDjango,Flaskといったものがあります。

||特徴  |
|---|---|
|Django|豊富な機能、高品質・短時間でのアプリ開発|
|Flask|機能がシンプルで扱いやすい、小規模向け|
|Bottle|必要最低限の機能を搭載|

## まとめ
Pythonには、これ以外にもPygameを使ったゲームの開発やコードが明快でわかりやすいため
教育の現場にも用いられています。Pythonでできることを最大限活用して、楽しくプログラミングをしましょう！