技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

暫く積んでた本の着手

Kaggle やり始めて撃沈して、ちまちま勉強していたけど、そもそも基礎がなってない気がしてそれっぽい物を探した痕跡。
最近までずっと Salesforce で Trail 祭りしてたからなぁ(汗

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

利用する系のライブラリ

# データ解析、機械学習系
import numpy as np
import numpy.random as random
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame

# 可視化系
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns

%matplotlib inline
%precision 3
'%.3f'

マジックコマンド

jupiter notebook の機能群

  • %run 外部コマンドの実行
  • %cp ファイルのコピー
  • %time 時間の計測
  • %precision numpy 拡張。表示する場合の有効桁数を指定する。
  • %matplotlib Matplotlib 拡張。グラフなどの表示法を設定できる。inline など。
  • %quickref コマンドの一覧表示など

numpy 近辺

# use array.
example_array = np.array([1, 4,  8, 16, 6, 8, 1, 5])

# tab key on after dot(.) to code complete
example_array.dtype
dtype('int64')
# scalr multiple (standard calc type are always scalared effective)
example_array * 2
array([ 2,  8, 16, 32, 12, 16,  2, 10])
# sort is a side-effected function
example_array.sort()
example_array
array([ 1,  1,  4,  5,  6,  8,  8, 16])
# array function as method.
print(f'Default: {example_array}')
print(f'Max: {example_array.max()}')
print(f'Min: {example_array.min()}')
print(f'Sum: {example_array.sum()}')
print(f'Cum: {example_array.cumsum()}')
print(f'Ratio: {example_array.cumsum() / example_array.sum()}')
Default: [ 1  1  4  5  6  8  8 16]
Max: 16
Min: 1
Sum: 49
Cum: [ 1  2  6 11 17 25 33 49]
Ratio: [0.02  0.041 0.122 0.224 0.347 0.51  0.673 1.   ]
# random variables
random.seed(0)
rand_data = random.randn(10)
rand_data
array([ 1.764,  0.4  ,  0.979,  2.241,  1.868, -0.977,  0.95 , -0.151,
       -0.103,  0.411])
# random data choice
random.choice(example_array, 5)
array([ 8, 16, 16,  8,  1])
# with no duplicate.
random.choice(example_array, 5, replace=False)
array([4, 5, 6, 8, 1])

行列近辺の扱い

# create array
as_array = np.arange(9)
print(as_array)

# to matrix
as_mtx = as_array.reshape(3, 3)
print(as_mtx)
[0 1 2 3 4 5 6 7 8]
[[0 1 2]
 [3 4 5]
 [6 7 8]]
array2 = np.arange(9, 18).reshape(3, 3)
print(array2)
[[ 9 10 11]
 [12 13 14]
 [15 16 17]]
np.dot(as_mtx, array2)
array([[ 42,  45,  48],
       [150, 162, 174],
       [258, 279, 300]])
as_mtx * array2
array([[  0,  10,  22],
       [ 36,  52,  70],
       [ 90, 112, 136]])

演習問題

# 1. 1-50 の自然数の和を計算
print((np.arange(50) + 1).sum())

# 2. 乱数を 10 個作って、最小、最大、合計を計算
random.seed(0)
rand_arr = random.randn(10)
print(f'Min : {rand_arr.min()}')
print(f'Max : {rand_arr.max()}')
print(f'Sum : {rand_arr.sum()}')

# 3. 要素全てが 3 の 5x5 行列作成、その 2 乗を計算
all_three = np.ones((5, 5), dtype=np.int32) * 3
print(all_three)
print(all_three ** 2)
1275
Min : -0.977277879876411
Max : 2.240893199201458
Sum : 7.380231707288347
[[3 3 3 3 3]
 [3 3 3 3 3]
 [3 3 3 3 3]
 [3 3 3 3 3]
 [3 3 3 3 3]]
[[9 9 9 9 9]
 [9 9 9 9 9]
 [9 9 9 9 9]
 [9 9 9 9 9]
 [9 9 9 9 9]]