Jupiter Notebook
参考
起動
$ jupyter notebook
上記コマンド実行後に出力されたTokenつきURLにアクセスする。
http://localhost:8888/?token=397ffd660a92ec8bc712d3f963853735553cff7b852aade9
メモ
実行しても既存の実行済みデータは保持される。
対話式と同様にオブジェクトでコード完了させると、内容がprintされる。
例)
※以降のPythonコードはJupiterで実行
一様分布乱数
%matplotlib inline import numpy as np import matplotlib.pyplot as plt np.random.seed() result = np.random.randint(1,101,10000) plt.hist(result, bins=5)
・1行目はおまじない
・1〜100(101-1)までの数字をランダムに10000個生成
・histメソッドでヒストグラム生成
・binsは集計する区間数。100までを5個に分ける=>20づつ集計
メモメモ後でまとめる。。。。
jupiterのきまりごと
実行してもすでに読み込み済み内容は保持される。
変数名で終わりになるとprintされる
ndarray型とは?
足し算や掛け算で利用した際は、要素同士を計算してくれる。
正規分布とは
ある値を中心とし、そこを起点にある程度のばらつきをもったデータの集合
2こうぶんぷ
numpy.random.binomial(n, p, size=None)
2こうぶんぷは偶然なのかを調査
bostonデータはボストンを500くらいに区切った区画ごとのデータ
機会学習ではtargetは正解データ
昔はtex最近はjupiterでやる人おおい。
jupiterからダウンロードで図を保存可能
plt.hist(prices, 20, cumulative=True)
cumulativeオプションで累積グラフになる
y, binEdges = np.histogram(prices, bins=20)
histgramはグラフではなく、データとして取得するメソッド
plt.plot(bincenters, y.cumsum())
cumsumは累積を出してくれる。
abc分析とは?
np.average(prices)
平均値 = average
中央値= median
成績順にならべかえた時、真ん中の人がどの点数であったか?
3人いて以下の点数であったとき
10 20 100
平均43.333333
中央20
四分位数とは?
集団を順位別に4分割し、その分割の句切れ目を、それぞれ
第一四分位数
第二四分位数
第三四分位数
という。
これで傾向がわかる。
100点満点テストの場合、
第二四分位数の位置の人の点数が30点であれば、難しいテストだったのかな?など
pandas
データ解析用のライブラリ
boston
は
boston.target
と
boston.data
がある。
機会学習のデータセットは、targetが正解データ
Dataframeを使う際はcolumは大事。データを指定して取り出す時に使う。インデックス(数字)を指定しても可能だが、面倒・間違いやすい
plt.scatter(df['RM'], df['PRICE'], s=100, alpha=0.5)
sは点のサイズ
alphaは透明度
plt.figure(figsize=(12, 8))
plt.scatter(df['RM'], df['PRICE'], s=100, alpha=0.5)
データフレームにすると散布図が楽
y=x
これは相関係数1
y=-x
これは相関係数-1
dataframeを使うと相関係数の一覧が簡単に出せる
df'CRIM', 'RM', 'PRICE'.corr()
どの要素とどの要素が連動しているか?
感覚的に0.4~0.5あれば、関係性あると講師は考えている
一般的には0.5
ただケースバイケース。
df.corr()
これで実行すると、全要素の解析をしてくれる。
相関係数は線形であるかを見ている。
そのため、関連性はあっても線形でない場合は、0になる。
直線でない場合は、低くなる点に注意。
波線など。。。。
df.describe()
代表値の一覧が観れる。
df['PERROOM'] = df['PRICE'] / df['RM']
こんな感じでフィールド追加できる
これはndarrayだから
std = np.std(df['PERROOM'])
このstdで標準偏差
plt.figure(figsize=(20,10))
plt.scatter(df['RM'], df['PRICE'], c = df['DEV'], s = 200, alpha = 0.5)
plt.figure(figsize=(20,10))
plt.scatter(df['RM'], df['PRICE'], c = df['DEV'], s = 200, alpha = 0.5)
plt.colorbar()
このcは色をきめる。
部屋と価格で散布図だが、そこに色の情報も追加している。
回帰直線とは?
最小二乗方
これは、直線を作って、そことの距離が近い線をもとめる。
計算したら、面倒
これを、scikit-learnを使うと楽
pvalue
stderr
を使うケースは、講師の経験上でもない。
y = ax + b
aがslope(傾き)
bがインターセプト(雪片)
plotx = np.arange(3, 10, 1)
3から10までの1づつデータを生成
■人口知能の機能
回帰
分類→画像認識で利用される
回帰直線を作ると、データのない部分についても推測で使える。
ただし、、、、データのない部分については、回帰直線だと間違いが多い。
非線形なデータは回帰直線だと間違いが多くなる。
この場合、
回帰曲線が使える。
次元数を上げていくと、複雑なパターンを扱える。
y = ax^2+bx+c
2次元は一回カーブできる。
P33は2次元。資料謝り
res = opt.curve_fit(fit_func, df['RM'], df['PRICE'])
これで回帰曲線を得ることができる
2次元方程式では、1回だけカーブできる。
2回カーブするには、3次元方程式
ax^3+bx^2+cx+d
必ずしも多次元にすればいいというわけではなし。
多次元
この予測は距離にじょうでやってるが、人口知能では、きょりにじょうは使わない。
def fit_func(x, a, b, c, d): ⭐️この引数の順番は大事
return a * x**3 + b * x**2 + c * x + d
res = opt.curve_fit(fit_func, df['RM'], df['PRICE'])
上記ではfit_funcは、関数を渡している。
このresの中は、
(array([ 2.47012408, -22.64326546, 66.05885736]),
array([[ 8.44020212e-02, -1.08471220e+00, 3.44183985e+00],
[ -1.08471220e+00, 1.40942558e+01, -4.52003372e+01],
[ 3.44183985e+00, -4.52003372e+01, 1.46506533e+02]]))
In [ ]:
これは何を意味しているのか?
IoT検定の教科書
X, Y = np.meshgrid(plotx, ploty)
回帰分析に使えるデータセットは、
ボストンと疾患データ
日本は
data.gov
2,3次元回帰では難しい場合にSVMをつかう。これは人口知能による回帰
高次元ベクトル解析
環境作る方法
1 自分でライブラリ構成する場合
2 anacondaを使う場合
3 pyenv
4 pycharm→ここからjupiter note bookを作れる。ただ動きが変な場合あり。
anaconda navigator
anacondaはライブラリ管理ツール
anacondaにもcondaという管理コマンドがあり。
condaはpipと同じもの。
condaの方が依存関係などがよく管理されてる。