Machine-learning-with-python-data-feature-selection
機械学習-データ機能の選択
前の章では、機械学習のためにデータを前処理して準備する方法について詳しく見てきました。 この章では、データの特徴選択とそれに関連するさまざまな側面について詳しく説明します。
データ機能選択の重要性
機械学習モデルのパフォーマンスは、トレーニングに使用されるデータ機能に直接比例します。 提供されるデータ機能が無関係な場合、MLモデルのパフォーマンスは悪影響を受けます。 一方、関連するデータ機能を使用すると、MLモデル、特に線形およびロジスティック回帰の精度を高めることができます。
ここで、自動機能選択とは何かという疑問が生じます。 これは、出力または予測変数に最も関連性のあるデータ内の特徴を選択する助けとなるプロセスとして定義される場合があります。 属性選択とも呼ばれます。
以下は、データをモデル化する前の自動機能選択の利点の一部です-
- データモデリングの前に特徴選択を実行すると、過剰適合が減少します。
- データモデリングの前にフィーチャ選択を実行すると、MLモデルの精度が向上します。
- データモデリングの前に機能選択を実行すると、トレーニング時間が短縮されます。
機能選択テクニック
以下は、PythonでMLデータをモデル化するために使用できる自動機能選択技術です-
単変量選択
この特徴選択手法は、統計的テストの助けを借りて、予測変数と最も強い関係を持つこれらの特徴を選択するのに非常に役立ちます。 scikit-learn PythonライブラリのSelectKBest0classの助けを借りて、単変量特徴選択手法を実装できます。
例
この例では、Pima Indians Diabetesデータセットを使用して、カイ2乗統計検定を使用して、最適な機能を備えた4つの属性を選択します。
次に、配列を入力コンポーネントと出力コンポーネントに分けます-
次のコード行は、データセットから最適な機能を選択します-
また、選択に応じて出力用のデータを要約することもできます。 ここでは、精度を2に設定し、各属性の最高のスコアとともに最高の機能を備えた4つのデータ属性を示しています-
出力
パンダからread_csvをsklearn.feature_selectionからインポートRFEをsklearn.linear_modelからインポートLogisticRegression path = r’C:\ pima-indians-diabetes.csv 'names = [' preg '、' plas '、' pres '、' skin '、 'test'、 'mass'、 'pedi'、 'age'、 'class'] dataframe = read_csv(path、names = names)array = dataframe.values
X = array [:、0:8] Y = array [:、8]
model = LogisticRegression()rfe = RFE(model、3)fit = rfe.fit(X、Y)print( "機能の数:%d")print( "選択された機能:%s")print( "機能ランキング: %s ")
機能の数:3選択された機能:[True False False False False True True True False]機能ランキング:[1 2 3 5 6 1 1 4]
パンダからread_csvをsklearn.decompositionからインポートimport PCA path = r’C:\ pima-indians-diabetes.csv 'names = [' preg '、' plas '、' pres '、' skin '、' test '、' mass '、' pedi '、' age '、' class '] dataframe = read_csv(path、names = names)array = dataframe.values
X = array [:、0:8] Y = array [:、8]
pca = PCA(n_components = 3)fit = pca.fit(X)print( "説明された分散:%s")%fit.explained_variance_ratio_ print(fit.components_)
差異の説明:[0.88854663 0.06159078 0.02579012] [[e-03 9.78115765e-02 1.60930503e-02 6.07566861e-02 9.93110844e-01 1.40108085e-02 5.37167919e-04 -3.56474430e-03] [2.26488861e-02 9.72210040e -01 1.41909330e-01 -5.78614699e-02 -9.46266913e-02 4.69729766e-02 8.16804621e-04 1.40168181e-01] [-2.24649003e-02 1.43428710e-01 -9.22467192e-01 -3.07013055e-01 2.09773019 e-02 -1.32444542e-01 -6.39983017e-04 -1.25454310e-01]]
pandasからread_csvをsklearn.ensembleからインポートExtraTreesClassifier path = r’C:\ Desktop \ pima-indians-diabetes.csv 'names = [' preg '、' plas '、' pres '、' skin '、' test '、 'mass'、 'pedi'、 'age'、 'class'] dataframe = read_csv(data、names = names)array = dataframe.values
X = array [:、0:8] Y = array [:、8]
モデル= ExtraTreesClassifier()model.fit(X、Y)print(model.feature_importances_)
[ 0.11070069 0.2213717 0.08824115 0.08068703 0.07281761 0.14548537 0.12654214 0.15415431]