KNIMEメモ:複数ファイルを読み込む方法
KNIMEで複数ファイルを読み込む方法を調べると、ループを使う方法にたどり着く。
実は最近のKNIME (ver.4.3以降) ならループを使わなくて良い場合がある。
複数のCSVファイルを1つにまとめるフローの例を挙げておく。
まとめ
最近のReader系ノードはディレクトリ配下の複数ファイル読み込みに対応している。
補足
- バージョン 4.2 --- 昔のフローを作成する必要がある。
- バージョン 4.3 --- 一部のReader系ノードが対応しているが、読み込みファイルが特定できず使いにくい。
- バージョン 4.4 --- 主要なReader系ノードが対応し、読み込みファイルが特定できるようになった。JSONやXMLの読み込みが未対応。
- バージョン 4.5 --- JSONやXMLの読み込みも含め、主要なReader系ノードが対応した。
- 複数ファイル読み込み非対応のReader系ノードを使う場合、昔のフローを作成する必要がある。
KNIMEメモ:Python Script (Labs) ノードが速い
KNIME 4.5 で登場した Python Script (Labs) ノードが速い。
#Python is now just as fast in #KNIME as it is anywhere else. The latest #KNIMERelease features a huge performance boost for Python in KNIME. Get more details at https://t.co/mHMW0nswKe #datascience pic.twitter.com/ogD0t370TZ
— KNIME (@knime) 2021年12月7日
従来の Python Script ノードは入力テーブルの行数が10万超えた辺りでかなり遅くなっていたのだが、劇的に改善したらしい。テーブルを入力してそのまま出力するだけの処理でベンチマークしてみた。5万行超えた辺りから明らかな性能差がみられる。
1000万行まで処理してみたが、10秒程度で終わった。
2000行以下の処理が若干遅いのは Python カーネルの呼び出しタイミングの影響なので、気になる人は Preferences の値を変更してみると良いかも。
まとめ
Python Script (Labs) ノードが速い。
KNIME 4.1 について
#Justreleased: #KNIME Analytics Platform 4.1 and KNIME #Server 4.10 is now available! For all the new highlights and details on new features, visit: https://t.co/mNb1qdnZ1w #KNIMERelease #StNicholasDay #DataScience pic.twitter.com/oQoDaNqbYV
— KNIME (@knime) 2019年12月6日
個人的にお気に入りのソフトウェア「KNIME Analytics Platform(以下 KNIME)」の最新バージョン 4.1.0 がリリースされました。早速新機能をチェックしてみましょう。
Navigation in the Workflow Canvas
ワークフローキャンバス上で Ctrl+F(Macの場合はCommand+F)を押して、ワークフロー内のノードを検索できるようになりました。ノード名、ノードID、コメントで検索できます。
Machine Learning
Binary Classification Inspector node
二項分類問題では、分類しきい値を調整して、分類タスクに合わせてモデルを最適化することが不可欠です。Binary Classification Inspectorノードは、機械学習アルゴリズムごとに最適なしきい値を適用することにより、二項分類子を比較するのを助けてくれます。
AWS Personalization Service
Amazon Personalize サービスと連携できるノード群がリリースされました。使用するには AWS 環境と資格情報が必要です。
Components
Component がワークフローと同様に KNIME Explorer 上でダブルクリックして編集できるようになりました。Component の説明に加え、カテゴリとアイコンも設定できるようになりました。
Input Filtering and Validation
Column Filter Configuration ノードと Column Selection Configuration ノードが拡張されました。選択対象とする列のタイプを選択したり、選択数の下限値を設定できるようになりました。
Nodes, Nodes, Nodes (新ノード)
MDF
MDF(Measurement Data Format)はバイナリファイル形式で、測定およびキャリブレーションシステムの事実上の標準です。MDF Readerノードを使用すればMDF ファイルを読み込むことができます。
Power BI
Send to Power BI ノードを使えば、KNIMEで作成したデータをPower BIに簡単にアップロードできます。 ノードのダイアログでOAuthベースの認証を使用し、データをアップロードするワークスペース、データセット、およびテーブルを選択します。ノードを実行すると、すべてのデータがPower BIダッシュボードで利用可能になります。
Row Filter (Labs)
Row Filter (Labs) ノードを使用すると、行インデックスや行IDなど、複数の列の条件で行をフィルターできます。 KNIME Labs Extensions として提供されているので、複数の条件に基づいてデータをフィルタリングする場合は、試してみると良いでしょう。
Webpage Retriever
Webpage Retriever ノードは HTTP GET 要求を発行し、Webページを取得します。 XHTML 形式に変換できるので、XPath ノードを使用すれば取得した Web ページから必要な情報を抽出できます。 Web ページからCookieを抽出したり、リクエストにCookieを含めることもできます。
Top k Selector
Top k Selector ノードを使えば、指定した並べ替え規則に従って上位 k 行を選択できます。Active Learning 拡張機能の Element Selector ノードをKNIME 標準ノードとして完全に書き直したものです。Sorter ノードと Row Filter ノードを1つにしたようなノードです。
KNIME Database Extension
DB Connection Extractor ノードや DB Connection Closer ノードなどの実用的なノードが追加されましたが、大きな改良点はトランザクション管理ができるようになったことです。 DB Transaction Start ノードと DB Transaction End ノードでトランザクション限界を指定できるようになりました。
Technical Improvements
Dynamic Ports
一部のノード(Concatenateノードなど)でポート数が変更できるようになりました。 左下隅に3つの黒い点があるノードが対応しています。
New Flow Variable Types
KNIME Analytics Platform 4.1では、新しいタイプのフロー変数が導入されています。 これまでフロー変数は string、integer、および double が使用可能でしたが、新たにboolean、long、array タイプが使えるようになりました。
まとめ
ユーザの使いやすさを向上させるアップデートとなりました。Component のアイコン部分に愛犬の写真など入れてみてはいかがでしょうか。
KNIME 4.0 について
The latest versions of #KNIME Analytics Platform 4.0 and KNIME #Server 4.9 are now live! For all the new highlights and details on new features and improvements, visit: https://t.co/Q28qQiVXB7#KNIMERelease #Opensource #Datascience #Analytics
— KNIME (@knime) June 27, 2019
個人的にお気に入りのソフトウェア「KNIME」の最新バージョン 4.0 がリリースされました。早速新機能をチェックしてみましょう。
Components
Wrapped Metanodes の呼び名が Components に変更されました。右クリックメニューの Metanode の内容などが変更になっています。使用感は変わらず、普通の Metanode はそのままのようです。(細かい変更理由はこちら)
Performance
KNIME のパフォーマンスが大きく改善しました。
- できる限り直近に読み込んだテーブルをメモリに保持
- テーブルをメモリに保持できない場合、高度なファイル圧縮アルゴリズムを使用
- ノードのデータ処理量の大部分を並列化
- ガベージコレクションアルゴリズムの更新によってフリーズが減少
- Parquet カラムナフォーマットのテーブルを利用
数倍スピードアップした例が紹介されています。
#KNIME Analytics Platform 4.0 and KNIME Server 4.9 features significant #performance improvements. You should notice considerable speedups of factors two to ten in your day-to-day workflow execution when working with native KNIME nodes. https://t.co/I2ojGTXUUo#KNIMERelease pic.twitter.com/K4b1eiJBHw
— KNIME (@knime) June 27, 2019
KNIME Database Extension
KNIME Labs でリリースされていた DB ノードが正式なノードとしてリリースされました。旧 Database ノードからパワーアップしているようです。
- データタイプマッピング
- データベーススキーマの操作性
- ドライバー管理
- データベース接続管理
- 全 Reader / Writer ノードのストリーミング対応
- 進化した SQL エディタ(シンタックスハイライト、プレビュー)
Machine Learning
機械学習モデル解釈と自動化のためのノードと新しいアルゴリズムが追加されました。
Machine Learning Interpretability (機械学習解釈可能性)
LIME / SHAP / Shapley Values Loop ノードを使うと、予測モデルが行ごとにどのように動作するかの説明が得られ、モデルの予測結果についての理解を助けてくれます。
Partial Dependence/ICE Plot (JavaScript) ノードを使うと、モデル予測が単一列の変化にどのように反応するか調べることができます。
Machine Learning Algorithms
以下が追加されました。
- Isolation Forest (H2O)
- t-SNE
- ONNX フォーマットの読み込み
Machine Learning Automation
Parameter Optimization Loop ノードで Bayesian Optimization (ベイズ的最適化)が使えるようになりました。
Plotly Integration
Plotly のライブラリがバンドルされ、Plotly ライブラリを使った View ノードが追加されました。
Duplicate Row Filter
Duplicate Row Filter ノードが追加されました。重複行を除くシンプルなノードですが、コミュニティからのリクエストに応えて作成されました。GroupBy ノードを使うよりも直感的に重複除去できます。
AdoptOpenJDK
KNIME Analytics Platform 4.0 から Java ランタイムが AdoptOpenJDK に変更されました。以前は Oracle Java を使用していました。
クラウド系、ビッグデータ、商用版の機能については割愛します。
まとめ
機械学習を自動化するための機能が強化され、KNIMEによって分析が完全自動化できる日がすぐそこまで来ているような気がします。
KNIME メモ:固定値の列を追加する
個人的によく使う、KNIMEで固定値の列を追加する方法をメモしておきます。
Constant Value Column ノードを使う
一番シンプルな方法。
Java Snippet ノードを使う
Java のコードを書かなければならないが、return 文1行でいける。
String Manipulation ノードを使う
これも string() 関数を使って1行で書ける。
Table Row to Variable ノードを使う
別テーブルの列名と固定値を使って、列を追加する。変数を使わなければいけない。
Column Appender ノード + Missing Value ノード を使う
昔作ったワークフローから発掘した今思えば非効率な方法。2つの警告マークがあるのがチャームポイント。
まとめ
個人的には Java Snippet ノードまたは String Manipulation ノードを使う方法がプログラマーみたいでかっこいいと思います。
KNIME メモ:Int To Double
KNIME で列を Integer 型から Double 型に変換する方法をメモしておきます。
「値段」列を Integer 型から Double 型に変換する。
↓↓↓
(方法)
Round Double ノードを使う。
Round Double ノードの設定例
ちなみにこの逆の Double To Int ノードは存在する。