KNIME メモ:値を欠損値に置き換える
KNIME 3.7 について
#KNIME #Analytics Platform 3.7 is out! Check out the new interactive views, #statistical tests, layout editor for composite views of #metanodes, integrations with #Jupyter notebooks & #PySpark, plus others: https://t.co/uEFUMtwhS0 #DataScience #DataAnalytics #OpenSource #BigData pic.twitter.com/DaTGfuemkf
— KNIME (@knime) December 6, 2018
個人的にお気に入りのソフトウェア「KNIME」の最新バージョン 3.7 がリリースされました。早速新機能をチェックしてみましょう。
New Statistics Nodes
KNIME Labs の Statistics に3つの検定ノードが追加されました。
Jupyter Integration
Python 関連ノードで Jupyter Notebook(.ipynb)をインポートし、そのまま実行できるようになりました。
例えば、下図のような Jupyter Notebook を「getIris.ipynb」ファイルとして出力します。
次に Python Source ノードで knime_jupyter.load_notebook 関数を使って「getIris.ipynb」ファイルを読み込み、getIris 関数の戻り値を output_table に渡すコードを書きます。
Python Source ノードを実行すると、Irisデータが出力されます。
XGBoost Integration
XGBoost が使えるようになりました。Linear Ensemble と Tree Ensemble の2タイプがあり、どちらも分類と回帰に対応しています。
Google Authentication and Google Drive Connectivity
新しい Google Drive Connection ノードは Google ドライブに保存したファイルをKNIMEリモートファイル処理ノードと一緒に使用できます。マイドライブとチームドライブの両方に対応しています。Google Authentication ノードは Google Sheets / Google Drive / Google Analytics.など様々なサービスに使用できます。
Updated Tableau Integration
Tableau との連携が強化されました。*1
Usability Improvements
Zooming with the Keyboard
ワークフローエディタの拡大・縮小がキーボードショートカットでもできるようになりました。CTRL + で拡大、CTRL - で縮小できます。
Guided Analytics and New Views
Heatmap
JavaScript Views にヒートマップを作成できる Heatmap ノードが追加されました。カラーマップを変更したり、他の Views ノードと連携することもできます。
Hierarchical Cluster Assigner
Hierarchical Cluster Assigner ノードを使うと、階層型クラスタ樹形図を視覚化し、ユーザーがクラスタ数を決定するしきい値を対話式に設定できます。 他の Views ノードと連携することもできます。
Tile View
Card View ノードは KNIME テーブルの代わりとなるビューを提供します。Table View ノードと似ていますが、画像が表示できるという特徴があります。
「Card View」は商標の都合上、KNIME 3.7.1 では「Tile View」に変更されるようです。
CSS Editor
JavaScript ビューのスタイルシートを編集するためのノードです。シンタックスハイライトやオートコンプリートが使えます。
Interactive Layout Editor and Nested Wrapped Metanodes
ラップメタノードのレイアウトエディタに「Visual Layout」機能が追加されました。ドラッグ&ドロップでレイアウト操作したり、ラップメタノードをラップメタノード内に配置できるようになりました。
いつもどおり、ビッグデータ系の話、商用版の機能については割愛します。
まとめ
JavaScript を使った機能拡張が順調に進んでいるようです。
*1:Tableauは有償ソフトウェアなので省略
KNIME メモ:圧縮ファイルを扱う
KNIME で圧縮ファイルを扱うときの注意点をメモしておきます。
- .zip / .gz / .tar 形式で圧縮されたテキストファイルは Reader 系ノードで直接開ける。*1
- zip の中に複数のテキストファイルが含まれていると、File Reader ノードの場合、1つ目のファイルが開かれる。*2
- 非テキストファイル(.xlsx など)や複数ファイルからなる圧縮ファイルを展開するには Unzip Files ノードを使う。Unzip Files ノードは .zip / .jar / .tar / .tar.gz / .tar.bz2 / .cpio / .ar の形式に対応している。
- 圧縮ファイル内のテキストが欲しいだけなら、対応形式が多い Tika Parser ノードを使うのもアリ。
KNIME Analytics Platform 3.6 について
#KNIME Analytics Platform 3.6 now available! Includes enhancements to #DeepLearning integrations, new utility nodes, ability to create a local, fully functional #BigData environment within a KNIME workflow, KNIME Workflow Hub, & more. Check out https://t.co/yzXZ0hoQWt for more!
— KNIME (@knime) July 11, 2018
個人的にお気に入りのソフトウェア「KNIME」の最新バージョン 3.6 がリリースされました。早速新機能をチェックしてみましょう。
KNIME Deep Learning
- KNIMEノードを使って深層学習ネットワークを設定できるようになりました。このためコードを書かなくて良くなりました。
- 正規の Tensorflow モデルを使用し、Keras から Tensorflow にシームレスに変換できるようになりました。
これによりノード構成も大きく変更されています。Keras の Layers の中にはノードがたくさん入っています。
(3.6.0 のノード構成)
(3.5.x のノード構成)
Constant Value Column Filter
Constant Value Column Filter ノードは、入力したテーブルから定数列を削除します。例えば、列の値が0だけのもの、同一の文字のもの、すべて欠損値のものは削除されます。
↓
Numeric Outliers
Numeric Outlier ノードは、疑わしいまたは間違った数値データをデータセットから削除します。四分位範囲(IQR)を使用して、選択した各列の異常値を個別に検出して処理します。
↓
Column Expressions
Column Expressions ノードを使用すると、入力テーブルに対して行単位で実行される式を使って、列を追加したり、置き換えたりできます。この式は単一の関数呼び出しのようにシンプルにできますが、複雑な関数も使えます。文字列操作や数式の定義済み関数のライブラリを使用すると、式を簡単に作成できます。
(例: ls -l コマンドの出力からファイルかディレクトリかを判別する)
(結果)
Scorer (JavaScript)
Scorer(JavaScript)ノードは、KNIMEのScorerノードの拡張バージョンです。予測精度に関する、より詳細な統計情報にアクセスできるようになります。ラップされたメタノードビュー内の他のJavaScriptビューと対話的に動作します。
Git Nodes
Git ノードを使うと、ローカル Gitリポジトリ を操作できます。
- Author や branch などを基準にコミットを見つける。
- 特定のコミットを含む branch を見つける。
- コミットをタグ付けする。
- コミットの詳細(author, date, affected files..)を検索する。
Call Workflow (Table Based)
Call Workflow (Table Based) ノードを使うと、KNIME形式のテーブルを他のワークフローに簡単に渡せます。呼び出し側のワークフローはテーブルとフロー変数を他のワークフローに送り、処理結果のテーブルを受け取ります。呼び出される側のワークフローは Container Input/Output ノードでデータを送受信します。
- Container Input (Table) - 呼び出し側のワークフローからテーブルを受け取る。
- Container Input (Variable) - 呼び出し側のワークフローからフロー変数を受け取る。
- Container Output (Table) - 呼び出し側のワークフローにテーブルを送る。
Text Processing
2つの新しいノードが追加されました。
- Dictionary Tagger (Multi Column) - 1つのデータテーブルの複数の列を独立した辞書として使用して、文書内の用語にタグを付けることができます。
- Term Neighborhood Extractor - 文書内のすべての用語の左右の用語の近傍を抽出します。 左右の近傍の数を指定することができます。これによって、名詞の隣接した形容詞やタグ付けされた実体の隣接した動詞を全て見つけ出すことができるようになります。
Usability Improvements
キーボードショートカットを使ってノードを接続・接続解除する
右クリックメニューからノードの接続・接続解除ができるようになりました。接続したいノードを選択して、右クリックメニューまたは CTRL + L を入力してみましょう。接続解除も同様です。
ズーム
ワークフローエディタ上のワークフローをキーボードとマウスホイールでズームできるようになりました。 CTRL キーとマウスホイールを組み合わせるとズームイン・アウトできます。CTRL + ALT と マウスホイールできめ細かな調整ができます。
ノードをドロップして、ノードの置換と接続する
ノードをドラッグ&ドロップで置換できるようになりました。ドラッグすれば、接続していないノードを他のノードに置換できます。また、接続済みノードの線にのノードをドラッグすると、ノードを挿入できます。
(Joiner ノードをドラッグ)
(Joiner ノードを Row Filter ノード上で ドロップ)
(ノードが置換される)
Node repository 検索
検索がヒットしなかった場合、見つからなかった旨が表示されるようになりました。
JavaScript Table view/editor でのコピー&ペースト
Table View(JavaScript) ノードと Table Editor(JavaScript) ノードにおいて、コピー&ペーストが簡単になりました。Table View ノードでセルを範囲選択し、キーボードショートカットを使って、Table Ediror ノードの表にデータを貼り付けることができます。Microsoft Excel や Google Sheets と一緒に使うと便利です。
その他いろいろ
パフォーマンス向上: Column Store (お試し版)
KNIME のパフォーマンス改善計画の最初のステップとして、Apache Parquet ベースの KNIME 列指向ストレージ のお試し版が使えるようになりました。この拡張は、内部のKNIMEテーブルをアクセスと圧縮がより高速な形式で格納します。大量のデータを処理する場合、多くのKNIMEノードの実行時間が短縮されます。
ビューが美しく:CCS の変更
全ての JavaScript ビューは CSSルールを使ってカスタマイズできます。CSSルールを文字列に入れ、ノード設定ダイアログでフロー変数 'customCSS' をセットします。利用可能な CSS クラスのリストはこちらを参照してください。
Database Integration
新しいデータベースフレームワークはまだ完全ではありませんが、すでに新しい素敵な機能が搭載されています。新しいフレームワークを使って作成されたノードは、データベースと視覚的にやりとりできるようになっています。これらの新しいノードはノードリポジトリの KNIME Labs > DB から利用できます。
使いやすさ
信頼性
- 専用のトランザクション
- 柔軟なドライバ管理
- 接続管理の改善
パフォーマンス
- 並列実行のためのコネクションプーリング
- 全ての Reader / Writer ノードがストリーミングに対応
Apache Kafka Integration
Apache Kafka 用のノードが3つリリースされました。
- Kafka Connector - Kafka クラスタに接続します。
- Kafka Consumer - Kafka からメッセージを受け取ります。
- Kafka Producer - Kafka にメッセージを送ります。
JSON Path library update
JSON Path ライブラリ json-path のバージョンが 2.0.0 から 2.4.0 にアップデートされました。いくつかの不具合が修正され、特定の JSON Path の結果が少し変更されています。
Java Snippet Bundle Imports
新たに追加された Additional Bundles タブ を使うと、KNIME Analytics Platformのインストールに既に含まれているライブラリをバンドルして使用できるようになりました。
長くなったので、KNIME Workflow Hub、ビッグデータ系の話、商用版の機能については割愛します。
まとめ
ディープラーニング関連ノードが大幅にパワーアップしたのが印象的ですが、特定の機能によらず、いろいろとアップデートが進められているように見えます。個人的には Constant Value Column Filter ノードがお気に入りです。
各機能の詳細については、(時間があれば)別記事で取り上げたいと思います。
KNIME Analytics Platform 3.5.4 について
個人的にお気に入りのソフトウェア「KNIME」の最新バージョン 3.5.4 がリリースされました。3.5.3 をインストールしてアップグレードすることで利用できるようです。(インストーラは提供されていません。)
バグ修正のリストのうち、日本語関連の修正と思われる「AP-8986 - Send Email node messes up file name of attachments when name contains Japanese characters」について試してみたいと思います。雰囲気で訳すと「Send Email ノードは添付ファイル名に日本語文字が含まれているとき、ファイル名をダメにする。」ということで、正直心当たりがあります。
修正前の Send Email ノード の動き
まずは修正前の Send Email ノードの動きをチェックします。
ノードの設定ダイアログの Attachments タブで日本語文字を含むファイルを添付します。
Mail タブと Mail Host (SMTP) タブに必要な設定を入力し、ノードを実行します。
Send Email ノードで送信したメールを確認すると、添付ファイルが文字化けしています。(下図は Gmail の表示)
修正後の Send Email ノード の動き
同じことを KNIME 3.5.4 の Send Email ノードで実施してみます。メールを確認すると、添付ファイルの日本語が正しく表示されています。
まとめ
KNIME 3.5.4 にアップグレードすると、Send EMail ノードで日本語の添付ファイルが送れるようになります。
KNIME Analytics Platform 3.5.3 について
個人的にお気に入りのソフトウェア「KNIME」の最新バージョン 3.5.3 がリリースされましたが、その中にうれしいバグ修正があったので紹介したいと思います。
そのバグ修正とは Changelog の「AP-8686: Problems with certain Japanese Characters in Java Snippet nodes」です。
何が修正されたのか?
Java Snippet ノードで、列名に日本語が含まれているテーブルを処理できるようになりました。実際にワークフローを作成して確認してみます。
(作成したワークフロー)・・・身長と体重からBMIを計算
(身長・体重データ)・・・Table Creator ノードで作成
(Java Snippet ノードの設定)・・・Input に日本語の列名が含まれている
ワークフローを実行すると正常に処理されました。
(Java Snippet ノードの出力)
ワークフローの互換性?
KNIME 3.5.3 で作成した上記のワークフローを KNIME 3.5.2 で実行しようとするとどうなるのか興味があったので調べてみました。ワークフローを開こうとすると警告が出るようです。
Load Anyway をクリックすればワークフローは開けますが、実行するとエラーになりました。
まとめ
Java Snippet ノードで、列名に日本語が含まれているテーブルを処理できるようになりました。長年の不便が解消されてうれしい限りです。
NodePit - KNIME ノードを探す便利ツール
Twitter を眺めていると何やらよさげなものを見つけました。
If you use @knime I can recommend @NodePit. Great tool if you are looking for a node!
— Tim-Oliver Buchholz (@ti_buch) 2018年1月20日
NodePit なるノード探しに使えるグレートなツールがあるようです。 NodePit の Twitter アカウントにあるリンクから NodePit の WEBサイトへアクセスしてみます。
サイトのトップページは Google のような感じです。テキストエリアにキーワードを入力すれば、検索できそうです。
テキストエリアに「CSV」と入力し、検索アイコンをクリックすると、以下のような結果が得られました。「CSV」に関係したものがヒットしてきています。
3番目の結果「CSV Reader」をクリックすると、詳細が表示されます。
- Options・・・KNIME の Node Description と同じ
- Best Friends (Incoming)・・・入力ポートによく使われるノードの一覧
- Best Friends (Outgoing)・・・出力ポートによく使われるノードの一覧
- Workflows・・・このノードが含まれるサンプルワークフローの一覧
- Update Site・・・ノードのインストール方法
まだベータ版のためか公開元がPRしてないので、ここでは簡単な紹介に留めておきます。NodePitのプラグイン もあるようなので、興味ある人は使ってみてはいかがでしょうか。