matthew as a q.

競技プログラミングメイン

12/2学んだこと

kaggle

Porto Seguroコンペ終了。

calc列の特徴をすべて排除してxgb(discussionに出てたらしい), one hot encodingをして必要な特徴のみ組み入れるようにする、denoising auto encoderを用いたnormalizeののちにneural netに入力(?。ここはより具体的な処理はわかっていない)といった取り組みを上位陣は行っていたよう。

  • 1st place

https://www.kaggle.com/c/porto-seguro-safe-driver-prediction/discussion/44629

  • 2nd place

https://www.kaggle.com/c/porto-seguro-safe-driver-prediction/discussion/44558

  • 3rd place

https://www.kaggle.com/c/porto-seguro-safe-driver-prediction/discussion/44608

javascript

  • eslint

.jsの静的解析を行える。
npmもしくはyarnでeslintとそれに関連するパッケージを入れる。このままだと「node_modules\.bin\eslint {source.js}」としなければ解析ができないが、Atomで書きながら解析実行するためには以下のパッケージを入れる。

apm install intentions busy-signal linter-ui-default linter linter-eslint

  • webpack, es2015

es2015で記述されたjavascriptをwebpackを用いて現在多くのブラウザで使用できるe5形式に変換する、といった使い方。
package.jsonのscriptsにbuildコマンドとして「node_modules\\.bin\\webpack.cmd」を、startコマンドとして「node_modules\\.bin\\webpack-dev-server.cmd」を追加しておくと便利。

  • editorconfig

プロジェクトフォルダに「.editorconfig」ファイルを用意しておくだけで、対応したeditorに設定を加えられる。
どのエディタを使うにしても設定を共有したいといった場合に便利。
Atomでは、packageとして「editorconfig」を追加すると使用可能。

今日学んだこと(11/18)

map

pythonで各リストの要素に同じ処理を加えたいときに使える。
ここではラムダ関数を使用しているが、もともと存在する関数を使用することも可能。

例えば、pandasのread_csvで読み込んだdataframeに同じカラム名がついている場合、下記にように番号付きに書き換えられる。

あらかじめ、「df」という名前のdataframeがあるものとする。

  cols = list(map(lambda x: "column_" + str(x), range(len(df.columns))))
  df.columns = cols

pandas.concat

読み込んだリストを結合して、dataframeを返す。
axis=1とした場合、横方向に連結。

  import pandas as pd

  #同じ形式の表を読み込む
  list_of_list = [pd.read_csv(os.path.join(input_path, f), index_col = 0) for f in file_names]
  df = pd.concat(list_of_list, axis = 1)

dataframe.rank()

dataframe中の各カラムについて、各行に入っている値の順位を返す。


サービスとして起動しているJenkinsを停止する

環境

現在起動しているJenkinsの停止方法

1. タスクマネージャーを起動。
2. 「サービス」タブから「Jenkins」を探す。
3. 右クリック→停止。

スタートアッププログラムから外す

1. 「Jenkins」サービスを見つけるところまで同様。
2. 「Jenkins」で右クリック。「サービス管理ツールを開く」を選択。
3. 左上に「サービス」と書かれたウィンドウが開くので、そこで「Jenkins」を探す
4. 見つけた「Jenkins」を右クリック→「プロパティ」
5. 「スタートアップの種類」を「無効」、もしくは「手動」に変更する。

kaggleを戦う基礎知識

随時追記。

Cross Validation

やり方の一例

sklearnのStraitifiedKFoldを使う方法
from sklearn.model_selection import StratifiedKFold

cv = StratifiedKFold(n_splits=3, shuffle=True, random_seed=seed)

for train_idx, target_idx in cv.split(train_x, target):
    ....

EDA

基礎集計。kaggleでデータの性質を見るようなkernelのタイトルについていることが多い。
どんな分析をしているか、どんなデータであるかを確認することを目的として読んだら良い。

optional

tmuxの使い方

AWSGCPを借りて作業する場合、セッションを維持したまま別の作業をするために、tmuxは必須。

  • 前提

- 作業環境
Ubuntu 16.04 LST

  • インストール
sudo apt-get install tmux
  • 水平分割で別のpaneを開く
Ctrl b + "
  • 垂直分割で別のpaneを開く
Ctrl b + %
  • 別のpaneへ移動
Ctrl b + o

Pythonの使い方

Dictionaryをキーワード引数として渡す方法
  • test_funcへDictionaryのparams引数を渡す場合
test_func(**params)

Compute Engineにストレージのファイルをコピーする

何の記事?

Google Cloud Platform(以下、GCP)の「Compute Engine」に立てたインスタンスに、GCPの「ストレージ」に置いたファイルをコピーしてくる方法の解説。

前提

事前にGCP のストレージ内に「test/input」フォルダを作成しているものとする。
そのフォルダ内にコピーしたいファイルがアップロードされているとする。

実際の作業

現在のディレクトリに「input」フォルダが存在するとして、その「input」フォルダ内に、Google Cloud Platform内「test/input」内のファイルをコピーする。

gsutil -m cp -r gs://test/input ./

NUnitを使った自動テスト環境

今回はVisutal Studio 2015でNUnitを使えるようにしようという話。
最終的に、コマンドプロンプトからテスト実行できるようになるのが目標。

  • 前提条件;
    • 環境:OS: Windows 10
    • NUnitのテストは既に書けているものとする。

NUnitを使ってVisual Studioでユニットテスト自動化的なやつやる - 残像ブログ




以下の記事の2番目の方法「Using NuGet Packages」でインストールをする。

Installation · nunit/docs Wiki · GitHub

  • インストール

1. Visual Studio 2015を立ち上げる。
2. 「ツール(T)」→「NuGetパッケージマネージャー(N)」→「ソリューションのNuGetパッケージの管理(N)」
3. 画面内、「参照」タブを選び、パッケージの検索窓へ、NUnitと入力
4. 検索結果から、「NUnit」、「NUnit.Console」をインストール(複数のProjectで使用するのであれば、ソリューション下へインストール)


これでインストール完了。

  • テスト実行

GUIで実行する方法と、CUIで実行する方法があるが、今回はCUIで実行する方法を紹介。

上に書いた方法でインストールを行うと、インストールしたソリューションフォルダの直下に「packages」フォルダが出来上がっている。

「packages」→「NUnit.ConsoleRunner.3.5.0」→「tools」→「nunit3-console.exe」を、テストを含んだプロジェクトの「dll」、「exe」を引数にして実行することで、テストを実行できる。

C4996を回避する

環境

Windows 10, Visual Studio 2015

エラーメッセージ

C4996 'std::_Fill_n': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' DPDPLibrary c:\program files (x86)\microsoft visual studio 14.0\vc\include\xutility 2810

回避方法

エラーメッセージにあるようにコンパイルオプション「_SCL_SECURE_NO_WARNINGS」を指定する。

Visual Studio 2015でのコンパイルオプションの設定は以下から行う。

該当プロジェクトを右クリック
→プロパティ
→構成プロパティ
C/C++
プリプロセッサ
プリプロセッサの定義の欄に、エラーメッセージの通りにコンパイルオプションを追加する。