徹底解説Visual Studio Codeを読んで
Visual Studio Codeの解説本を読みました
scikit-learnを用いた機械学習はまた次回
今回はvisual studio codeを
読んだ本はこれ
- 作者:本間咲来
- 発売日: 2019/09/27
- メディア: 単行本
地元の図書館にあったので借りました。
エディタに関することを一度くらいきちんと学ぼうと思います。
ほんとはこれもあってこれの方が新しいので借りたかったけど借りれられてたのでまた今度借りて読もうと思います。
[asin:B084SS63L4:det
基本的なショートカット
- サイドバー表示切り替え [command]+ [b]
- エディタ分割 [control]+[option]+[command]+[\]
- エディタの移動 [command]+[option]+[→] か [←]
- クイックオープン現在のワークスペース内のファイルを開いたり最近開いたファイルを開ける [command]+[p]+[?]
- 任意の行移動 [control]+[g]かクイックオープンに対して[:]の後に行番号移動
- ファイル内の任意のシンボルへ移動[command]+[shift]+[o]かクイックオープンで[@]を入力
- ワークスペース内の任意のシンボルへ移動[command]+[t]かクイックオープンで[#]を入力
- エディタブループ内のファイルへ移動 [control]+[tab]
- カーソルのしたに行を追加して移動する [command]+[Enter]
- 上に行くには[command]+[shift]+[Enter]
- ファイルの先頭や末尾 [command] + [↑]/[↓]
- 同じ文字列の選択 任意の文字列を選択して [command]+[shift]+[L]
- マークダウンのプレビューを開く [comamnd]+[k]+[v]
- タブを閉じる [command]+[w]
- 行のインデント [command]+[ ] ]
- 行のアウトデント [command]+[ [ ]
html/js/cssを書く
vscodeにはhtmlやcssを少ない入力でコーディングする機能としてEmmetがある
[!]を入力し[Tab]を押すと以下のような雛形が生成される
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> </body> </html>
他にもEmmetの構文があるらしい
詳しくは公式サイト https://docs.emmet.io みるとよさそう
[alt]+[shift]+[F]でオートフォーマットされる
Live Serverでhtmlのリアルタイムレビューができる。
node.jsの話とかgitとの連携とか読んだら書きたいと思う。
それより先にscikit-learnの話書かなきゃ
機械学習入門
機械学習入門
機械学習と人工知能とは
ここ数年AI(Artifical Inteligence)という言葉が様々な箇所で現れるようになってきたが、そもそもAI/人工知能とはなんなのか
また、機械学習と人工知能は同じなのであろうか
人工知能という言葉を初めて使用したジョン・マッカーシーによると人工知能は以下の意味らしい
また、機械学習の定義として有名なのが計算機科学者 アーサー・サミュエルによるものらしい
機械学習は人工知能の部分集合という理解でいいらしい
人工知能において機械学習以外にもルールベースがある
- ルールベース:人間が記述したルールをもとに判断するAI
Pythonによる機械学習
Numpy
Numpyは配列データを高速に操作・計算することが得意なライブラリ
配列とは情報を記憶するための箱が複数が連なっているもの
基本的な操作
- 1次元配列を生成
array1 = np.array([0,1,2])
- 連番整数の1次元配列を生成 , ()内は要素の個数
array2 = np.arange(24)
- reshape()を用いて配列の構造を変更
#1次元配列を2次元に整形 array3 = array2.reshape(4,6)
- 配列の連結(行方向)
np.concatenate([array1,array2],axis=0)
- 配列の連結(列方向)
np.concatenate([array1,array2],axis=1)
- 配列の分割
np.split(array,3)
array.sum() #合計値 array.mean() #平均値 array.min() #最小値 array.max() #最大値
とりあえずこんな感じ
Pandas
pandasはテーブルデータの操作が得意なライブラリで集計、統計処理などの分析業務で頻出のデータ処理が簡単にできる
また機械学習モデルの設計においてデータの前処理、特徴量設計に用いられる
numpyで高速処理をするためにpandasで処理できる形に整形する
基本的な操作
- csvの読み込み
df = pd.read_csv('data.csv', sep=',')
- データの最初の数行を確認,()内に数字を入ればその行数表示できる
df.head() #()内が空欄だと5行
- データの最後の数行を確認
df.tail()
- 列を追加
df['列名']=[データ(カンマ区切り)]
- 列の削除
del df['列名']
- データを細かく表示
df.iloc[1:4] #2行目から4行目の前まで
- 一意の項目を取得する
df['列名'].unique()
- 欠損値を調べる
# 欠損値を含むか df.isnull().any() # 欠損値をどのくらい含むか df.isnull().sum()
- 欠損を含む行を抽出
df[df.isnull().any(axis=1)].head()
- 欠損地を置き換える
df.fillna(置き換える値)
- データの結合
結合df = 主df .join (従df ,on条件)
Julia始めました vol.2
Juliaでデータ分析する
データ分析で有名なirisデータを読み込む
PythonのScikitLearnからirisを読み込むときと同様にJuliaでもScikitLearnから読み込むことができる
RDatasetsから読み込むことでdf形式で読み込むこむことができる
using RDatasets using RCall using Gadfly
RDatasetsの中身を確認する
RDatasets.packages()
irisデータを読み込む
iris = dataset("datasets", "iris")
データの要約を確認
describe(iris)
データの中身を確認するためにhead(df)が用いられるが、Juliaではhead(df)からfirst(df, 6)に置き換わったらしい
julia> first(iris, 6) 6×5 DataFrame │ Row │ SepalLength │ SepalWidth │ PetalLength │ PetalWidth │ Species │ │ │ Float64 │ Float64 │ Float64 │ Float64 │ Categorical… │ ├─────┼─────────────┼────────────┼─────────────┼────────────┼──────────────┤ │ 1 │ 5.1 │ 3.5 │ 1.4 │ 0.2 │ setosa │ │ 2 │ 4.9 │ 3.0 │ 1.4 │ 0.2 │ setosa │ │ 3 │ 4.7 │ 3.2 │ 1.3 │ 0.2 │ setosa │ │ 4 │ 4.6 │ 3.1 │ 1.5 │ 0.2 │ setosa │ │ 5 │ 5.0 │ 3.6 │ 1.4 │ 0.2 │ setosa │ │ 6 │ 5.4 │ 3.9 │ 1.7 │ 0.4 │ setosa │
次にプロットする
plot(iris, x = "SepalWidth", y = "SepalLength", color="Species")
重回帰分析をする
using GLM lm1 = lm(@formula(PetalWidth ~ PetalLength) , iris) pre = predict(lm1)
Julia始めました vol.1
Juliaとは
JuliaはMITで開発された言語で2009年に誕生し2012年に公表された。 開発者はブログでこんなことを言っている
我々は、オープンソースでリベラルなライセンスの言語がほしい。C言語の速度と、Rubyのダイナミズムがほしい。同図像性があり、LISPのような真のマクロを備えつつ、Matlabのように分かりやすくなじみのある数学的記法を使える言語がほしい。汎用的なプログラミングはPython並みに便利で、統計の扱いはR言語並みに容易で、文字列処理はPerl並みに自然で、線形代数はMatlab並みに強力で、プログラムの連結はシェル並みに得意な言語がほしい。習得が超簡単でありながら、筋金入りのハッカーが喜んで使い続ける言語がほしい。インタラクティブでありつつ、コンパイル方式の言語がほしい
いろんな言語のいいとこ取りの言語らしい
Juliaのインストール
公式サイトからインストール
実行環境
【PC】 macOS Catalina ver 10.15.6
【Julia】 ver 1.31
動かすまで
vscodeで動かす
「code」→「基本設定」→「拡張機能」
Executable Pathにpathを通す。
今回のJuliaのversionが1.3なので1.3としている
- テスト
適当に.jiファイルを作って「Shift + Enter」で実行
Jupyter notebookで動かす
インストールしたJuliaを起動する
IJuliaをインストールする
julia> using Pkg julia> Pkg.build("IJulia") using IJulia; notebook(detached=true)
念のためJupyter notebookを立ち上げて確認する
基本的な演算
julia> 1 + 2 #加法 3 julia> 5 - 3 #減法 2 julia> 3 * 5 #乗法 15 julia> 7 / 5 #除法 1.4 julia> 7 % 5 #余り 2 julia> 3 ^ 2 #冪乗 9
とりあえずHello World
julia> println("Hello World!") Hello World!
変数
Juliaにおける変数は値に紐づく名前になる
例えば以下の通り
julia> x = 10 10 julia> x + 1 11 julia> x = 1 + 1 2 julia> x = 'Hello World!!' ERROR: syntax: invalid character literal Stacktrace: [1] top-level scope at REPL[11]:1 julia> x = "Hello World!!" "Hello World!!"
文字列を変数に渡す際にはダブルクォーテーションでなければならない
シングルクォーテーションとダブルクォーテーションは区別される?
詳しいことは後で調べる
変数名は大文字と小文字が区別される
julia> x = 1.0 1.0 julia> X = 2.0 2.0 julia> x + X 3.0 julia> phrase = "Hello World!!" "Hello World!!"
Juliaには変数名に以下の制限を設けているが、以下の表記法を使用するのに便利になっている
- 変数名を小文字で表記
- 単語の区切りはアンダースコア( '_' )で表すことができるが、変数名が読みにくい場合の除き使用は推奨されていない
- 型と モジュール名は大文字で始まり、単語の区切りはアンダースコアの代わりにキャメルケースで表記される
- 関数や マクロの名前はアンダースコアを含まない小文字で表記
- 引数に書き込む関数名は ! で終わる. これらの関数は、関数が呼び出された際に戻り値を返すだけでなく引数に変更を加えるため、「変異」または「in-place」と呼ばれる
とりあえず今日はこのくらい
はじめまして
はじめてのブログ
このブログは普段何も考えずに生きている大学院生が, 何気なく学んだことを備忘録代わりに書いたり, 考えたしょーもないことをアウトプットの練習がてらつらつらと書くだけのブログです.
自己紹介的なもの
- とある大学院に通う修士1年
- 統計学の研究室に所属しており、研究テーマはファジィデータ解析
- 数学は好きだが大学に進学してからは嫌いになりそうに多々なった
- バイトで塾講師をしている
- back numberが好き
- ラーメンが好きでよく都内までラーメンを食べにいきます
- 本読むのが割と好き
雑ですがこんな感じの中身の人がつらつらと書いていきます
やろうと思ったわけ
とりあえずは自分が普段ふと思ったことや考えたことをアウトプットする機会がないのでその機会をつくるためです
元々友達が少ないから会話することがないがここ最近のご時世的にさらに会話がすくなくなってきました(書いていて悲しくなりますが)
また、塾講師のバイトに加えてIT企業みたいな内容のバイトをしていて、そこで学んだことをアウトプットする機会が欲しかったってのもあります。
Qiitaでよくねって思ったのですがそうすると投稿できるジャンルが絞られちゃうのでやめました
書く内容とルールとか
書く内容は特にこれってのはありませんが多分以下のこと書くと思う - PythonとかJuliaとかのプログラミング言語で学んだことの備忘録 - 論文や書籍を読んだ時の中身と学んだこと - フツーに本読んで思ったこと - 生活してて考えたことやニュースとか見て考えたこと
投稿頻度とかのルールは特にありません
思ったことを好きな時に好きなだけ書いていこうと思います
とりあえずまずは1ヶ月続けることから頑張ろう
ゆるくいきます