約1年前にReact + Material-UIを使って実装した自動車 TCO見積もりツールをVue.jsで置き換えました。
機械学習を理解するための数学のきほん
私が機械学習を始めるときに最初に読んだ本を簡単に紹介します。
やさしく学ぶ 機械学習を理解するための数学のきほん ~アヤノ&ミオと一緒に学ぶ 機械学習の理論と数学、実装まで~
- 作者: LINE Fukuoka株式会社立石賢吾
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/09/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
概要
線形モデルを使った機械学習の数学的理論が、高校数学の知識で理解できるように解説されている。取り上げられている主な内容は以下の通り。
また、これらの機械学習モデルをPythonでの実装方法(scikit-learnなどのライブラリを使わずに、NumPyを使って自分で実装する)も解説されている。
感想
機械学習を始めるに当たって、取っ付きやすい書籍を探して行きついたのが本書であった。グラフを使って数式の図形的な意味が解説されていて、巻末には数学を離れて久しい人が忘れていそうな基礎知識もまとめられているため、線形モデルの数学的理論の基礎を途中で詰まることなく理解することができた。
本書は機械学習で最近よく使われるアルゴリズムや、実践的なテクニックまでは触れていないが、数学を忘れかけている人が機械学習の基礎となる線形モデルの理論を理解するのにとても役に立つ本であると感じた。
bashrcとbash_profileの使い分け
Visual StudioサブスクリプションでMicrosoft Azureを利用する
Visual Studioサブスクリプション(旧MSDNサブスクリプション)にはMicrosoft Azureを利用できるクレジットが付いてくるものがある。(例えば、Visual Studio Professionalサブスクリプションでは月間50ドルのクレジットが付く。)
ただし、このクレジットで利用できるサービスには以下の制限があることに注意が必要である。
- 開発もしくはテストでのみ使用でき、運用目的では使えない。
- SLAの保証はなく、120時間以上の連続稼働が禁止されている。
- 利用できないリージョンがある。
- 利用できないサービスがある。
- 有料サブスクリプションよりクォータが低いものがある
参考
Tomcatのlogging.properties設定方法
Tomcat 7/8のログ出力設定ファイル(logging.properties)の定義方法をまとめています。
Tomcatのjava.util.logging API実装(JULI)での設定方法拡張(一部抜粋)
.handlers
プロパティを設定することでルートLoggerのHandlerが定義できる。- Handler名にプレフィックスを付けることで同じHandlerクラスを複数回利用できる。
- プレフィックスは数字で始まり
.
で終わること。
- プレフィックスは数字で始まり
- あるLoggerにHandlerが設定されている場合は親のLoggerの処理は実施されない(設定で変更可能)。
デフォルトのlogging.properties設定内容
# 利用するHandlerを指定する。この設定方法はjava.util.loggingと同様。 # org.apache.juli.FileHandlerクラスを"1catalina"、"1localhost"、"3manager"というプレフィックスをつけることで3つのHandlerとして利用している。 handlers = 1catalina.org.apache.juli.FileHandler, \ 2localhost.org.apache.juli.FileHandler, \ 3manager.org.apache.juli.FileHandler, \ java.util.logging.ConsoleHandler # ルートLoggerが利用するHandlerを指定する。 # Loggerに個別にHandlerを指定していない場合は、ルートLoggerのHandlerに渡される。 .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler # 各Handlerに対して設定値を指定する。 # level:出力するログレベル # directory:ログファイルを出力するディレクトリ(FileHandler) # prefix:ログファイルのファイル名のプレフィックス(FileHandler) # bufferSize:ログ出力処理のバッファサイズ(FileHandler) # formatter:ログの整形を行うクラス 1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 2localhost.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost. 3manager.org.apache.juli.FileHandler.level = FINE 3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 3manager.org.apache.juli.FileHandler.prefix = manager. 3manager.org.apache.juli.FileHandler.bufferSize = 16384 java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # 各Loggerに対して設定値を指定する。 # level:記録対象となるログのログレベル # handlers:Loggerが利用するHandler org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \ 2localhost.org.apache.juli.FileHandler org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \ 3manager.org.apache.juli.FileHandler
参考
シェルスクリプトでの正規表現を使ったバリデーション
exprコマンドを使う方法
target='aa bbcc' # 正規表現をクォートする。 # 変数展開時はワード分割を避けるためにクォートする。 if expr "${target}" : "^a\+ [b-c]\{4\}$" > /dev/null; then echo "match" fi # 正規表現にマッチしない条件分岐をするには!を使う。 if ! expr "${target}" : "^a\+ [b-c]\{3\}$" > /dev/null; then echo "mismatch" fi
[[ ]]
構文を使う方法(bash、zshなど)
target='aa bbcc' # bash: 正規表現をクォートしない。 # zsh: 正規表現をクォートする。 # 変数展開時のクォートは不要。 if [[ ${target} =~ ^a+' '[b-c]{4}$ ]]; then echo "match" fi # 正規表現にマッチしない条件分岐をするには!を使う。 if [[ ! ${target} =~ ^a+' '[b-c]{4}$ ]]; then echo "mismatch" fi
参考
Spring FrameworkにおけるBeansとは
Spring Framework初心者である私がSpring BootのGetting Startedガイドを読んでみたときに、いきなり躓いたのがSpringのBeansという概念でした。これまでSpring Frameworkに触ったことがなければ、Beansと聞くとJava Beansをイメージするかもしれませんが、Spring Frameworkでは独自の概念として使われているので注意が必要です。
Spring FrameworkにおけるBeans
Beansとは、Sprint IoC(DI)コンテナが管理(インスタンスの生成や保管)する、アプリケーションを構成するオブジェクトのこと。従来のXMLで設定する方法の他に、Javaのアノテーションでも設定できる(現在はこちらが主流)。
JavaアノテーションでのBeans設定例
Beansを設定するには@Configurationを付与したクラスに@Beanを付与したメソッドを定義する。公式リファレンスでは同じ設定をJavaアノテーションとXMLで定義した以下の例が紹介されている。
@Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } }
<beans> <bean id="myService" class="com.acme.services.MyServiceImpl"/> </beans>