今日学んだこと(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を停止する
環境
- Windows 10
現在起動している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のタイトルについていることが多い。
どんな分析をしているか、どんなデータであるかを確認することを目的として読んだら良い。
Compute Engineにストレージのファイルをコピーする
前提
事前にGCP のストレージ内に「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
c++の親クラスへのコンストラクタ引数受け渡し
継承関係にある以下のような2つのクラスがあるとしよう。
//定義 class IHoge { IHoge(const double a); }; class Hoge { Hoge(const double b); } //実装 IHoge::IHoge(const double a) { } Hoge::Hoge(const double b) { }
このコードはエラーとなる。
error: constructor for 'Hoge' must explicitly initialize the base class 'IHoge' which does not have a default constructor
なぜエラーとなるのかを考えるためには継承関係の子クラスが生成されるときの仕様を知る必要がある。
まず前提として、子クラスを生成するときには、「子クラスのコンストラクタ→親クラスのコンストラクタ」という順序で親クラスのコンストラクタも呼ばれる。
そのとき、今回のように子クラスHogeのコンストラクタが引数aをとって、その親クラスIHogeのコンストラクタも引数bをとるような場合、子クラスを生成したときには、親クラスIHogeのコンストラクタの引数として暗黙的にbが渡されることはない。そこで明示的に渡してやる必要がある。
//definition class IHoge { public: IHoge(const double a); }; class Hoge : public IHoge { public: Hoge(const double b); }; //implementation IHoge::IHoge(const double a) { } Hoge::Hoge(const double b) :IHoge(b) { } int main() { Hoge h(1.0); return 0; }
独習C++にも書いてある話。