12

私のデータは、連続的特徴とカテゴリ特徴の組み合わせで構成されています。以下は、私のデータがcsv形式でどのように見えるかの小さなスニペットです(さまざまな都市で店舗を運営するスーパーストアチェーンによって収集されたデータと考えてください)

city,avg_income_in_city,population,square_feet_of_store_area,  store_type ,avg_revenue
NY  ,54504            , 3506908   ,3006                       ,INDOOR    , 8000091
CH  ,44504            , 2505901   ,4098                       ,INDOOR    , 4000091
HS  ,50134            , 3206911   ,1800                       ,KIOSK     , 7004567
NY  ,54504            , 3506908   ,1000                       ,KIOSK     , 2000091

彼女を見ると、avg_income_in_city、square_feet_of_store_area、および avg_revenue が連続値であり、city、store_type などはカテゴリ クラスであることがわかります (データの簡潔さを維持するために、ここでは示していません)。

収益を予測するためにデータをモデル化したいと考えています。問題は、sklearn を使用して連続値を「離散化」する方法です。sklearn は、連続値の離散化のための「既製の」クラス/メソッドを提供していますか? (Orange のように、Orange.Preprocessor_discretize(data, method=orange.EntropyDiscretization()) など)

ありがとう !

4

5 に答える 5

10

答えはノーだ。scikit-learn にはビニングはありません。Eickenberg が言ったように、np.histogram を使用することをお勧めします。scikit-learn の機能は、離散的ではなく連続的であると想定されています。ビニングがない主な理由は、おそらく、ほとんどの sklearn が科学コミュニティのテキスト、画像機能、またはデータセットで開発されているためです。これらの設定では、ビニングが役立つことはほとんどありません。ビニングが本当に有益な、無料で入手できるデータセットを知っていますか?

于 2014-04-26T07:59:12.853 に答える
5

カテゴリ変数を数値でレンダリングすることも検討できます。たとえば、インジケーター変数を介して、ワン ホット エンコーディングとも呼ばれる手順です。

試す

from sklearn.preprocessing import OneHotEncoder

それをカテゴリ データに適合させた後、線形回帰などの数値推定法を実行します。カテゴリが多すぎない限り (都市は多すぎるかもしれません)、これはうまく機能します。

連続変数の離散化に関しては、適合したビン サイズを使用したビン化、または同等に、ヒストグラムの正規化後の均一なビン化を検討できます。numpy.histogramここで役立つかもしれません。また、Fayyad-Irani クラスタリングは に実装されていませんが、たとえば KMeans を介して、データの適応離散化 (たとえ 1D のみであっても) をsklearn自由にチェックしてください。sklearn.cluster

于 2014-04-24T11:56:15.310 に答える