多項式回帰

背景

(Shalev-Shwartz and Ben-David 2009) の Model Selection and Validatin の図を再現したい。つまり、 Figure: 1 のようなデータを多項式で回帰したい。

example.png
Figure 1: 多項式のようなデータ

コード

Python の scikit-learn で実現する。概略は入力データを指定次元分の単項式に変換し、線形回帰で実現する。

使用するのは主に2つの機能である。

  1. sklearn.preprocessing.PolynomialFeatures — scikit-learn 1.1.2 documentation
  2. sklearn.linear_model.LinearRegression — scikit-learn 1.1.2 documentation

まず、特徴量を PolynomialFeatures で変換する。変換元のデータが一次元のはずなので、形状に注意。

polynomial_features= PolynomialFeatures(degree=3)
xs_poly = polynomial_features.fit_transform(xs.reshape((30,1)))

そして、線形回帰を使用する。

model = LinearRegression()
model.fit(xs_poly, ys)
ys_pred = model.predict(xs_poly)

Figure: 2 に作成された多項式回帰のモデルの予測結果をプロットした。

deg2.png
Figure 2: 訓練データと3次多項式回帰

参考文献

Shalev-Shwartz, Shai, and Shai Ben-David. 2009. Understanding Machine Learning. Cambridge University Press. https://doi.org/10.1017/cbo9781107298019.

org-modeでのPython仮想環境

poetry で作成した仮想環境を org-mode のコードブロックで使うことを考える。仮想環境は $HOME/repos/ks_python_env に作成されているとする。

コードブロックのデフォルトのHeaderを定義しておく。セッション名とファイルが存在するフォルダパスをどのコードブロックでも共通して使用するようにしている。

#+PROPERTY: header-args:python :session (concat "*python* - " (buffer-file-name))
#+PROPERTY: header-args:python+ :var cur_dir=(identity default-directory)
#+PROPERTY: header-args:python+ :eval no-export

poetry コマンドの機能を利用して、仮想環境の python のパスを org-babel-python-command に設定する。

#+begin_src elisp :dir ~/repos/ks_python_env :exports none
  (let* ((env_path (s-trim (shell-command-to-string "poetry env info -p")))
  (python_path (f-join env_path "bin/python")))
  (setq-local org-babel-python-command python_path))
#+end_src

上記を実行すれば、下記のように仮想環境のPythonが実行される。

#+begin_src python :results output :exports both
  import sys  
  print(sys.version)
#+end_src  

import sys  
print(sys.version)
3.8.12 (default, May  6 2022, 13:18:25) 
[GCC 11.2.0]

lisp

環境構築

roswell をパッケージマネージャでインストールする。

環境を下記を参考に作成した。

  1. Common Lisp開発序ノ口 〜プロジェクトの作成と実行〜 – Lambdaカクテル

ローカルプロジェクトの管理方法は下記を参考にした。

  1. Roswell 環境下でのローカル・プロジェクト管理入門 · wshito’s diary

仮想環境(?)にありがちな、プロジェクト毎ライブラリ管理。

  1. fukamachi/qlot: A project-local library installer for Common Lisp

ros install qlot でインストールする。試しに下記をインストールする。

  1. sharplispers/ironclad: A cryptographic toolkit written in Common Lisp

qlot add ironclad

hogeproject.asd と main.lisp を編集する.

(defsystem "hogeproject"
  :version "0.1.0"
  :author "Windymelt"
  :license ""
  :depends-on ("ironclad")
  :components ((:module "src"
                :components
                ((:file "main"))))
  :description ""
  :in-order-to ((test-op (test-op "hogeproject/tests"))))

(defsystem "hogeproject/tests"
  :author "Windymelt"
  :license ""
  :depends-on ("hogeproject"
               "rove")
  :components ((:module "tests"
                :components
                ((:file "main"))))
  :description "Test system for hogeproject"
  :perform (test-op (op c) (symbol-call :rove :run c)))

(defpackage hogeproject
  (:use :cl) ;; あるいはここに :ironclad を追加
  (:export :hoge))
(in-package :hogeproject)

;; blah blah blah.
(defun hoge ()
  (ironclad:make-digest :shake256 :output-length 22)
  (format t "ddd"))

書籍

sway

Screenshot

swayshot をインストール

Shift + PrtSC
領域を選択して、ファイルに保存してクリップボードにパスを貼る
PrtSc
画面全体をファイルに保存してクリップボードにパスを貼る
Alt + PrtSc
ウィンドウをファイルに保存してクリップボードにパスを貼る

$HOME/.config/swayshot.sh/ に下記を記載することで、クリップボードに画像本体を貼ることができる

export SWAYSHOT_WL_COPY_FILE=1

色温度の調整

夜になると画面が眩しいので wlsunset を導入した。config に下記を追加した。

# -l: latitude 緯度 東京 北緯 + 36
# -L: longnitude 経度 東京 東経 +140
exec wlsunset -l 36  -L 140  -t 3500 -T 6000 -g 0.8