KNIME・EXCEL倉庫

KNIMEやEXCELの備忘録です。

Tips

【KNIME】正規表現を使って文字列を弄りたい

・正規表現を使って文字列を弄りたい場面があった。 ・例えば、以下の表の数字だけを*に置き換えることを考える。 ・String ManipulationノードにregexReplaceという数式がある。regexは正規表現のことっぽい。例えば以下のように正規表現で数字を表現するこ…

【KNIME】全角と半角を変換したい

・全角と半角が混在している文字列があったとする。 ・表記の揺れは小さい方が良いので、KNIMEでこの揺れを半角か全角のどちらかに揃えたいと思ったのだが、やっぱりやり方が分からなかった。 ・そこで、Python Scriptノードを使って、Pythonで実装してみた…

【KNIME】場合分けして処理したい

・先日のワークフローで、条件ごとに処理を変えたい場面があった。 ・やり方がよく分からなかったので、Row Splitterで表を条件の数だけカチ割って、それぞれでString ManipulationやMath Formulaで処理させていた。 ・調べてみると、Rule Engineというノー…

【KNIME】同じ基準でNormalizeしたい

・例えば、学習データでにNormalizeを施してモデルを構築した場合に、テストデータをモデルに適用する前に学習データと同じNormalizeを施したいとする。 ・どうすればよいかと調べてみると、Normalizer (Apply)というノードがあった。サンプルのワークフロー…

【KNIME】アルファベットを含むセルをmissing"?"にしたい

・KNIMEでいろいろ扱っていると、特定の条件を満たすセルのデータを消したくなることがある。例えば、数値データばかりのところに、よくわからないアルファベットを含む文字列が混ざっている場合など。 ・こういう場合、文字列を含むセルをmissingにしたいが…

【KNIME】文字列を文字数で区切って別々の列に分けたい

・文字列を固定長の別々の列に分けたいことがあった。 ・やることはCell Splitterとほぼ同じなので、Cell Splitterで調べてみると、Cell Splitter By Positionなるノードがあった。如何にもこれっぽい。 ・このノードは、①区切る文字の隙間の番号と②区切った…

【KNIME】数値に応じて表を分割したい。

・表中の何らかの数値を基準として、表を分割したいことがあるとする。そんな時には、Rule-based Row Splitterノードが便利。 ・ワークフローを組んでみた(下図)。 ・Rule-based Row Splitterノードの設定は以下の通り。 ・ちなみに、Rule-based Row Filte…

【KNIME】Missing Valueのある列または行を丸ごと消したい

・Missing ValueのあるTableを処理する際に、何らかの方法でこの穴に対処する必要がある(例えば以下のTable)。 ・数値が何等か予想できるのであれば予測値で埋めることもできると思う。群内の欠損地であれば、平均値や中央値で補うこともあるかもしれない…

【KNIME】列をセミコロン区切りでくっつけたい

・諸般の事情で、別々のセルに分かれている文字列をセミコロン区切りで一つにまとめ上げたいケースがあった。 ・以下の例でいえば、それぞれの行に対して、「A;B;C」と「あ;い;う」という列をまとめた列を作成するイメージ。 ・なんとなく、ノード検索で"com…

【KNIME】SMILESを前処理したい

・化合物の構造情報を使って色々解析する際に、前処理をしたい場合がある。 ・例えば、SDFをSMILESに変換するのであれば、SDF ReaderとRDKit Canon SMILESで何とかなる。 ・今回は、このSMILESを更にKNIMEで前処理するにはどうすれば良いか、少し調べてみた…

【KNIME】行に含まれる値でcountifしたい。

・表の行に含まれている特定の値(文字列や数値)の数を数えたかった。 ・調べたところ、それらしい答えが見つかったので、メモしておく。 ・真似したのは以下の記事。 forum.knime.com ・以下、組んだワークフローの例(元記事と全く同じ) ・工程は以下の…

【KNIME】列または行の数値を集計したい。

・KNIMEで解析をしていて、列の数値または行の数値を集計したいことがあった。 ・それぞれに使うノードが異なるので、メモしておく(下図)。 ・列のデータを足す場合はGroupByを使う(以下設定)。ワイルドカードですべての列を選択し、処理にSumを設定。 …

【KNIME】sdfファイルから化合物の情報を抜き出したい。

・先日、化合物をKNIMEで扱ってみた。 ・化合物の構造ファイルとして、いろいろな記述法があり、中でもSMILESとSDFはよく見かける。 ・SMILESの特徴は、1次元の文字列の配列であり、記述自体がシンプルであること。SDFの特徴は、化合物の構造以外の情報も盛…

【KNIME】いろいろな分布の乱数を発生させたい。

・KNIMEでいろいろな分析をしていると、乱数を発生させたくなることがある。 ・EXCELでの乱数の発生のさせ方は以前記事にしたが、KNIMEだともっと簡単たくさんの乱数を発生させることができる。 ・Node Repositoryで調べると、以下の一群のノードが役に立ち…

【KNIME】グラフ通りのデータを作りたい。

・サンプルデータを使って分析を組んでいると、「こんな感じの分布のデータが欲しいなぁ」と思うことがある。 ・正規分布だったり一様分布だったりするならシンプルなのだが、例えば「平面グラフのこの辺に軸が傾いた楕円状に分布しているデータが欲しい」な…

【KNIME】棒グラフに色を付けたい。

・散布図はcolor managerノードで簡単に色を付けることができたが、棒グラフ(Bat Chart)のカラムに色を付ける方法が分からなかった。 ・少し癖があったので、メモしておく。 ・以下のようなフローを組んだ。 ・左のウィンドウはTable Creatorの中身。各列…

【KNIME】データをNormalizationしたい

・数値データを解析する際に、複数の特徴量を使う場合、単位の違いが問題になることがある。Random Forestなどの決定木系の手法ではそれほど問題にならないかも知れないが、その他多くの場合では何らかの手法でNormalizationされることが多い。 ・KNIMEでNor…

【KNIME】KNIMEでPythonを使ってみたい。

・KNIMEにはデータ分析に関連する様々な機能が搭載されており、Extensionを用いることにより、PythonやRなどを動かすこともできる。 ・少し解析をやっていて、Pythonを回したいシチュエーションに出くわした。それならPythonだけで十分じゃないかという話は…

【その他】回帰モデルの評価指標のいろいろ

・回帰モデルの評価指標にも、いくつか種類がある。少しまとめてみた。・R2 (決定係数):1 に近いほど精度の高い予測が行えていることになる。が、案外癖のある指標。定義が色々ある。相関係数の二乗は、いろいろある決定係数の一つのらしい(決定係数と呼ば…

【KNIME】重複した列を削除したい

・データ処理の不備で、同じ項目が複数混ざってしまうことがある。 ・そのような場合は、項目の行を削除するなどする必要がある。 ・そのような場合は、Duplicate Row Filterノードが便利。 ・例えば、同じ生徒が複数回含まれてしまっている表から、被ってい…

【KNIME】特徴量を削りたい

・機械学習において特徴量を選抜する手法は様々にある。 ・一般的なものとして、分散が小さすぎる特徴量、相関が高すぎる特徴量を除去することは真っ先に挙げられると思う。 ・分散が小さすぎる特徴量を除く際には、Low Variance Filterノード、相関が高すぎ…

【その他】分類問題の評価指標を整理したい

・分類問題の評価指標がややこしいので、自分の言葉で整理することにした。 ・分類問題では、いろいろな指標がモデル評価に用いられる。調べたいことは、「このモデルで、ちゃんと正しく分けられましたか?」ということだが、それぞれ何なのか? ・私のイメ…

【その他】機械学習に使えるデータセットを探したい

・機械学習でいろいろ試していると、サンプルデータセットを入手したくなることがある。 ・少し調べてみると以下のサイトが便利そうだった。 ・The UCI Machine Learning Repository archive.ics.uci.edu ・kaggle dataset www.kaggle.com ・dataflair data-…

【KNIME】ファイル名を変更したい。

・ファイル名を変更したくなったのでやり方を調べてみた。 ・参考にしたのは、KNIME Hubの以下の記事。 hub.knime.com ・私が作成したのは、以下のワークフロー。 ・流れは以下の通り。 ①String Inputで変更後のファイル名を入力(変数名はNewnameとした)。…

【KNIME】データをピックアップしたい。

・KNIMEでデータからモデルを作成する際に、データ全体ではなく、その一部からピックアップして使いたくなることがある。 ・例えば、「100行ある表から、30行だけピックアップして何らかの解析に使いたい」、「被りありで50行ピックアップしたい」、「分類問…

【KNIME】周期性を見てみたい。

・時系列データの解析手法として、トレンド解析及びトレンド除去後の周期性の解析というのが一般的に用いられるらしい。 ・時系列データの解析を実施してみたいと思って最初に思いついたのが、気温のデータだった。気温のデータは、気象庁のHPからcsvでダウ…

【KNIME】One Row To Manyで行を複製したい

・データを処理していると、行を複製したくなることがあった。 ・行を複製するOne Row To Manyというノードがあったので、記載する。 ・このノードは、表中の整数データの入った列の数値の数だけ行を複製する機能がある(下図)。 ・左が入力テーブル、真ん…

【KNIME】recursive loop (2 ports)を使ってみたい

・KNIMEでLoop処理を実行していると、複数のTableを変更してLoop処理したい場面があった。 ・今回私が遭遇したケースでは、回帰処理が求められたので、recursive loop (2 ports)で対応した(下図)。 ・初回の処理では、Startの上のポートから入ったTableは…

【KNIME】アルファベットの文字列を大文字または小文字に変換したい

・文字列をKNIMEで弄る際に、アルファベットを大文字又は小文字に統一したい場合がある。 ・そのような場合は、String Manipulationで変換可能できる(下図)。 ・大文字に変換したい場合はupperCase関数、小文字に変換したい場合はlowerCase関数を使用する…

【KNIME】Extensionで機能を追加したい

・KNIMEで専門的な解析をしたい場合は、追加機能をインストールする必要がある。 ・拡張機能(Extension)は、Fileから追加できる(下図)。 ・例えば、Twitterから情報をとってきたりするExtensionが欲しい場合、検索窓にキーワードを入力して検索すれば、…