見出し画像

【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でリード数を標準化してものの二つを用意しておきますので、時間があれば比べてみてください。またコメントやフィードバック等ございましたらご連絡いただけると幸いです。


この記事が気に入ったらサポートをしてみませんか?