【Aidemy X Bio】Aidemyのコースを応用して、遺伝子解析データ用の教師なし学習プラットフォームを作ってみた
研究の一環として、遺伝子発現解析(RNA-seq)データを機械学習させるプラットフォームを作ってみようと思い、Aidemyのコード(主に機械学習(教師なし学習)のコースのもの)を少しずつ改変しつつ、手持ちのデータやチュートリアルの情報を利用して試行錯誤してきたが、実際のデータを利用して、簡単な教師なし学習ができるプラットホームができたのでご紹介したい!
試行錯誤の過程は
【Aidemy X Bio】Aidemyのコースを応用して、遺伝子解析データを機械学習させてみたら?第一弾
【Aidemy X MIT】MITのチュートリアルの教材を利用して、ワインの特性データのクラスタリングを深めてみる!
【Aidemy X MIT】MITのチュートリアルの教材を利用して、ワインの特性データの分類(classification)を深めてみる!
【MITの機械学習講座】回帰編をつかって、エイズウィルスの研究をしてみよう!
にも詳しく書いてみたので、興味のある方は是非お読みになってください!!
ハーバード大の遺伝子発現データを使う
データはハーバード大学医学部のバイオインフォマティックスコースで教材として用いられている10サンプルずつの乳がん細胞と正常細胞の遺伝子発現データーで、約23000遺伝子の発現量(RNA-seqのリード数)が20サンプルずつ入ったスプレッドシートが元である。このデータをRにより前処理し、発現が半分のサンプルで0である遺伝子を除いたものをcsvとしてまずは用意した。
最初に行った時はパッケージの関数を使わなかったので、エラーが出まくっていたが、試行錯誤しているうちにこれがそのまま使えることがわかった。
ライブラリ読み込み
Aidemyでもおなじみpandus, numpy, scikit-learnなどのライブラリを使用する
%matplotlib inline
from sklearn.cluster import AffinityPropagation, KMeans, DBSCAN, SpectralClustering
from sklearn.manifold import MDS, TSNE, Isomap
from sklearn.metrics import silhouette_score
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.linalg import logm, expm
データの取り込み
MDSプロットで次元を下げる(manifold learning): 元のデータは20サンプルX14593種類の遺伝子データであるがこれを2次元のデータへ投影する処理をする。これはmanifold learningという教師なし学習の一つであり、幾つかの方法があるがまずはMulti-Dimensional Scaling (MDS)という手法を使い、データの全体像を把握してみる
次にデータの前半ががん細胞、後半が正常細胞のものであることがわかっているので、2種類のデータがどのように分布しているか確かめてみる。
赤ががん細胞、緑が正常細胞である
K-means Clustering
次にK-means クラスタリングで二つのグループが分かれるかどうか見てみる!
がん細胞と正常細胞の集団の分離が完全ではないため、クラスタリングも完璧とは言えないが、まあまあの結果ではないだろうか?
その他のクラスタリング方法を試してみると
Spectral Clustering
Affinitypropagation
またmanifold learningの方もiso mapを行ってみると、
がん細胞と正常細胞の分布
K-means Clustering
といった具合に、そこそこ大きな遺伝子発現解析データ(20 X 14593 のマトリックス)であっても、前処理さえきちんとされているデータなら、手軽に教師なし学習ができるプラットフォームができた。実際に手持ちの自分のデータでも同じことをしてみたが、そこそこ使えそうな印象である。
なおここで使用したcodeをGithubでシェアしてみます。使うデータは標準化してないものと、CPMでリード数を標準化してものの二つを用意しておきますので、時間があれば比べてみてください。またコメントやフィードバック等ございましたらご連絡いただけると幸いです。
この記事が気に入ったらサポートをしてみませんか?