技術資料(堀)

Day1:データの加工を行う 

プログラム 

データの加工を行う
1.化学反応式を正規表現に分解する

1.JPG

2.特性値が計算できない化合物を削除する
反応式は、オリジナル81204→削除後69779になる

3.210次元の特徴ベクトルを作成する
反応式の左辺の特徴ベクトル作成

      left_vec = [[list(Descriptors.CalcMolDescriptors(left_mols[i][j]).values()) for j in range(len(left_mols[i]))] for i in range(len(left_mols))]

   右辺

  right_vec = [[list(Descriptors.CalcMolDescriptors(right_mols[i][j]).values()) for j in range(len(right_mols[i]))] for i in range(len(right_mols))]

4.データ加工結果

2.JPG

ec番号に対応した特徴ベクトルの値が生成されている

Day2: モデル生成と学習 

プログラム 

1. 学習データとテストデータに分割する

Xtrain, Xtest, Ytrain, Ytest = train_test_split(ECXXXX,  # データの分割
                                               ECXXXX.index,  # ラベルの分割
                                               test_size=0.2,  # train:test = 4:1 
                                               random_state=42, # 乱数シード(再現のため)
                                               stratify=ECXXXX.index  # 元ラベルの分布に基づいて層化抽出

2.EC番号のラベルを1桁のみに
3.テストデータ作成
4.記述子選択
5.F1-scoreが最も高い記述子組合せを出力する
6.一桁目の学習、検証

3.JPG

7. EC 1.X.X (EC 1の2,3桁目)クラス分類

### 記述子選択 (1)記述子を1種追加したn種の記述子組合せを選択

(2)学習データを層化抽出し,検証用学習データと検証用テストデータに分割
(3)検証用学習データにSMOTEを適用し,n種の記述子からRF分類モデルを作成
(4)検証用テストデータを用い,Macro F1-Scoreで分類精度を評価
(5)(4)をk分割の回数だけ行い,平均値を出力
(6)(2)~(5)を 200-n 通りの記述子組合せで行い,平均値が最も高い記述子組合せを選択する
(7) n = n+1 として,k_featuresの数まで(1)~(6)を繰り返す

# 記述子選択インスタンス

 sfs1XX = SFS(pipe_mis_smote_rfc,  # 分類器 or パイプラインを入力
            k_features=30,  # 選択する記述子の上限
            forward=True,  # forward法
            floating=False, 
            verbose=2, 
            scoring='f1_macro',  # F1-Scoreで評価
            cv=StratifiedKFold(n_splits=5, shuffle=True, random_state=42)  # 層化5分割交差検証
           )

8.RFのパラメータ調整(グリッドサーチ)

### グリッドサーチ

#(1)パラメータ組合せのうち1パターンを選択

# (2)学習データを層化抽出し,検証用学習データと検証用テストデータに分割

# (3)検証用学習データにSMOTEを適用し,n種の記述子からRF分類モデルを作成

# (4)検証用テストデータを用い,Macro F1-Scoreで分類精度を評価

# (5)(2)~(4)をk分割の回数だけ行い,平均値を出力

# (6)(1)~(5)を全パラメータ組合せで行い,平均値が最も高いパラメータ組合せを選択する

 param_dic = {
   '  rfc__n_estimators': [10, 20, 30, 50, 80, 100, 150, 200, 250, 300, 500, 800, 1000],
     'rfc__max_depth': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30]
}

ここで、パラメータ調整を行う。 rfc__n_estimators・・・ランダムフォレストの決定木数
'rfc__max_depth'・・・ランダムフォレストの最大深さ
をグリッドサーチにより求める。

9.(7),(8)の方法を用いてEC 2. X. X~EC 6. X .Xまでの記述子選択、RFのパラメータ選択を行う

検証結果 

4.JPG

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS