Scikit-learn(シキット学習)
SKTet(正式名称:scikit-learn)は、numpy、scipy、matplotlibなどのデータサイエンスパッケージを基に構築されたPythonの機械学習ライブラリで、サンプルデータ、データ前処理、モデル検証、特徴選択、分類、回帰、クラスタリング、次元削減など、機械学習のほぼすべての側面をカバーしています。 pytorchやTensorFlowなどの様々なフレームワークで利用可能なディープラーニングのストックとは異なり、sklearnはPythonにおける従来の機械学習において推奨されるライブラリであり、他に競合はありません。
公式ウェブサイト:ハイパーリンクのログインが見えます。 源:ハイパーリンクのログインが見えます。
Scikit-learn の拡張
クラシックな機械学習フレームワークとして、scikit-learnは誕生以来10年以上開発されてきましたが、その計算速度はユーザーから広く批判されています。 Scikit-learnの拡張機能は、あなたをサポートするために設計された無料のAIソフトウェアアクセラレータです既存のScikit-learnコードは10倍から100倍の高速化を提供します。 ソフトウェアアクセラレーションは、ベクトル命令、AIハードウェアのメモリ最適化、スレッド処理、最適化によって実現されます。
Scikit-learn拡張機能を使えば、以下のことができます:
- 訓練と推論は同じ数学的精度で100倍速くなっています
- GPUやマルチGPU構成を含む異なるCPUハードウェア構成でパフォーマンス向上の恩恵を受けられます
- コードを変更しずに既存のScikit-learnアプリケーションに拡張機能を統合できます
- オープンソースのscikit-learn APIを引き続きご利用ください
- 数行のコードを使ったり、コマンドラインで拡張機能を有効・無効にしたりしてください
源:ハイパーリンクのログインが見えます。 ドキュメンテーション:ハイパーリンクのログインが見えます。
試験
まず、condaを使って環境を準備し、次のコマンドで必要なパッケージをインストールします。
新しいPythonテストコードは以下の通りです:
加速コードは以下の通りです:
ソースコード解釈:
1.X, y = make_regression(n_samples=2000000, n_features=100, ノイズ=1, random_state=42) make_regressionはscikit-learnの関数で、線形回帰問題のデータセットを生成するものです。 n_samples=2000000:生成されたデータセット2,000,000のサンプル数を指定します。 n_features=100:各サンプルが100の特徴(すなわち入力変数)を持つことを指定します。 ノイズ=1:ターゲット値yにノイズを加えた標準偏差は1です。 これはターゲット値にランダムな摂動が起こることを意味します。 random_state=42:ランダムシードを42に設定し、コードを実行するたびに生成されるデータが同じであることを保証します(再現性)。 結果:Xは形状(2000000, 100)のNumPy配列で、2,000,000サンプルとそれぞれ100の特徴を表す; yは2,000,000の長さの一次元配列で、目標値を表します。
2. X_train, _, y_train, _ = train_test_split(X, y, test_size=0.33, random_state=42) train_test_splitはscikit-learnの関数で、データセットをトレーニングセットとテストセットに分割します。 test_size=0.33:データセットの33%がテストセットに割り当てられ、残りの67%がトレーニングセットに割り当てられていることを示します。 random_state=42:ランダムシードを42に設定し、データ分割の結果がコードを実行するたびに同じになるようにします。 : 返却値を無視するためにアンダースコアを使います。 ここではトレーニングセット部分(X_trainとy_train)だけを気にし、テストセット部分は無視します。 結果: X_train:トレーニングセットの特徴行列で、(1340000, 100)(データの約67%)の形をしています。 y_train:長さ1,340,000のトレーニングセットの目標値。
3. model = 線形回帰() LinearRegressionは、線形回帰モデルを実装するscikit-learnのクラスです。 このコードラインは線形回帰モデルのインスタンスを作成し、変数モデルに値を割り当てます。 デフォルトでは、線形回帰はデータを正則化しません(すなわちL1やL2の正則化はありません)。
4. model.fit(X_train, y_train) フィットは、scikit-learnモデルのトレーニングに用いられる手法です。 ここでは、トレーニングセットデータX_trainと目標値y_trainを用いて線形回帰モデルにフィッティングするためにフィッティング法が呼ばれます。 モデルは最適な重み(係数)を計算し、予測値と真値(通常は最小二乗)の誤差を最小化するために切片を行います。 訓練が完了すると、モデルのパラメータはmodel.coef_(特徴の重み)とmodel.intercept_(切片)に保存されます。
実行時間は以下の通りです:
加速なしと加速後の両方で、この効果は非常に明白であることがわかります。加速なしで約16秒、加速後はわずか0.1秒かかります!!!! |