問題タブ [feature-engineering]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - scikit-learn の分類アルゴリズムのテキスト機能入力形式
私は、scikit-learn を使用して NLP を実行し始めています。私はすでに NLTK の分類子をいくつか使用していますが、今は scikit-learn に実装されている分類子を試してみたいと思っています。
私のデータは基本的に文であり、それらの文のいくつかの単語から特徴を抽出して、分類タスクを実行します。私の機能のほとんどは名目上のものです: 単語の品詞 (POS)、単語を左に、POS 単語を左に、単語を右に、POS 単語を右に-右、ある単語から別の単語への構文関係のパスなど
NLTK 分類子 (デシジョン ツリー、単純ベイズ) を使用していくつかの実験を行ったとき、機能セットは、機能に対応する値 (公称値) を含む単なる辞書でした。例: [ {"postag":"名詞", "wleft":"家", "パス":"VPNPNP",...},.... ]。これを分類子に渡すだけで、彼らは仕事をしてくれました。
これは使用されるコードの一部です:
抽出された機能セットの 1 つの例を次に示します。
前に述べたように、ほとんどの機能は名目上のもの (文字列値) です。
さて、scikit-learn パッケージの分類子を試してみたいと思います。私が理解しているように、このタイプの機能セットは、sklearn に実装されているアルゴリズムには受け入れられません。すべての機能値は数値でなければならず、配列または行列でなければならないからです。したがって、DictVectorizer クラスを使用して「元の」機能セットを変換しました。ただし、この変換されたベクトルを渡すと、次のエラーが発生します。
DictVectorizer() を使用すると、これらのエラーが発生します。ただし、DictVectorizer(sparse=False) を使用すると、コードがトレーニング部分に到達する前でもエラーが発生します。
このエラーのため、スパース表現を使用する必要があることは明らかです。
問題は、scikit-learn が提供する分類アルゴリズムを使用するために、名目上の特徴をどのように変換すればよいかということです。
あなたが私に与えることができるすべての助けを前もってありがとう.
アップデート
以下の回答で示唆されているように、scikit-learn に NLTK ラッパーを使用しようとしました。分類子を作成するコード行を変更しました。
次に、「train」メソッドを呼び出すと、次のようになります。
したがって、機能が名目上のものであるため、ラッパーは疎行列を作成できないようです。それでは、元の問題に戻ります。
string - スパマーの名前を学ぶ
現在、特にスポーツイベントが発生した場合、一部のスパムの波がインターネットに殺到しています。
スパマーのユーザー名がコンピューターで生成されたものではないことを強く疑うので、何らかの方法でスパマーの名前をプログラムで学習してみるのは面白いかもしれないと思いました。
ユーザー名は2〜15文字で、文字で始まり、文字、数字、_
または。のみを含める必要があり-
ます。
名前のサンプルリストは次のようになります
私は(大学から)アルゴリズムのかなり基本的な知識しか持っていません。私の質問は、任意のユーザー名がおそらくスパマーであるかどうかを予測するために使用できる機械学習アルゴリズムや文字列メトリックです。かなり単純なので、コサイン文字列similaritzを使用することを考えました。
r - R dplyr ウィンドウ ベースの機能を抽出する方法
私はこのことをどのように機能させることができるのだろうかと思っています:
基本的に、新しい機能は、タイム ウィンドウ ID-window_size : ID とキーの中にどれだけのポイントがあるかです。現在、私はどこでも 0 を取得しています。R では for ループはひどいアイデアです。何かアイデアはありますか?
よろしく、T
machine-learning - 未知のテスト セットで Select-K-best を使用する
sklearn でロジスティック回帰分類器をトレーニングしました。私のベース機能ファイルには 65 個の機能があり、二次結合も考慮して (PolynomialFeatures() を使用して) 1000 個に外挿しました。そして、 Select-K-Best() メソッドでそれらを 100 に減らしました。
ただし、モデルをトレーニングして新しい test_file を取得すると、基本機能は 65 個しかありませんが、モデルは 100 個を想定しています。
したがって、Select-K-Best.fit() 関数で必要なラベルがわからない場合、テスト セットに Select-K-Best() メソッドを適用するにはどうすればよいですか