Machine Morning

機械学習やWebについて学んだことを記録しています。

2018-01-01から1年間の記事一覧

R studioでファイルを読み込む際の文字コードエラー

R

MacのRStudioでcsvファイルを読み込もうとすると以下のようにinvalid multibyte stringというエラーが出てくる。 > df <- read.csv("filename.csv", header=T, sep=",") Error in make.names(col.names, unique = TRUE) : invalid multibyte string at '<94>N…

標準誤差とは

今回は標準誤差について取り上げる。標準偏差との違いがいまいちわからないという人もいると思うが、これらはまったくの別物であり、推定や検定を理解する上で非常に大切なものである。ただし、ここで扱う標準誤差とはSEM(standard error of the mean)、すな…

テイラー展開からオイラーの等式を導く

世界一美しい等式として有名なオイラーの等式を導出する。 導出の手順は以下の通りである。 、、の多項式近似をテイラー展開で求める。 とを足す。 虚数を指数に導入する。 にを代入する。 まず初めに、、、の多項式近似をテイラー展開で求めると以下のよう…

誤解されがちな信頼区間

学部3年時に取った授業内で、「信頼区間(CI: Confidence Interval)の意味理解してる?」という話になり、当時自分も含め大勢の理解がいい加減だったことを思い出したので、今回はこの話題を取り上げる。ちなみにこの話題を振ってくださったのはダートマス…

標本平均の分散はなぜサンプルサイズnで割るのか

標本平均の分散 (ただしは母分散、はサンプルサイズ)がなぜこのような形になっているのか。 結論から言うと、サンプルサイズが大きければ標本平均の分散は0に収束し、標本平均の期待値が母平均に収束するからである。これは大数の法則が主張したいことその…

ベイズ推定とグラフィカルモデル

Udemyの「ベイズ推定とグラフィカルモデル:コンピュータビジョン基礎1」を受講しているので、受講した範囲のノートを随時追加していく。 無料でこんなに素晴らしい講義を公開してくださっている広島大学の玉木先生には大変感謝です。 02 Introduction to pr…

ガンマ関数とは

ベータ分布やディリクレ分布の確率密度関数にΓ関数(ガンマ関数)が出てくる。 いったいこのガンマ関数は何をしているのか。 まず、ガンマ関数の概要を説明する。 ガンマ関数とは階乗の概念を複素数に拡張し、一般化したものだ。 「正の整数以外の階乗とは何…

Pythonで欠損値を扱う。

Pythonで欠損値を扱う際、主にNone (Null), NaN(Not a Number)を扱うことになる。今回はこれらの違いについて説明する。 None (Null) NoneはPythonに標準で備わっているシングルトンオブジェクトである。PythonではNullをNoneとして扱い、NoneのみがNoneであ…

大学数学を始めた。

久しぶりの投稿です。最近大学数学を始めました。 微分幾何と関数解析を勉強したいと思ったのがきっかけです。 一応数学科のカリキュラムを参考に勉強していけばゆくゆくはこれらの分野に足をつっこめると思い調べてみると、学部1年時は微積と線型代数という…

Pythonのsuper()の引数!?

読んでいたPythonのコード内に class SubClass: def __init__(self): super(SubClass, self).__init__() というコードが出てきた。super()に引数を取っているのは何?と思って調べてみると、Python2.x系ではこの書き方だったらしい。 3系から書き始めたので…

pickle

Pythonのpickleはプログラム実行中にできたオブジェクトをバイト列にしてファイルとして保存する。このオブジェクトをバイト列にする作業を直列化(serialize)、バイト型列のファイルを元のデータ型でオブジェクトに戻す作業を非直列化(deserialiize)とい…

疑似乱数のseedとは

擬似乱数を生成する際にseedを指定することができる。実は疑似乱数はあくまで'疑似'乱数なので、再現性のある乱数として利用することが可能だ。その再現性のある乱数を生成する際に指定するのがseedである。Pythonのrandomモジュールではrandom.seed()で指定…

自動微分とは

自動微分(Automatic Differentiation)とは関数を合成関数に分割し連鎖律(Chain rule)の方法で偏導関数値を求める方法である。複雑な数式も四則演算や指数関数、対数関数、三角関数などの基本的な関数の組み合わせでできているため、それらを分割すること…

なぜソフトマックス関数にeを使うのか

ソフトマックス関数はニューラルネットワークにおいてスコア(affine layerから出力された値)を確率に変換する役割を持っている。しかしなぜわざわざを底として累乗するのだろうか。 ソフトマックス関数とは ソフトマックス関数による出力値はニューラルネ…

matplotlibは一つのセルで完結させるべき...?

Google Colaboratory上でmatplolibでプロットしていたら、ハマったポイント。 複数セルにまたがって書くと初期化される? pltのインスタンスを作成したら、plt.show()するまでセルを変えない方が良い? Plot disappears after executing cell second time · …

Colaboratoryでグラフをファイルとして保存する

Google Colaboratoryでプロットしたグラフを保存するにはplt.savefig()だけではできない。 import matplotlib.pyplot as plt from google.colab import files # グラフを作成したら plt.savefig("file_name") files.download("file_name") これでローカルの…

yieldとは

yieldを理解するために、まずはIterablesについて解説する。 Iterables listを作成すると要素を一つずつ読むことができる。この要素を一つずつ読み出す作業をiterationと呼ぶ。 >>> sample_list = [1, 2, 3] >>> for i in sample_list: ... print(i) 1 2 3 s…

Spark入門2

Sparkのインストール SparkはJavaのバーチャルマシン(JVM)上で動くので、JVMを入手する。JVMはJava SE Development Kit(JDK)をインストールすることで手に入る。2018年8月21日現在ではバージョン10が最新だ。以下のリンクから自分のマシンに合ったものを…

Spark入門

Sparkのコアのデータ構造は(RDD: Resilient Distributed Dataset)である。pandasのDataFrameのようにデータセットをRDDにロードして、メソッドでデータを扱う。 PythonでSparkを使うにはPySparkを使う。SparkはJavaでできているので Py4Jによって、Javaの…

SparkとHadoopの違い

この記事は以下の記事の翻訳、要約、及び筆者が調べたことのまとめです。 www.scnsoft.com 両方ともApacheによるOSSである。2017年時点では歴史の長いHadoopがより多く使われているが、Sparkも爆発的に人気を上げていてパフォーマンスもよい。 主な違い Spar…

purgeとは

purgeコマンドはMacのメモリを解放するコマンドである。 buffer cacheとpage cache page cacheはデータの読み書きを高速化するためにデータをページとして一時的にメインメモリ上に保存することである。 buffer cacheは記憶階層やデータをやり取りする装置や…

パーティションとは

パーティションはハードディスクのストレージを分割したもので、実際には一つのハードディスクが2つ、3つあるように使うことができる。それぞれのパーティションは他のパーティションに影響を与えない。すなわち、いずれかのパーティションに障害が生じても…

Google ColaboratryでGoogle Driveからデータセットをインポートする

Google ColaboratoryにはPythonでGoogle Driveを扱うためのPyDriveが標準で入っていないので、初めに!pip install -U PyDriveする。 そしたら必要なライブラリを読み込む。 !pip install -U PyDrive from pydrive.auth import GoogleAuth from pydrive.drive…

kaggle apiの使い方(入門)

GitHub - Kaggle/kaggle-api: Official Kaggle APIの簡単な要約。 pip install kaggleでkaggleのコマンドを使えるようにする。 https://www.kaggle.com/<username>/accountにアクセスし、'Create New API Token'を選ぶ。 すると、kaggle.jsonがダウンロードされる。こ</username>…

ttyとは

psを叩いて表示されるプロセス一覧の項目にTTYが存在する。 ちなみにttyというコマンドも存在し、これはteletypewriterの略で、man ttyで内容を確認してみると、 The tty utility writes the name of the terminal attached to standard input to standard o…

はてなで二重線の白抜き文字を書く

実数Rや整数Zなどをやのように書く方法は、 \mathbb{白抜きにしたい文字} である。文字と数字だけを白抜き文字にしてくれる。 例 [tex: \mathbb{R}] [tex: \mathbb{Z}] [tex: \mathbb{0}] [tex: \mathbb{\pi = 3.14}]

Multinoulli distribution

Murphyを読んでいたらMultinoulli distributionという言葉が出てきた。ベルヌーイ分布の多次元版かなと思ったら大正解。カテゴリカル分布の別名ということである。Multinoulli distributionに相当する日本語がなかったので、カテゴリ分布と読み替えておけば…

webサイトパフォーマンスのテストサイト

次の2つのサイトがwebサイトのパフォーマンスをテストするのに使える。 PageSpeed Insights www.webpagetest.org 1つ目はGoogleが公開しているwebサイトの表示速度を測るサイト。 2つ目は様々なデバイス上でのパフォーマンスを測定できる。

DOMContentLoadedとload

document.addEventListener("DOMContentLoaded", event => { console.log("DOM fully loaded and parsed"); }); window.addEventListener("load", event => { console.log("All resources finished loading"); }); console.log("script.js finished loading …

表示を高速化するjsファイルの読み込み方

サードパーティスクリプトとは 外部から提供されている機能のスクリプトのこと。例として以下のようなものがあげられる。 TwitterやFacebookなどのSNSでシェアするボタン YouTubeのような動画の埋め込み 広告系のiframe 解析やメトリクスツール A/Bテスト デ…