LoginSignup
0
0

More than 3 years have passed since last update.

Chainer の機械学習入門チュートリアル覚書

Posted at

きっかけ

  • 大学院で画像解析、pythonやR使ってプログラミング、機械学習や統計について勉強といった具合に、いいとこ取りしてきた自分にとって、今まで学んできたことを体系的におさらいするには良いと思ったため。
  • てか普通に忘却のかなたに連れ去られている事項も多いから、効率的に学び直せるものはないかと思ったら、下記の記事を見つけ、こりゃいいと思った。謝謝。
  • https://qiita.com/DogFortune/items/221c182bc872025a57e7

大事だと思ったことメモ

基礎

fundemental.py
# 型の確認
type()
#計算式使うときは、演算子の前後に空白入れようね。
1 + 1
#この空白は Python のコーディング規約である PEP8 でも推奨されています。

# 一方、商(整数部分)を返すような除算演算子として、 // 記号が用意されています。 / 記号を 2 回、間を空けずに繰り返します。計算結果として商を返す除算のことを、 切り捨て除算 (floor division) と呼びます。

## 累積代入文を使う場合
count = 0
count += 1
count

## Format構文
name1 = 'Chainer'
name2 = 'チュートリアル'

'{} {}へようこそ'.format(name1, name2)

#複合データ型
リスト (list)
タプル (tuple)
辞書 (dictionary)

#リスト

#リストから一度に複数の要素を取り出す操作であるスライス (slice) 

#リストへの値の追加があります。 リスト型には append() というメソッドが定義されており、これを用いてリストの末尾に新しい値を追加することができます。
array.append(2.5)

#タプル
#特徴
##タプル (tuple) はリストと同様に複数の要素をまとめた型ですが、リストとは異なる点として、定義した後に中の要素を変更できないという性質を持ちます。

#辞書型(Dict型)
##連想配列。キーと要素で構成される。
#他の人が定義した辞書に、どのようなキーが存在するのかを調べたいときがあります。 辞書には、そのような場合に使える便利なメソッドがいくつか存在します。
keys(): キーのリストを取得dict_keys というリストと性質が似た型が返る
values(): 値のリストを取得dict_values というリストと性質が似た型が返る
items(): 各要素の (key, value) のタプルが並んだリストを取得dict_items というリストと性質が似た型が返る

#制御構文
## For文で使えるenumerate()関数
リストをイテラブルオブジェクトとして指定した場合要素番号を取得できませんが状況によっては要素番号を使用したいことがありますそのような場合はenumerate() という組み込み関数を使います これにイテラブルオブジェクトを渡すと(要素番号, 要素) というタプルを 1 つずつ返すイテラブルオブジェクトになります

#関数
# 関数 double() の定義
def double(x):
    print(2 * x)

#複数の引数を使う場合
# 関数の定義
def add(a, b):
    print(a + b)

#グローバル変数とスコープについて
a = 1

def change():
    global a  # a をグローバル変数である宣言
    a = 2       # グローバル変数への代入

# 関数の実行
change()

# 結果の確認 <- a の値が上書きされている
a

#上の例からもわかるように、global a という行を change() 関数内で a という変数を使用する前に追加すると、その行以降は a という変数への代入も関数の外側で定義されたグローバル変数の a に対して行われます。

#Classと継承について
最高にわかりやすいので以下を参照
"https://tutorials.chainer.org/ja/src/02_Basics_of_Python_ja.html#%E3%82%AF%E3%83%A9%E3%82%B9"

useful.py
for i in range(3):
    print('{}さん'.format(names[i]))

#zip()関数
names = ['Python', 'Chainer']
versions = ['3.7', '5.3.0']
suffixes = ['!!', '!!', '?']

for name, version, suffix in zip(names, versions, suffixes):
    print('{} {} {}'.format(name, version, suffix))
#もっとも長さの短い列の回数が反映されるため、suffixの'?'は使用されていない。

#While文のあまり使ったことない書き方(whileは無限に続けさせておいて、その中にif文を書いてbreakで終了させるやり方。)
count = 0

while True:
    print(count)
    count += 1

    if count == 3:
        break

#Whilie文で not を使ったループのやり方。
count = 0

while not count == 3:
    print(count)
    count += 1



pythonの強み

  1. データ解析や機械学習によく使われている
  2. Web アプリケーションの開発などでもよく使われている
  3. 初学者がはじめやすい言語

感想

自分が勉強してたのは5,6年前だけど、過去の黎明期に比べて、格段に内容が整理されていてクッソわかりやすい。こりゃいい。特にクラスの説明。クッソわかりやすい。今回の学習内容とは関係ないが、今までで1番の課題であった、論理的思考と感情的思考が頭の中で調和する瞬間があった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0