drilldripper’s blog

機械学習とソフトウェア開発を頑張ってます

分離式キーボードと最高の開発環境

分離式のキーボードMiSTEL BAROCCO MD600を購入しました。 MiSTEL BAROCCO MD600 分離式 メカニカルキーボード 英語配列 62キー CHERRY 赤軸 PBTキーキャップ ブラック MD600-RUSPLGAA1出版社/メーカー: MiSTEL発売日: 2016/10/27メディア: Personal Compute…

Ruby on Railsチュートリアルを軸にしてWeb周辺技術を勉強した

最近まとまった時間ができたので、Web開発手法の勉強をしていました。 Ruby on Railsチュートリアルが体系的に学べて良いという話を聞いていたので、これを軸にしながら自分のWeb知識の穴を埋めていくことにしました。 Ruby on Rails チュートリアル:実例を…

Pythonの引数を統一的に選択するためのツールを作りました

PycharmやVisual Studioなどの統合開発環境を使っていると、コマンドライン引数の指定が面倒に感じたりしませんか? 例えばPycharmではEdit configurationsを開きScript parameterを変更する必要があります。 またScript parameterではGUIを使って引数を選択…

手書き風グラフを支える技術 -Matplotlibのxkcd関数とFIRフィルタ-

Pythonのグラフ描画ライブラリのMatplotlibには、手書き風のグラフを描画するための関数xkcd()があります。以下のソースコードを実行すると、手書き風のsinグラフが描画されます。 from matplotlib import pyplot as plt import numpy as np plt.xkcd() # こ…

SVMとランダムフォレストのどちらの手法を使えばよいか?

分類や回帰の問題を扱う場合、選択する手法としてサポートベクターマシン(SVM)とランダムフォレストが候補に上がってくると思います。 しかし、どちらの手法を使うべきなのでしょうか?どのような問題に対しても、一方の手法を使い続ければ良いのでしょうか…

初心者が将棋を楽しく続けるためのロードマップ

将棋初心者がどうしたら将棋を続けられるか、という問題が話題になっていました。 将棋ド初心者にどうすれば将棋を続けて貰えるか問題 - 誰かの場所の複数 私の周りでも将棋を始める人が増えていますが、長続きせずにやめてしまう人が多いです。もっと将棋を…

AnacondaのJupyter NotebookがPycharmで動作しない問題の解決方法

Jupyter Notebook(Ipython Notebook)は基本的にブラウザ上で動作するソフトウェアですが、Pycharmでから動かすこともできます。使い慣れているキーバインドやかしこい補完が使えるので、Pycharmで動かすメリットは大きいと思います。 しかし現在Anacondaを使…

ハサミでMico SIMカードをカットしてをNano SIMカードとして扱う

最近のスマートフォンのSIMカードの規格はNanoSIMが使われることが増えてきましたが、一昔前のスマートフォンは一回りサイズの大きいMicro SIMカードが使われています。これまで使っていたLGのNexus5はMicro SIMカードが採用されていますが、今回私が購入し…

MacOS SierraにHomebrewでOpenCVをインストールする際のエラー回避

Homebrewを使ってOpenCVを導入する場合、以下のコマンドを実行してインストールを行います。 brew tap homebrew/science brew install opencv3 しかし11/10日現在、MacOS SierraではMakeの部分でエラーが発生してインストールすることができません。 QTKit/Q…

AWSの無料枠とAWS Educateの登録

AWS

AWSの無料枠とAWS Educate AWSは12ヶ月間の間、一定の範囲内で各種サービスに無料でアクセスすることができます。無料アクセスの中にはAWSの代表的なサービスであるEC2やS3、サーバレスアーキテクチャを実現するために利用するLambdaなどが含まれています。 …

OpenCVの補助として使うscikit-image ~同時生起行列特徴量~

OpenCV 画像処理の代表的なライブラリといえばOpenCVだと思います。C++やPythonなど複数の言語で使用することができるため、アプリケーションへ組み込む際に利用することも多いと思います。 OpenCVにはたくさんの関数が実装されていて非常に便利ですが、画像…

ランダムフォレストの理論と重要な特徴量の選定

ランダムフォレストと決定木学習 ランダムフォレストを理解するためには、決定木学習の手法について理解する必要があります。まず最初に決定木学習の理論について説明します。 決定木学習 決定木は親から順に条件分岐を辿っていくことで、結果を得る手法です…

ETロボコンの走行を支える技術

What is ETロボコン? ETロボコンは統一規格のロボット(Mindsorms EV3)を使い、指定されたコースを走行する精度とタイムを競う競技です。UML等で書かれた仕様とアピールポイントをまとめたモデルシートを作成する必要があり、モデルシートも評価の対象となり…

SVMの基本原理と不均衡データに対するパラメータ調整

前回の記事では不均衡データをサンプリングすることで、学習の精度を上げる方法を書きました。今回はSVMのパラメータを調整することで、不均衡データの学習の精度を上げる方法について書こうと思います。 そのためにSVMの基本を理解しておいたほうがよいと思…

pandasを使った不均衡データの整形

不均衡データ 機械学習を行う上で正例と負例が偏っている学習データを使うと、学習がうまく行きません。サンプル数が多いクラスに引っ張られてしまいます。そのため事前にデータの加工を行うと、結果が良くなることが知られています。 多い方のクラスを少な…

スクリーンショット自動化ツール「BindScreen」を作りました

スクリーンショット自動化ツール「BindScreen」 スクリーンショットを自動でとって加工する「BindScreen」を作りました。 ツールとソースコードはGitHubからダウンロードすることができます。 BindScreen - Github drilldripper/BindScreen 使用例 次のスラ…

PyQtのConnectで引数付きの関数を渡す方法

PyQtではconnectを使ってイベントに対応する関数を呼び出すことが出来ます。しかし引数付きの関数をconnectに直接渡すことは出来ません。以下のようなエラーが発生すると思います。 "TypeError: connect() slot argument should be a callable or a signal, …

競技プログラミングから輸入した普段使いでも便利なC++テンプレート

C++

以下のテンプレートを記述すると、Vectorとpairの中身をcoutで表示できるようになります。 #include <vector> #include <iostream> #include <algorithm> #include <iterator> template <typename T> std::ostream &operator<<(std::ostream &out, const std::vector<T> &v) { if (!v.empty()) { out << '['; std::c</t></typename></iterator></algorithm></iostream></vector>…

イマドキのChrome拡張機能のオプション画面の作り方

Chrome拡張機能では、ユーザごとに設定を変更することができるオプション画面を作成することができます。オプション画面はアドレスバーの隣のアイコンを右クリックするか、拡張機能管理画面から設定することができます。 このオプション画面ですが、Chromeの…

英語のウェブサイトを品詞分類して読みやすくするChrome拡張機能「カラフル英語品詞分類」を作りました

英語読解が捗る拡張機能「カラフル英語品詞分類」 英語読解が捗るGoogle Chrome拡張「カラフル英語品詞分類」を作りました。Chromeウェブストアからダウンロードすることができます。 カラフル英語品詞分類 - Chrome ウェブストア この拡張機能はWebページの…