root3のメモ帳

データサイエンスな知識を残していくブログ。

Angular勉強日記 2日目

進捗

学んだ事

TypeScript

  • リストの定義
    • export const XXX: xxx[] = ... みたいに後ろに[]をつける
  • 変数定義の「?」
    • オプションを表すらしい
    • コンポーネント定義の中で使うと…どうなるんだろう?
  • this
    • pythonでいうselfみたいなものでしょう。定義の時にthisはつけていないが。

HTML

  • <ul>タグ、<li>タグ
    • 順序がないリストを表す
    • 通常は<ul>の中にひたすら<li>を入れることでリストを表現するらしい
    • class="heroes"を指定することで、cssheroesを参照して装飾するのだろう。多分。

Angular

  • ngFor
    • for文的なもの。
    • *ngFor="let x of xxx"の形で書くと、「xxxの中の要素をxとしてループ」と言う意味になる。
    • stringっぽい形で渡すのがなんとも気持ち悪い。
  • ngIf
    • 指定した条件を満たす時だけ表示させる。
    • <div *ngIf="x"> </div>で、xが存在する時だけ囲まれた中を表示する。
  • (click)
    • クリックイベント。
    • クリックした時に実行させる構文、と言う事だろうか。
    • stringっぽい形で以下略

わからないこと

CSS

  • 全部。
  • 逐次追いかけるしかない。読むだけならなんとか読める。

Angular

  • [class.selected]="hero === selectedHero"
    • 解読が難しくなってきた。
    • clickは丸括弧なのにこっちは角なのか…
    • 意味的には「heroがselectedHeroに入っているものと等しければ」だと思うが、なぜイコールが3つあるのか…

Angular勉強記録 1日目

はじめに

仕事上必要になりそうなのでフロントエンド開発の勉強を始めた。

使っているのがAngularだったので、Angularに着手したが、紆余曲折あって結局公式チュートリアルを進めるに落ち着いた。

  • udemy:簡単なところから始めすぎてつらい(選べば適切なものがあったかもしれないが…)
  • 本:内容が古くてquickstartすらエラーが出て疲れた。

とりあえずVSCodeでの環境構築は事前に済ませておき、今日からチュートリアルスタート。stackblitzを使った導入は、stackblitzがめちゃくちゃ重たくてストレスだったのでやめた。

あと、HTMLとCSSはドシロウトなので、初見の用語やタグは適宜調べていく。

進捗

学んだこと

  • Angular CLIの使い方
  • Angularのコンポーネントの3つの要素。
    • tsファイル: 本体
    • htmlファイル: テンプレート
    • cssファイル: そのコンポーネント専用のスタイル
  • HTMLの基本的ないじり方
    • h1とかtitleとか(これは知ってた)
    • labelとかinputとか(これは知らなかったのでめっちゃ調べた)
  • コンポーネントの表示方法
    • html内に書くと反映されるんだ、すげぇな〜と思ってやってた
  • モジュールのimport方法
    • declarationsとimportsに書くものの違いが未だにわかっていない
      • コンポーネントとモジュールの違いじゃんと言われればそうなんだけど
      • それらの違いは…場所が違う理由は…
  • 双方向バインディング
    • 今日一番感動した

Pylintの「W0640 cell-var-from-loop」

以下のようなコードをPylintに通すと、表題のようなwarningが出る。

funcs = [
    lambda x: x + elem
    for elem in range(3)
]
results = [
    func(1)
    for func in funcs
]

funcsは「与えられた引数に0〜2を加える関数」のリストであり、resultsではそれらの関数に1を与えた結果を返すので、想定されるresultsの中身は [1, 2, 3] である。しかし、実際の中身は [3, 3, 3] である。何が起こっているのか分かりづらいが、これこそが「cell-var-from-loop」というwarningが警告していることである。

わかってしまえば簡単だが、意外とつまづいた所だった。

続きを読む

【R言語】欠損値補完パッケージ「simputation」が使いやすそう、という話

「Rで欠損値埋めるのにいいパッケージないかな〜」と思って色々探してみたら、「simputation」という良さそうなパッケージを見つけました。

続きを読む

カーネル法を勉強し直す その3 〜カーネルの導入とカーネルトリック〜

11月の中旬〜下旬あたり、体調を崩してしまっていたので更新できませんでした。*1 寒さも厳しくなってきましたので、皆様もお気をつけください。

back:カーネル法を勉強し直す その2 〜カーネル法を導くための準備〜 - root3のメモ帳
next:まだ

*1:言い訳

続きを読む

カーネル法を勉強し直す その2 〜カーネル法を導くための準備〜

カーネル法勉強し直し企画の第二弾です。
今回から3回程度でカーネル法の仕組みについて解説します。

注意点として、数学的な詳しい議論は避ける予定です。*1もし数学的な詳しい議論を読みたい方は、以下の本を読んでみると良いかと思います。

カーネル法入門―正定値カーネルによるデータ解析 (シリーズ 多変量データの統計科学)

カーネル法入門―正定値カーネルによるデータ解析 (シリーズ 多変量データの統計科学)

今更ですが、本連載もこの本の1章〜3章を参考にさせていただいています。

back:カーネル法を勉強し直す その1 〜導入〜 - root3のメモ帳
next:カーネル法を勉強し直す その3 〜カーネルの導入とカーネルトリック〜 - root3のメモ帳

*1:僕自身、そんなに詳しくありません。一通り証明は読んでおきたいですが

続きを読む

カーネル法を勉強し直す その1 〜導入〜

世間ではディープラーニングが流行っていますが、僕自身がカーネル法を勉強し直す事が必要になったので、連載という形でカーネル法の解説をしたいと思います。
まあ、ディープラーニングも完全に万能という事ではなく、ちょこっと分析したい時はこれまでの機械学習の方が楽なことも多いので、知っていて損はないかと思います。

連載大体5〜6回くらいになる予定です。
簡単な計算や実装もやる予定ですが、今回はR言語を利用しています*1Pythonでも同じことは容易にできるはずです。

next:カーネル法を勉強し直す その2 〜カーネル法を導くための準備〜 - root3のメモ帳

*1:諸事情によりR言語で書く必要性があるのです

続きを読む