「16SrDNA塩基配列で細菌分類(3)」の続きです。)

今度は学習用のデータ量を増やして、16SrDNAの塩基配列が 2000件以上登録されている53種類の属について、長さ 1280bp分を固定長を学習データとして学習させてみました。
ネットワークは、ノード4096の全結合6層、活性化関数 ReLU にして、出力層は sigmoid とし、epoch=70 で学習しました。

各 Python プログラムは、文字コード UTF-8、ライブラリは tensorflow, kerasを使用しています。
プログラム中で学習データと学習済みモデルの保存ディレクトリは、./data/dna2/として、モデルは JSON形式 keras_dna_model.json、ウエイトは h5 形式 keras_dna_weights.h5 として保存しています。

(1) 該当する塩基配列を抽出

dnaread2.py

(2) DNA塩基配列と正解のファイルを作成

converttfdata2.py

(3) 学習用 Pyhonプログラム

kerasdna53g.py

ネットワーク構成の部分(一部抜粋)―――――――――――――
# 全結合型ネットワーク
model = kr.models.Sequential()
model.add(kr.layers.Dense(units=4096, input_shape=(maxdnalength,), activation=’relu’))
model.add(kr.layers.Dense(units=4096, activation=’relu’))
model.add(kr.layers.Dense(units=4096, activation=’relu’))
model.add(kr.layers.Dense(units=4096, activation=’relu’))
model.add(kr.layers.Dense(units=4096, activation=’relu’))
model.add(kr.layers.Dense(units=4096, activation=’relu’))
# 出力層
model.add(kr.layers.Dense(units=generacount, activation=’sigmoid’))

結果 ———
テスト 11826件 正解率 98.2
——end

実行結果は、以前よりも高く出ました。

(4) 学習結果を読み込みテスト

学習結果を読み込み、属ごとの精度を算出してみました。

kerasdna53gtest.py

実行結果 ———

結果 属ごとに正解率を算出———
Sphingomonas 177件中 ◎ 99.4 % △ 0.6 % ☓ 0.0 %
Pseudoalteromonas 251件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Vibrio 116件中 ◎ 99.1 % △ 0.9 % ☓ 0.0 %
Pseudomonas 120件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Lactobacillus 240件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Streptococcus 329件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Bacillus 271件中 ◎ 99.3 % △ 0.7 % ☓ 0.0 %
Shewanella 229件中 ◎ 99.6 % △ 0.0 % ☓ 0.4 %
Leuconostoc 239件中 ◎ 97.5 % △ 1.7 % ☓ 0.8 %
Pantoea 187件中 ◎ 98.4 % △ 1.6 % ☓ 0.0 %
Microbacterium 161件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Corynebacterium 264件中 ◎ 98.9 % △ 1.1 % ☓ 0.0 %
Enterobacter 204件中 ◎ 92.6 % △ 7.4 % ☓ 0.0 %
Serratia 223件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Klebsiella 366件中 ◎ 99.7 % △ 0.3 % ☓ 0.0 %
Bradyrhizobium 229件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Agrobacterium 195件中 ◎ 93.8 % △ 5.1 % ☓ 1.0 %
Streptomyces 140件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Burkholderia 274件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Flavobacterium 166件中 ◎ 99.4 % △ 0.6 % ☓ 0.0 %
Lactococcus 230件中 ◎ 98.3 % △ 1.3 % ☓ 0.4 %
Brevundimonas 188件中 ◎ 98.4 % △ 0.0 % ☓ 1.6 %
Stenotrophomonas 185件中 ◎ 99.5 % △ 0.5 % ☓ 0.0 %
Mycobacterium 180件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Arthrobacter 190件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Staphylococcus 286件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Candidatus 260件中 ◎ 99.2 % △ 0.8 % ☓ 0.0 %
Achromobacter 188件中 ◎ 96.8 % △ 2.1 % ☓ 1.1 %
Rhodococcus 216件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Enterococcus 237件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Acinetobacter 251件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Mesorhizobium 277件中 ◎ 96.8 % △ 1.4 % ☓ 1.8 %
Halomonas 238件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Psychrobacter 218件中 ◎ 97.7 % △ 1.4 % ☓ 0.9 %
Marinobacter 180件中 ◎ 95.6 % △ 2.2 % ☓ 2.2 %
Clostridium 325件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Paenibacillus 282件中 ◎ 99.6 % △ 0.4 % ☓ 0.0 %
Micrococcus 143件中 ◎ 93.7 % △ 4.9 % ☓ 1.4 %
Nocardia 215件中 ◎ 98.6 % △ 1.4 % ☓ 0.0 %
Methylobacterium 192件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Aeromonas 194件中 ◎ 99.0 % △ 1.0 % ☓ 0.0 %
Escherichia 380件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Chryseobacterium 223件中 ◎ 95.1 % △ 2.7 % ☓ 2.2 %
Citrobacter 225件中 ◎ 80.4 % △ 12.4 % ☓ 7.1 %
Micromonospora 272件中 ◎ 97.8 % △ 1.5 % ☓ 0.7 %
Rhizobium 238件中 ◎ 95.0 % △ 5.0 % ☓ 0.0 %
Campylobacter 190件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Ochrobactrum 222件中 ◎ 92.3 % △ 4.1 % ☓ 3.6 %
Kocuria 187件中 ◎ 88.2 % △ 6.4 % ☓ 5.3 %
Lysinibacillus 189件中 ◎ 96.8 % △ 1.6 % ☓ 1.6 %
Salmonella 355件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Veillonella 12件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
Neisseria 277件中 ◎ 100.0 % △ 0.0 % ☓ 0.0 %
———
合計 11826件中 ◎ 98.2 % △ 1.3 % ☓ 0.6 %
——end.

結果の一覧をみると、Citrobacter など正解率の特に低い属がありました。
判別が難しいグループがあるようです。

 

(S.Onda 2018/8/18)