# 【入門者向け】scikit-learn（サイキットラーン）の使い方について徹底解説して実装していく！

> 当サイト【スタビジ】の本記事では、Pythonのライブラリ「Scikit-learn」について解説していきます。Scikit-learnは簡単に機械学習モデルを構築することの出来るライブラリで非常に重宝します。本記事の最後では実際に機械学習手法「ランダムフォレスト」をScikit-learnを使って実装してみましょう！

- URL: https://toukei-lab.com/scikit-learn
- 公開: 2022.11.29 / 更新: 2024.12.27
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
本記事では、Pythonのライブラリ「Scikit-learn」について解説していきます。Scikit-learnは簡単に機械学習モデルを構築することの出来るライブラリで非常に重宝します。本記事の最後では実際に機械学習手法「ランダムフォレスト」をScikit-learnを使って実装してみましょう！
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です。

機械学習手法を簡単に呼び出して使うことのできる必須ライブラリ「**Scikit-learn**」について解説していきます！

データ加工に使う時もありますよ！

データ分析の工程において、<mark>やっぱりモデル構築というのは花形でありデータ分析の醍醐味です。</mark>

無数の機械学習手法がある中で「**どの手法を選ぶか**」は非常に大事。

:::talk{who="robotan"}
手法がたくさんあってどれを使えばよいのか分からないよー！
:::

:::talk{who="umatan"}
どの手法をどの場面で使えばよいのか理解していこう！
:::

この記事を読めばScikit-learnの正しい使い方や実装方法が分かるようになります！

ちなみにScikit-learnで登場する各種機械学習について学び実装していきたい方は当メディアが運営する[スタビジアカデミー](https://toukei-lab.com/achademy/)をチェックしてみてください！

:::box
**業界最安級のデータサイエンティスト特化スクール：[スタビジアカデミー](https://toukei-lab.com/achademy/)**
:::

## Scikit-learnとは

![Scikit-learn](/wp-content/uploads/2020/07/scikit-learn-min.jpg)

Scikit-learnはPythonのオープンソース機械学習ライブラリです。

:::related
Scikit-learn公式ドキュメント：<https://scikit-learn.org/stable/>
:::

Scikit-learnの読み方は「**サイキットラーン**」。

誰でも自由に使えて、使える機械学習手法が多岐にわたるのでまずはScikit-learnをおさえておけば、ほとんどの機械学習手法を実装することが可能です。

ただ[深層学習](/deep-learning)まわりはScikit-learnでは実装できないので、Tensorflowや[Keras](/keras)などを利用することになります。

## Scikit-learnの使い方

![python](/wp-content/uploads/2019/08/Admin-amico-min.png)

それでは、そんなScikit-learnの使い方について見ていきましょう！

Scikit-learnはPythonのsklearnからモジュールを呼び出して使います。

```python
from sklearn import linear_model
```

たとえばこのように記述することで線形回帰分析が使えるようになります。

Scikit-learnで使える機械学習手法については公式ドキュメントの以下のチートシートが役立ちます。

![Scikit-learn](/wp-content/uploads/2020/07/scikit-learn2-min.jpg)出展：<https://scikit-learn.org/stable/tutorial/machine_learning_map/>

まずスタートして、サンプル数が50未満ならデータをもっと集めます。

そこから質的変数なのか量的変数なのか、ラベル付きの教師あり学習なのか否かなどの基準を基に分岐していきます。

何となく感覚で選んでいる機械学習手法が、このチートシートによって分かりやすく分類されます。

ぜひ、Scikit-learnを使って機械学習モデルを構築する際はこのチートシートを参考にデータを分類してみてください！

## Scikit-learnを簡単に実装

![pc python](/wp-content/uploads/2019/08/Work-time-amico-min.png)

それでは実際にScikit-learnを実装していきましょう！

[決定木](/%e6%b1%ba%e5%ae%9a%e6%9c%a8)と[バギング](/ensemble)を組み合わせた強力な機械学習手法である「[ランダムフォレスト](/%e3%83%a9%e3%83%b3%e3%83%80%e3%83%a0%e3%83%95%e3%82%a9%e3%83%ac%e3%82%b9%e3%83%88)」を使って定番のirisデータを分類していきます。

irisデータとはあやめの種類を分類したデータで目的変数は3カテゴリーの質的変数、説明変数は花びらの幅とか4つです。

サンプルは150個で、<mark>分類しやすいデータなのでどんな手法でも割と簡単に分類できます。</mark>

先ほどのチートシートに沿って見ていくと・・・

50サンプル以上あって目的変数が質的変数でラベル付きなので、まずは左上のClassificationに分類されますね。

そしてサンプルは100,000未満なのでLinear SVCが良いと出てきます。

Linear SVCとは線形分離をする[サポートベクターマシン](/svm)です。

![](/wp-content/uploads/2019/06/svm.jpg)

ワークしなかったら次に進めとチートシートには書いてありますが、次に進んでみましょう。

テキストデータではないので、[k近傍法](/%ef%bd%8b%e8%bf%91%e5%82%8d%e6%b3%95)になります。

k近傍法は周りの学習データのクラスからその未知データの分類を決定する手法で非常にシンプルで使いやすい手法。

kとは手法に与えるパラメーターで、近くに存在する学習データのクラス数を示しています。

![K近傍法](/wp-content/uploads/2018/02/66c19942ab4ba346fdb64ccc04cde373-3.png)

ここからワークしなかったら進めと書いている最終地点までいくと・・・ensemble classificationが登場しました！

このensemble classification（アンサンブル　クラシフィケーション）に内包されるのが「[ランダムフォレスト](/%e3%83%a9%e3%83%b3%e3%83%80%e3%83%a0%e3%83%95%e3%82%a9%e3%83%ac%e3%82%b9%e3%83%88)」！

決定木をバギング（アンサンブル学習の１つ）した手法なんです。

今回はirisデータにはオーバースペックですが、このランダムフォレストを実際に使っていきましょう！

```python title="randamforest.py"
# ライブラリの読み込み
from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
from sklearn.model_selection import train_test_split

# irisデータの読み込み
iris = datasets.load_iris()

# 特徴量とターゲットの取得
data       = iris['data']
target     = iris['target']

#学習データをテストデータを分割
train_data,test_data,train_target,test_target = train_test_split(data,target,test_size=0.5)

#モデル学習
model = RandomForestClassifier(n_estimators=100)
model.fit(train_data, train_target)

# 正解率を表示
model.score(test_data, test_target)
```

これだけの記述でirisデータの分類モデルを構築して未知データの分類まで出来ちゃいました。

分類精度は**0.9734**！

分類しやすいデータなのでどの手法を使ってもそれなりの精度が出るのですが、まずまずの精度ですね！

どのような処理をおこなっているのか順を追って見ていきましょう！

```python
from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
from sklearn.model_selection import train_test_split
```

まずは、こちらでランダムフォレストの関数を呼び出しています。

datasetsには様々なデータセットが格納されていてirisデータはここから呼び出します。

また最後のtrain_test_splitは学習データと未知データにデータセットを分類するためのものです。

モデル構築に使ったデータをモデル評価に使ってしまうと、現状のデータに過度にフィッティングしてしまう”[過学習](/over-fitting)”という問題が起きます。

予測精度の高いモデルを構築するためには、学習データと未知データを必ず分けるようにしましょう！

```python
# irisデータの読み込み
iris = datasets.load_iris()

# 特徴量とターゲットの取得
data       = iris['data']
target     = iris['target']

#学習データをテストデータを分割
train_data,test_data,train_target,test_target = train_test_split(data,target,test_size=0.5)
```

irisデータを読み込み、目的変数と説明変数に分け、学習データと未知データに分類しています。

```python
#モデル学習
model = RandomForestClassifier(n_estimators=100)
model.fit(train_data, train_target)
```

ここで実際にモデル構築をしています。

n_estimatorsはバギングに用いる決定木の数です。

デフォルトでは10になっています。

```python
# 正解率を表示
model.score(test_data, test_target)
```

最後に<mark>未知データに対してどれだけの予測精度をたたき出すことができたか算出しています。</mark>

Scikit-learnを使えば、こんなに簡単に複雑な機械学習手法を使うことが出来ちゃうんです！

ぜひScikit-learnを使ってランダムフォレスト以外の手法も使ってみてください！

:::talk{who="umatan"}
たくさんの手法を実装して精度の比較をしてみよう！
:::

## Scikit-learn　まとめ

本記事では、**<mark>Scikit-learnの使い方や実際の実装</mark>**&#x306B;ついて簡単に見てきました。

機械学習の手法はたくさんあるので、どれを使えばよいか迷うことも多いでしょう。

そんな時はぜひこのScikit-learnチートシートを見てみてください！

![Scikit-learn](/wp-content/uploads/2020/07/scikit-learn2-min.jpg)

:::talk{who="robotan"}
たくさんある手法のうちどれを使えばいいのか分かりやすい！
:::

:::talk{who="umatan"}
Scikit-learnをマスターして適切な場面で適切な機械学習手法を使えるようになろう！
:::

Scikit-learnで登場する各種機械学習について学び実装していきたい方は当メディアが運営する以下の[スタビジアカデミー](https://toukei-lab.com/achademy/)がオススメです！

[![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)](https://toukei-lab.com/achademy/)

公式サイト：<https://toukei-lab.com/achademy/>

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【データサイエンティスト範囲】</th>
<td>Python、機械学習、統計学、ディープラーニングからDXの考え方・機械学習のビジネス導入・SQLまで必要な要素を全て網羅</td>
</tr>
</tbody>
</table>

他のスクールと比較して圧倒的なコスパでカリキュラムを提供していますよ！

また、機械学習手法やデータサイエンティストへの勉強法、Pythonの勉強法について以下の記事で詳しくまとめていますのでこちらもあわせてチェックしてみてください！

<https://toukei-lab.com/machine-learning-study>

<https://toukei-lab.com/python-learn>

<https://toukei-lab.com/data-scientist>