scikit-learn とは?

scikit-learn

scikit-learn

NRIのOpenStandiaが提供するscikit-learn最新情報

OSSの保守サポートサービスの内容はこちら OSSの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

scikit-learnバージョンアップ情報

すべてを見る

更新日:2022-06-21

scikit-learnの概要

scikit-learnの概要1

scikit-learn(サイキット・ラーン)は、Pythonで実装されたオープンソースの機械学習ライブラリーです。分類、回帰、クラスタリングなどの非常に多くのアルゴリズムを実装しており、機械学習モデルを作成する上で必要不可欠なライブラリーと言えます。scikit-learnのコミュニティは非常に活発であり、常に開発と改良が続けられています。使い方もシンプルで初学者でも簡単に扱うことができます。scikit-learnは、Pythonの数値計算ライブラリーであるNumPyやSciPyとやり取りするよう設計されており、データを表形式で扱うことができるPandasや可視化を行うためのMatplotlibなどのライブラリーとともに使用します。

scikit-learnには実験的な用途に使用できるいくつかのサンプルのデータも含まれています。例えば、0から9の10種類の手書きの数字の画素データや、糖尿病患者442人の検査数値とその1年後の疾患進行状況をまとめたデータセットなどが含まれています。これを使って、回帰問題や分類問題のための機械学習モデルを構築することができます。

このサンプルの中にあるアヤメの特徴を表すデータを使用して、アヤメの花を分類する例を紹介します。以下の4つのアヤメの特徴をもとに、K-meansというアルゴリズムを用いてアヤメの品種を分類します。

  • がくの長さ
  • がくの幅
  • 花弁の長さ
  • 花弁の幅

scikit-learnの概要2
図: 3種類のアヤメ(左からversicolor、virginica、setosa)

3種類(versicolor、virginica、setosa)に分類するモデルを作成し、実際の結果と比較したい場合、以下のようなコードで実現できます。


import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

from sklearn.cluster import KMeans
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data
y = iris.target

estimator = KMeans(n_clusters=3)
estimator.fit(X)

fig = plt.figure(figsize=(18, 8))
ax = fig.add_subplot(121, projection='3d', elev=45, azim=135)
ax.scatter(X[:, 3], X[:, 0], X[:, 2],
           c=estimator.labels_.astype(np.float), edgecolor='k')

ax.set_xlabel('Petal width')
ax.set_ylabel('Sepal length')
ax.set_zlabel('Petal length')
ax.set_title('KMeans 3 clusters')
ax.dist = 12

ax = fig.add_subplot(122, projection='3d', elev=45, azim=135)

for name, label in [('Setosa', 0),
                    ('Versicolour', 1),
                    ('Virginica', 2)]:
    ax.text3D(X[y == label, 3].mean(),
              X[y == label, 0].mean(),
              X[y == label, 2].mean() + 2, name,
              horizontalalignment='center',
              bbox=dict(alpha=.2, edgecolor='w', facecolor='w'))

y = np.choose(y, [2, 1, 0]).astype(np.float)
ax.scatter(X[:, 3], X[:, 0], X[:, 2], c=y, edgecolor='k')

ax.set_xlabel('Petal width')
ax.set_ylabel('Sepal length')
ax.set_zlabel('Petal length')
ax.set_title('Ground Truth')
ax.dist = 12

fig.show()

出力は次のようなグラフになります。

scikit-learnの概要3
図: アヤメの品種を分類したグラフ

K-Meansにより、ほぼ正しく品種の分離ができていることが分かります。

TOPに戻る

scikit-learnの機能および特徴

主な特徴は以下のとおりです。

機能 詳細
教師あり学習 以下のアルゴリズムをサポート
  • 線形モデル
  • 線形判別分析、二次判別分析
  • カーネルリッジ回帰
  • サポートベクターマシン
  • 確率的勾配降下
  • 近傍法
  • ガウス過程
  • クロス分解
  • ナイーブベイズ
  • 決定木
  • アンサンブル法
  • マルチクラスおよびマルチ出力アルゴリズム
  • 特徴量選択
  • 半教師あり学習
  • 等張回帰
  • 確率校正
  • ニューラルネットワークモデル(教師あり)
教師なし学習 以下のアルゴリズムをサポート
  • 混合ガウスモデル
  • マニホールド学習
  • クラスタリング
  • バイクラスタリング
  • 主成分分析
  • 共分散推定
  • 異常検知
  • 密度推定
  • ニューラルネットワークモデル(教師なし)
モデルの選択と評価 以下の機能をサポート
  • クロスバリデーション
  • ハイパーパラメーターの調整
  • メトリクスとスコアリング
  • 妥当性確認曲線
検査 以下の機能をサポート
  • PDP/ICEプロット
  • 特徴量の重要性の順列
可視化 様々なプロット・ユーティリティーをサポート
データセット変換 以下の機能をサポート
  • パイプラインとコンポジット推定器
  • 特徴量抽出
  • データの前処理
  • 欠損値の補完
  • 教師なし次元削減
  • ランダム投影
  • カーネル近似
  • ペアワイズ・メトリクス、類似性とカーネル
  • 予測対象(y)の変換
データセットロードのためのユーティリティー 以下の機能をサポート
  • クロスバリデーション
  • ハイパーパラメーターの調整
計算性能 計算量をスケールさせるための並列化、リソース管理、設定が可能
モデルの永続化 相互運用可能なフォーマットでモデルを永続化可能

主な特徴は以下のとおりです。

  • 高機能
  • 前述したとおり、scikit-learnは非常に高機能です。機械学習をする上で必要な機能が揃っています。ただし、GPUのサポートとディープラーニングや強化学習はscikit-learnだけでは実行できません。その場合は、Keras/TensorFlowやPytorchなどを利用します。

  • 高品質
  • 実験的なコードをリリースすることはめったになく、機能を追加する場合は厳格なレビューが行われるため非常に高品質で、バグが少ないといえます。

  • 簡単かつ柔軟
  • 一貫性のあるシンプルなAPIを提供しており、学習が容易なだけでなく、モデルや正規化のアルゴリズムなどを柔軟に変更できます。インストールもコマンド1つで実行できます。

  • 利用実績
  • オンラインのドキュメントがとても充実しており、世界中の多くの人に利用されています。

TOPに戻る

scikit-learnのライセンス

scikit-learnのライセンスは、BSDライセンスです。無保証であることの明記と著作権およびライセンス条文の表示を条件に、オブジェクトコードの自由な改変・頒布が認められています。

scikit-learnのライセンスについてご不明な点がありましたら、お気軽にお問い合わせください。

TOPに戻る

scikit-learnと同類のソフトウェア

OSSの機械学習のライブラリーは他にも多数ありますが、scikit-learnほどの高機能なライブラリーは他にはありません。この分野ではデファクトスタンダードなOSSと言えます。

TOPに戻る

関連OSS

TOPに戻る

参考情報

scikit-learnのサポート

NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO