<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bioinformatics on TouchingFish.top</title><link>https://touchingfish.top/ja/categories/bioinformatics/</link><description>Recent content in Bioinformatics on TouchingFish.top</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Fri, 10 Dec 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://touchingfish.top/ja/categories/bioinformatics/index.xml" rel="self" type="application/rss+xml"/><item><title>メチル化の記憶（DNA Methylation）</title><link>https://touchingfish.top/ja/2021/programmable-dna-methylation-breast-cancer/</link><pubDate>Fri, 10 Dec 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/ja/2021/programmable-dna-methylation-breast-cancer/</guid><description>&lt;p&gt;がんゲノムアトラス（TCGA）計画は、がんのゲノム地図を描き出した。しかし、地図がわかっても道がわかるわけではない。遺伝子が突然変異を起こすことはよく知られている——塩基の置換、欠失、挿入が積み重なり、細胞は徐々に制御不能へと向かう。だが、あまり知られていないのは、遺伝子そのものは変わらずとも、発現のしかたに異常をきたしうるということである。これがエピジェネティクスの領分である。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cytosine methylation in mammalian DNA is regarded as a key epigenetic modification controlling essential processes such as imprinting, silencing of retrotransposons and cell differentiation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;メチル化はエピジェネティクスにおける最も古典的な修飾である。DNAは同じDNAのままだが、その上にメチル基が付加されることで、本来は開くはずの遺伝子が閉じられてしまう。逆もまた然りである。正常な細胞はメチル化によって自らのアイデンティティを保っている——肝細胞は自らが肝細胞であることを記憶し、ニューロンは自らがニューロンであることを記憶する。それを支えているのが、このエピジェネティックな記憶システムなのである。&lt;/p&gt;
&lt;p&gt;問題は、このシステムががんでは乱されてしまうことである。がん細胞には遺伝子変異だけでなく、異常なメチル化パターンも存在する——本来は抑制されているはずの遺伝子が活性化し、本来は活性化しているはずの遺伝子が抑制される。乳がんは特に典型的で、サブタイプごとに異なるメチル化の指紋を持つ。&lt;/p&gt;
&lt;p&gt;SOX2はその典型例である。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SOX2 is normally expressed in embryonic stem cells and neural progenitor cells, where it maintains self-renewal. DNA methylation in the SOX2 promoter and enhancer regions functions as an epigenetic switch, which forces cells to activate multiple differentiation pathways.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;この遺伝子は胚性幹細胞において主役を担い、幹細胞の自己複製能を維持している。正常な成人組織ではほぼ発現しておらず、細胞はすでに分化を終えてSOX2を必要としない。しかし研究者らは、基底細胞様乳がんの約43%においてSOX2が異常活性化していることを見出した。腫瘍組織ではSOX2プロモーターのメチル化レベルが正常組織よりも低く、一方でコピー数は増加していた——この二重の推進力により、この転写因子はがん細胞内で過剰に発現するようになり、CYCLIN D1を直接活性化して細胞増殖を加速させる。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The downregulation of SOX2 by RNA interference decreased the tumorigenic phenotype in the lung, breast and ovarian cancers.&lt;/p&gt;</description></item><item><title>変じて通じ、通じて久し</title><link>https://touchingfish.top/ja/2021/alternative-rna-processing/</link><pubDate>Fri, 21 May 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/ja/2021/alternative-rna-processing/</guid><description>&lt;p&gt;出勤早々、『雲南省の蝶の大発生』のライブ配信通知が届いた。しばらく前にホットサーチで見かけてから、ずっと興味を惹かれていた——学生時代、学部の先生お二人と一緒に山へ蝶の観察に出かけたことがある。一人は生物同定の達人、もう一人は昆虫学者で、いずれも私が敬愛する師である。&lt;/p&gt;
&lt;p&gt;蝶という生き物は、考えれば考えるほど面白い。芋虫と蝶——同一のゲノムを持ちながら、まるで別の生を生きる。遺伝子が入れ替わるわけではない。変態というプロセスの中で、同じ遺伝情報が新たに「解釈」し直されるのだ。あたかもスプライシングの設計図を差し替えたかのように、まったく新しい形態と機能へと羽化する。ふと古人の言葉が浮かんだ——&lt;/p&gt;
&lt;p&gt;変ずれば則ち通じ、通ずれば則ち久し。&lt;/p&gt;
&lt;p&gt;分子生物学の文脈に置き換えてみると、これが意外なほどしっくりくる。&lt;/p&gt;
&lt;p&gt;ヒトのゲノムにはわずか二万余りの遺伝子しかない。それでいて、これほど複雑で多様な生命システムを構築できるのは、その秘密の多くが転写後の選択的プロセシングにある。DNAから転写された一次mRNA（pre-mRNA）は、イントロンが切り除かれ、エクソン同士が連結されて初めて成熟mRNAとなる。だが、そのスプライシングの結果は一通りではない——同じ一次転写産物から、あるイントロンを保持したりスキップしたり、あるエクソンを含めたり除外したり、さらにはエクソンの連結順序を変更することもできる。これらの組み合わせにより、一つの遺伝子から数十、時には数百種類ものmRNA変異体が生まれ、それぞれ機能の異なるタンパク質へと翻訳される。&lt;/p&gt;
&lt;p&gt;これが選択的スプライシング（Alternative Splicing）である。&lt;/p&gt;
&lt;p&gt;同じ遺伝子が、組織や発生段階に応じて異なるスプライシングを受け、異なるタンパク質を産み出す。神経系を例にとると、同一遺伝子がスプライシングの違いによって、それぞれ異なる神経伝達物質に応答するイオンチャネルタンパク質を生成し、ニューロンの信号伝達の特異性を決定する。&lt;/p&gt;
&lt;p&gt;これに劣らず精妙なもう一つの仕組みが、選択的ポリアデニル化（Alternative Polyadenylation）である。&lt;/p&gt;
&lt;p&gt;mRNAの3'末端には通常ポリAテールが付加され、これが分解からの保護と翻訳の補助を担う。しかし、mRNA上には複数のポリアデニル化シグナルが潜在していることがある——転写開始点に近い部位を選べば、3'末端は短くなり、制御配列も少なく、mRNAは分解されやすくなる。一方、遠位の部位を選べば、いくつかの制御エレメントが保持され、細胞内でのmRNAの局在や翻訳効率に影響を与える。細胞はまさに、この部位選択を通じて、mRNAの寿命と翻訳のタイミングを緻密に制御しているのだ。&lt;/p&gt;
&lt;p&gt;遺伝子の数は限られている。しかし、こうした「変化」の仕組みによって、発現の多様性は飛躍的に拡張される——限られた遺伝情報が、絶え間なく生命を紡ぎ続ける。&lt;/p&gt;
&lt;p&gt;雲南省は、次回の生物多様性条約（CBD）締約国会議の開催地である。瑞麗は地理的に特殊な位置にあるため、新型コロナの再流行に見舞われ、当初五月の予定だった会議は十月に延期された。本来なら蝶の大発生の光景にちょうど間に合ったはずなのに、実に残念だ。&lt;/p&gt;
&lt;p&gt;記憶違いでなければ、明日は国際生物多様性の日だ。&lt;/p&gt;
&lt;p&gt;生物多様性はなぜそれほど重要なのか。それは、生態系の自然回復力に対する人々の楽観の度合い、私たちの倫理観、そして複雑さへの畏敬の念にかかっている。物質が極めて豊かな時代にあって、ホモ・サピエンスが占有する天然資源と掌握する科学技術は、寿命の延伸と種の安定をもたらした。それがどの程度まで他の生物の生存を脅かしているかは、容易には線引きできないように思う。&lt;/p&gt;
&lt;p&gt;ある希少種の絶滅が、いま生きる世代に及ぼす影響のほとんどは、目に見えるものではない。それでも私たちは、できる限り持続可能性の観点から行動する。これと対極の価値観を持つ人々は、資源の不安を抱くことは稀だが、それでもなお病気という難題に直面する。ウイルスは単純な生命体でありながら、グローバル化の中で前例のない規模のパンデミックを引き起こした。癌はといえば、全二十三巻（一巻約千頁）の書物に、わずか四十〜六十の誤植が生じたに過ぎない——それにもかかわらず、それは生命にとって最も過酷な最終決戦となる。&lt;/p&gt;
&lt;p&gt;幸いなことに、一部の聡明な人々——彼らが「ホモ・サピエンスこそ地球の支配者」と自負しているのでないことを願う——は、さまざまな種が生態系の中でそれとなく一定の役割を果たしていることに目を向け、行動を起こし、生物多様性の保全に関心を向けるよう人々に呼びかけている。&lt;/p&gt;
&lt;p&gt;私もまた、深く感化された。&lt;/p&gt;
&lt;p&gt;遺伝子の選択的スプライシングから、種の多様な共存に至るまで——「変わること」こそ、生命が限られた資源に対処するための根本的な戦略である。一つの遺伝子はスプライシングの違いによって多様なタンパク質を生み出し、一つの生態系は異なる種の組み合わせによって強靭さを保つ。理は同じ——ただ規模が異なるだけだ。&lt;/p&gt;
&lt;p&gt;ポストコロナの世界が、健やかで平和に、新たな生を羽ばたかせ、蝶へと羽化することを願う。&lt;/p&gt;</description></item><item><title>選択的スプライシング解析詳解 / Alternative Splicing</title><link>https://touchingfish.top/ja/2021/alternative-splice-algorithm/</link><pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate><guid>https://touchingfish.top/ja/2021/alternative-splice-algorithm/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;真核生物において、一つの遺伝子は選択的スプライシング（Alternative Splicing, AS）によって複数の
mRNA アイソフォーム（isoform）を産生しうる。すなわち、pre-mRNA のスプライシング過程で
異なるエクソンの組み合わせをとることで、異なる成熟 mRNA が生成されるのである。この仕組みは、
遺伝子数を増やすことなくプロテオーム（proteome）の多様性を飛躍的に拡大する。&lt;/p&gt;
&lt;p&gt;N 個のエクソンを持つ遺伝子は、理論上最大 2^(N-1) 種のスプライスバリアントを産生しうる。
実際には多くの遺伝子が 2〜10 種のアイソフォームを産生するが、ショウジョウバエの Dscam のように
数万種のスプライスバリアント（splice variant）を産生する例外的な遺伝子も存在する。&lt;/p&gt;
&lt;h3 id="計算解析が必要な理由"&gt;計算解析が必要な理由&lt;/h3&gt;
&lt;p&gt;ハイスループットトランスクリプトームシーケンシング（RNA-seq、全長 cDNA シーケンシング）は、
参照ゲノムにマッピングされた数千本の転写産物を生み出す。これらを人手で一つひとつ検査することは
現実的ではない。計算パイプラインに求められるのは以下の処理である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一遺伝子座に属する転写産物のクラスタリング&lt;/li&gt;
&lt;li&gt;真のスプライスバリアントとアライメントアーティファクト（alignment artifact）の識別&lt;/li&gt;
&lt;li&gt;各スプライスバリアントの分類&lt;/li&gt;
&lt;li&gt;全ゲノム規模での AS イベントの定量と集計&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="as-code-の概念"&gt;AS Code の概念&lt;/h3&gt;
&lt;p&gt;AS Code 体系（Sammeth et al., 2008）は、任意の選択的スプライシングイベントをコンパクトかつ
曖昧さなく記述する記法を提供する。その中核となる考え方は次のとおりである。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;重複する任意の転写産物ペアについて、両者間で異なるスプライス部位が AS イベントを定義する。
これらの差異部位を位置順に番号付けし、ドナー（^）またはアクセプター（-）として標識すれば、
当該イベントの構造を一意に記述するコードが得られる。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;このコード化により、AS イベントを生物学的に意味のあるカテゴリへ体系的に分類できるようになる。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="入力データと前処理"&gt;入力データと前処理&lt;/h2&gt;
&lt;h3 id="必要な入力ファイル"&gt;必要な入力ファイル&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ファイル&lt;/th&gt;
 &lt;th&gt;形式&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ゲノム&lt;/td&gt;
 &lt;td&gt;FASTA&lt;/td&gt;
 &lt;td&gt;参照ゲノム配列&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;遺伝子アノテーション&lt;/td&gt;
 &lt;td&gt;GTF&lt;/td&gt;
 &lt;td&gt;遺伝子モデルおよびエクソン座標&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cDNA アライメント&lt;/td&gt;
 &lt;td&gt;GFF3 (cDNA_match)&lt;/td&gt;
 &lt;td&gt;全長 cDNA アライメント結果&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;遺伝子アノテーションは参照転写産物の構造を提供し、cDNA アライメントは実験的に観測された
転写産物構造を提供する。後者には、アノテーションに未収録の新規スプライスバリアントが
含まれている可能性がある。&lt;/p&gt;</description></item><item><title>699の名前——機械学習における「Hello World」</title><link>https://touchingfish.top/ja/2019/brca-detection-with-sklearn/</link><pubDate>Mon, 21 Jan 2019 00:00:00 +0000</pubDate><guid>https://touchingfish.top/ja/2019/brca-detection-with-sklearn/</guid><description>&lt;p&gt;このデータセットを開いたとき、ふと頭をよぎった疑問がある。class列の2と4は、それぞれ「良性」と「悪性」を意味する——だが、その二つの数字の背後に座っているのは、誰なのか。&lt;/p&gt;
&lt;h2 id="699人の女性たち"&gt;699人の女性たち&lt;/h2&gt;
&lt;p&gt;ウィスコンシン乳がんデータセット（Wisconsin Breast Cancer Dataset）は、機械学習における「Hello World」と言える存在だ。699件のサンプル、各サンプルには10個の細胞特徴量がある。clump_thickness（塊の厚さ）、uniform_cell_size（細胞サイズの均一性）、uniform_cell_shape（細胞形状の均一性）、marginal_adhesion（辺縁接着性）、single_epithelial_size（単上皮細胞サイズ）、bare_nuclei（裸核）、bland_chromatin（淡明クロマチン）、normal_nucleoli（正常核小体）、mitoses（核分裂）。&lt;/p&gt;
&lt;p&gt;これらの特徴量は抽象的に聞こえるが、病理医が顕微鏡越しに実際に見てきたものだ。&lt;/p&gt;
&lt;p&gt;細胞の層数を数え、細胞の直径を測り、細胞の縁が滑らかかギザギザかを観察し、細胞核が何色に染まっているかを見る。1から10までの数字のひとつひとつが、人の目と人の脳による判断——経験の蓄積であり、訓練の痕跡なのだ。&lt;/p&gt;
&lt;p&gt;データの中の一行一行は、かつて診察室に座り、生検の結果を待っていた、ひとりの女性だった。&lt;/p&gt;
&lt;h2 id="細胞の言葉"&gt;細胞の言葉&lt;/h2&gt;
&lt;p&gt;病理医が細胞を見るまなざしは、私たちが人間を見るときとよく似ている。&lt;/p&gt;
&lt;p&gt;形を見る——丸みを帯びていれば良性、異形であれば悪性。境界を見る——境界が明瞭なら通常は良性、癒着していれば悪性であることが多い。染色を見る——均一に染まっていれば比較的正常、クロマチンが濃縮して黒ずんでいれば懸念材料だ。&lt;/p&gt;
&lt;p&gt;これは神秘でもなんでもない。数千例の症例が訓練した直感である。&lt;/p&gt;
&lt;p&gt;そして機械学習がやっていることは、端的に言えばこうだ。医師の経験を迂回し、アルゴリズムによってその「直感」を数値化し、ルール化する。SVM（サポートベクターマシン）は高次元空間で最適な分割線を見つけ、良性サンプルと悪性サンプルを分離する。KNN（K近傍法）は「類は友を呼ぶ」——未知のサンプルに最も近い5つのサンプルのクラスを見て、多数決でどのクラスに属するかを決める。&lt;/p&gt;
&lt;p&gt;KNNのK=5という値は、経験的にこの数値が概ね良好な結果を示すことがわかっているからだ。小さすぎるとノイズに影響されやすく、大きすぎると境界がぼやける。&lt;/p&gt;
&lt;p&gt;SVMのカーネル関数は、細胞の特徴量を高次元空間に写像する。その空間では、線形分離できなかったデータが分離可能になる。&lt;/p&gt;
&lt;h2 id="10分割交差検証"&gt;10分割交差検証&lt;/h2&gt;
&lt;p&gt;全データをそのまま訓練に使ってテストしたら、何が起きるか。&lt;/p&gt;
&lt;p&gt;モデルは訓練データを「暗記」しただけで、本当の法則を学んでいないかもしれない。試験前に答えを丸暗記して、初見の問題で手も足も出なくなるようなものだ。&lt;/p&gt;
&lt;p&gt;10分割交差検証（10-fold cross validation）が解決するのは、まさにこの問題である。データをランダムに10分割し、順番に9つを訓練セット、1つをテストセットとして、10回の実験を行い、最後に平均精度を取る。&lt;/p&gt;
&lt;p&gt;結果はこうだ。KNN 96.6%、SVM 96.0%。一見すると大差ない——しかし実際には——&lt;/p&gt;
&lt;p&gt;KNNの標準偏差は2.9%、SVMは3.3%だった。KNNのほうが安定している。&lt;/p&gt;
&lt;p&gt;これは何を意味するか。KNNは10回の実験におけるばらつきが小さく、SVMは時に良く、時に悪くという振れ幅がある。実運用においては、安定性のほうが、たまに出る高スコアよりも重要だ。&lt;/p&gt;
&lt;h2 id="precisionrecallそして命の重み"&gt;Precision、Recall、そして命の重み&lt;/h2&gt;
&lt;p&gt;しかし、正解率（accuracy）だけが指標ではない。医療の現場では、誤診と見逃しでは代償が異なる。&lt;/p&gt;
&lt;p&gt;Precision（適合率）：悪性と予測したサンプルのうち、実際に悪性である割合。&lt;/p&gt;
&lt;p&gt;Recall（再現率）：すべての悪性サンプルのうち、正しく検出された割合。&lt;/p&gt;
&lt;p&gt;F1スコアはこの両者の調和平均である。&lt;/p&gt;
&lt;p&gt;SVMのレポートにおけるクラス2（良性）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precision = 1.00：良性と予測したものは、ほぼすべて正しい&lt;/li&gt;
&lt;li&gt;Recall = 0.95：100件の良性のうち、5件が誤って悪性と判定された&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SVMのレポートにおけるクラス4（悪性）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Precision = 0.90：悪性と予測したもののうち、10件に1件は実は良性&lt;/li&gt;
&lt;li&gt;Recall = 1.00：すべての悪性が見つかった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;がん検診においては、Recallのほうがより重要だ。一人のがん患者を見逃すことは、一人の良性腫瘍を誤診することより危険である——後者は追加検査で済むが、前者は治療のタイミングを逃しかねない。&lt;/p&gt;
&lt;p&gt;3%の精度誤差は、699件のサンプルにおいて約21人に相当する。21人の女性である。診察室に座り、「追加検査をお勧めします」と書かれたレポートを受け取った、21人の女性だ。&lt;/p&gt;
&lt;p&gt;技術は確率を提示できる。しかし、彼女たちに代わって、その待ち時間の重みを引き受けることはできない。&lt;/p&gt;
&lt;p&gt;アルゴリズムは本物の細胞を見たことがない。ただ、699人の女性の経験の中に、ひとつの参照点を見つけただけだ。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="付録"&gt;付録&lt;/h2&gt;
&lt;h3 id="データ前処理"&gt;データ前処理&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#bbc3d4;background-color:#242933;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;import&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;numpy&lt;/span&gt; &lt;span style="color:#d08770;font-weight:bold"&gt;as&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;np&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;import&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;pandas&lt;/span&gt; &lt;span style="color:#d08770;font-weight:bold"&gt;as&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;pd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;from&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;sklearn&lt;/span&gt; &lt;span style="color:#d08770;font-weight:bold"&gt;import&lt;/span&gt; preprocessing&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; model_selection
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;from&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;sklearn.neighbors&lt;/span&gt; &lt;span style="color:#d08770;font-weight:bold"&gt;import&lt;/span&gt; KNeighborsClassifier
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;from&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;sklearn.svm&lt;/span&gt; &lt;span style="color:#d08770;font-weight:bold"&gt;import&lt;/span&gt; SVC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;from&lt;/span&gt; &lt;span style="color:#8fbcbb"&gt;sklearn.metrics&lt;/span&gt; &lt;span style="color:#d08770;font-weight:bold"&gt;import&lt;/span&gt; classification_report&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; accuracy_score
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4c566a;font-style:italic"&gt;# データセットの読み込み&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;names &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#eceff4"&gt;[&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;id&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;clump_thickness&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;uniform_cell_size&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;uniform_cell_shape&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;marginal_adhesion&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;single_epithelial_size&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;bare_nuclei&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;bland_chromatin&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;normal_nucleoli&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;mitoses&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;class&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;df &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; pd&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;read_csv&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;data.csv&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; names&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;names&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4c566a;font-style:italic"&gt;# 欠損データの置換&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;df&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;replace&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;?&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#5e81ac"&gt;-&lt;/span&gt;&lt;span style="color:#b48ead"&gt;99999&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; inplace&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;True&lt;/span&gt;&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4c566a;font-style:italic"&gt;# 無関係な特徴量の削除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;df&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;drop&lt;span style="color:#eceff4"&gt;([&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;id&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;],&lt;/span&gt; axis&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;&lt;span style="color:#b48ead"&gt;1&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; inplace&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;True&lt;/span&gt;&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="データ分割"&gt;データ分割&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#bbc3d4;background-color:#242933;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;X &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; np&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;array&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;df&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;drop&lt;span style="color:#eceff4"&gt;([&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;class&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;],&lt;/span&gt; &lt;span style="color:#b48ead"&gt;1&lt;/span&gt;&lt;span style="color:#eceff4"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;y &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; np&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;array&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;df&lt;span style="color:#eceff4"&gt;[&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;class&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;X_train&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; X_test&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; y_train&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; y_test &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; model_selection&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;train_test_split&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; X&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; y&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; test_size&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;&lt;span style="color:#b48ead"&gt;0.2&lt;/span&gt;&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="モデル訓練と交差検証"&gt;モデル訓練と交差検証&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#bbc3d4;background-color:#242933;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seed &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#b48ead"&gt;8&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scoring &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#39;accuracy&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;models &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#eceff4"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;models&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;append&lt;span style="color:#eceff4"&gt;((&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;KNN&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; KNeighborsClassifier&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;n_neighbors &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#b48ead"&gt;5&lt;/span&gt;&lt;span style="color:#eceff4"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4c566a;font-style:italic"&gt;# scikit-learn 0.22 で SVC のデフォルトパラメータが変更されました&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4c566a;font-style:italic"&gt;# gamma パラメータのデフォルト値が &amp;#39;auto&amp;#39; から &amp;#39;scale&amp;#39; に変更されました&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4c566a;font-style:italic"&gt;# models.append((&amp;#39;SVM&amp;#39;, SVC()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;models&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;append&lt;span style="color:#eceff4"&gt;((&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;SVM&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; SVC&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;gamma&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#39;auto&amp;#39;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;results &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#eceff4"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;names &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#eceff4"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#d08770;font-weight:bold"&gt;for&lt;/span&gt; name&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; model &lt;span style="color:#5e81ac;font-weight:bold"&gt;in&lt;/span&gt; models&lt;span style="color:#eceff4"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#4c566a;font-style:italic"&gt;# kfold = model_selection.KFold(n_splits=10, random_state = seed)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#4c566a;font-style:italic"&gt;# seed を指定するにはパラメータ shuffle = True が必要です&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; kfold &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; model_selection&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;KFold&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;n_splits&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;&lt;span style="color:#b48ead"&gt;10&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; shuffle &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#d08770;font-weight:bold"&gt;True&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; random_state &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; seed&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cv_results &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; model_selection&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;cross_val_score&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;model&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; X_train&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; y_train&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; cv&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;kfold&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; scoring&lt;span style="color:#5e81ac"&gt;=&lt;/span&gt;scoring&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; results&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;append&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;cv_results&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; names&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;append&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;name&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; msg &lt;span style="color:#5e81ac"&gt;=&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;%s&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;: &lt;/span&gt;&lt;span style="color:#a3be8c"&gt;%f&lt;/span&gt;&lt;span style="color:#a3be8c"&gt; (&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;%f&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;)&amp;#34;&lt;/span&gt; &lt;span style="color:#5e81ac"&gt;%&lt;/span&gt; &lt;span style="color:#eceff4"&gt;(&lt;/span&gt;name&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; cv_results&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;mean&lt;span style="color:#eceff4"&gt;(),&lt;/span&gt; cv_results&lt;span style="color:#5e81ac"&gt;.&lt;/span&gt;std&lt;span style="color:#eceff4"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#5e81ac"&gt;print&lt;/span&gt;&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;msg&lt;span style="color:#eceff4"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力：&lt;/p&gt;</description></item></channel></rss>