scikit-learn 完全なソリューション: Python の最も強力な機械学習ライブラリをマスターします

このブログではPythonの機械学習ライブラリScikit-learnの使い方や主な機能を詳しく紹介します。このコンテンツでは、Scikit-learn のインストールと構成方法、Scikit-learn の主な機能、データ前処理の実行方法、教師あり学習アルゴリズムと教師なし学習アルゴリズムの使用方法、モデルの評価とパラメーター調整の実行方法について説明します。この記事は、読者が Scikit-learn を深く理解し、それを実際の機械学習タスクに効果的に適用できるようにすることを目的としています。

ファイル

序章

人工知能の潮流に押されて、中核テクノロジーとしての機械学習の重要性は、いくら強調してもしすぎる必要はありません。しかし、機械学習の実験や開発をいかに迅速かつ効率的に行うかは、多くの研究者やエンジニアが直面している課題です。Python は、豊富な科学計算ライブラリを備えた簡潔で読みやすいプログラミング言語として、機械学習の分野で広く使用されています。Python の数ある機械学習ライブラリの中でも、Scikit-learn はその包括的な機能、優れたパフォーマンス、使いやすさにより多くのユーザーに支持されています。この記事では、読者が機械学習の実験にこのツールをより効果的に活用できるように、Scikit-learn の使用法と内部メカニズムについて詳しく説明します。

機械学習とScikit-learnの重要性

ファイル
機械学習は、データを自動的に解析してモデルを取得し、そのモデルを用いて未知のデータを予測する技術として、検索エンジン、自動運転、顔認識、音声認識など、生活のあらゆる場面で活用が広がっています。等 多くの機械学習ツールの中でも、Scikit-learn は、その豊富なアルゴリズム ライブラリ、洗練された API 設計、優れたパフォーマンス、および活発なコミュニティ サポートにより、科学研究と産業の両方で広く使用されています。

Scikit-learn の基本的な概要

ファイル
Scikit-learn は、Python をベースとしたオープンソースの機械学習ライブラリであり、NumPy、SciPy、matplotlib をベースにしており、分類、回帰、クラスタリング、次元削減などのさまざまな機械学習モデルをサポートしています。Scikit-learn には、多数の機械学習アルゴリズムを提供するだけでなく、モデルの評価と選択のためのツール セット、およびデータ前処理とデータ分析のための機能も含まれています。使いやすく強力であることが、Scikit-learn の人気の重要な理由です。次の記事では、機械学習開発に Scikit-learn を使用する方法について詳しく説明します。

このパートでは、機械学習と Scikit-learn の基本的な概念、および現代のテクノロジー分野におけるそれらの応用と重要性を読者に提供します。続いて、Scikit-learn ライブラリの主な特徴と機能、およびそれをデータ処理および機械学習モデルの構築、最適化、評価に使用する方法を詳しく説明します。

インストールと設定

Scikit-learn の使用を開始する前に、まずインストールして構成する必要があります。このセクションでは、Python 環境に Scikit-learn をインストールする方法と、必要な依存関係をインストールする方法について詳しく説明します。

Scikit-learnのインストール方法

Scikit-learn は、Python のパッケージ マネージャー pip を通じて簡単にインストールできます。ターミナルまたはコマンド ライン インターフェイスを開き、次のコマンドを入力します。

pip install -U scikit-learn

このコマンドは、Scikit-learn をインストールまたは最新バージョンにアップグレードします。Anaconda などの特定の Python 環境を使用している場合は、conda 経由でインストールすることもできます。

conda install scikit-learn

必要な依存関係をインストールする

Scikit-learn の動作は、NumPy や SciPy などの一部の Python ライブラリに依存します。これらのライブラリは通常、Scikit-learn のインストール時に自動的にインストールされます。自動的にインストールされない場合、または最新バージョンに更新する必要がある場合は、次のコマンドを使用できます。

pip install -U numpy scipy

さらに、データ処理と視覚化のために、通常は pandas と matplotlib をインストールする必要があります。同様に、次のコマンドでインストールできます。

pip install -U pandas matplotlib

上記のインストール プロセスは、ほとんどの状況に適しています。インストールプロセス中に問題が発生した場合は、Scikit-learn の公式ドキュメントを参照するか、関連するフォーラムやコミュニティで助けを求めることができます。インストールが完了したら、Scikit-learn を使用して機械学習の学習と開発を開始できます。

Scikit-learn の主な機能

Scikit-learn は強力な Python 機械学習ライブラリであり、その設計哲学は使いやすさと統一性に重点を置いています。次に、Scikit-learnの主な機能を一つずつ紹介していきます。
ファイル

強力な前処理機能

機械学習のプロセスでは、データの前処理は不可欠なステップです。Scikit-learn は、データ クリーニング、エンコード、標準化、特徴抽出、特徴選択などの豊富なデータ前処理機能を提供します。

from sklearn import preprocessing

# 以数据标准化为例,以下是使用Scikit-learn进行标准化的代码
X = [[ 1., -1.,  2.],
     [ 2.,  0.,  0.],
     [ 0.,  1., -1.]]
scaler = preprocessing.StandardScaler().fit(X)
print(scaler.transform(X))

多数の機械学習アルゴリズム

ファイル
Scikit-learn は、回帰、分類、クラスタリング、次元削減など、一般的に使用されるさまざまな教師あり学習および教師なし学習アルゴリズムを提供します。これらのアルゴリズムの API 設計は統一され、一貫性があるため、異なるアルゴリズム間の切り替えが非常に簡単になります。

from sklearn import svm

# 以SVM为例,以下是使用Scikit-learn进行模型训练和预测的代码
X = [[0, 0], [1, 1]]
y = [0, 1]
clf = svm.SVC()
clf.fit(X, y)
print(clf.predict([[2., 2.]]))

効果評価と機種選定

Scikit-learn は、相互検証、グリッド検索、さまざまな評価指標を含む、モデルの評価および選択ツールの包括的なセットも提供します。

from sklearn import metrics
from sklearn.model_selection import cross_val_score

# 以交叉验证为例,以下是使用Scikit-learn进行交叉验证的代码
scores = cross_val_score(clf, X, y, cv=5)
print(scores)

可視化ツール

ファイル
Scikit-learn 自体はプロット関数を提供しませんが、matplotlib などの Python プロット ライブラリと組み合わせて使用​​すると、データやモデルの効果を視覚化できます。

import matplotlib.pyplot as plt
from sklearn import datasets

# 以下是一个简单的Scikit-learn数据可视化示例
iris = datasets.load_iris()
X = iris.data[:, :2]  # 我们只取前两个特征
y = iris.target
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

以上がScikit-learnの主な特徴です。次のセクションでは、機械学習のさまざまな段階でこれらの機能を使用する方法について詳しく説明します。

Scikit-learn のデータ前処理

機械学習タスクにおいて、データの前処理は非常に重要な仕事です。前処理には、生データを機械学習モデルでの使用に適した形式に変換するための、データ クリーニング、データ変換、特徴抽出などの手順が含まれます。Scikit-learn は、これらのニーズを満たす強力なデータ前処理ツールのセットを提供します。

データクリーニング

データ クリーニングには主に、欠損値と外れ値の処理が含まれます。Scikit-learn は、欠損値を処理するための Imputer クラスを提供します。Imputer を使用した簡単な例を次に示します。

from sklearn.impute import SimpleImputer

# 假设我们的数据集中有缺失值NaN
import numpy as np
X = [[1, 2], [np.nan, 3], [7, 6]]
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
print(imp.fit_transform(X))

データ変換

データ変換には主に標準化、正規化、二値化などの手順が含まれます。Scikit-learn は、これらのタスクの前処理モジュールを提供します。

from sklearn import preprocessing

# 数据标准化示例
X = [[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]]
scaler = preprocessing.StandardScaler().fit(X)
print(scaler.transform(X))

# 数据归一化示例
X_normalized = preprocessing.normalize(X, norm='l2')
print(X_normalized)

特徴抽出と特徴選択

Scikit-learn は、特徴抽出と特徴選択のための一連のメソッドを提供します。特徴抽出は主に生データを特徴ベクトルに変換するために使用され、特徴選択は生の特徴から最も価値のある特徴を選択するために使用されます。

from sklearn.feature_extraction.text import CountVectorizer

# 特征提取示例:文本数据转换为词频向量
corpus = ['This is the first document.',
          'This is the second second document.',
          'And the third one.',
          'Is this the first document?']
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())

# 特征选择示例:使用卡方检验选择最好的特征
from sklearn.feature_selection import SelectKBest, chi2
X, y = [[1, 2], [3, 4], [5, 6], [7, 8]], [0, 0, 1, 1]
X_new = SelectKBest(chi2, k=1).fit_transform(X, y)
print(X_new)

上記の前処理作業により、生データを機械学習の基礎となる機械学習モデルに適した形式に変換できます。次のパートでは、Scikit-learn の API を使用して機械学習モデルを構築およびトレーニングする方法について説明します。

Scikit-learn の教師あり学習アルゴリズム

教師あり学習は、分類や回帰など、機械学習で最も一般的なタスクの 1 つです。Scikit-learn は、一般的な線形モデル、デシジョン ツリー、サポート ベクター マシンなどを含む一連の教師あり学習アルゴリズムを提供します。以下では、Scikit-learn でこれらのアルゴリズムを使用する方法を示します。

線形モデル

線形モデルは、回帰および分類の問題を解決するために使用される一般的な教師あり学習アルゴリズムです。Scikit-learn の Linear_model モジュールは、線形回帰、ロジスティック回帰、リッジ回帰などを含む一連の線形モデルを提供します。

from sklearn.linear_model import LinearRegression

# 创建数据
X = [[1, 1], [1, 2], [2, 2], [2, 3]]
y = [1, 1, 2, 2]

# 创建线性回归模型并训练
reg = LinearRegression().fit(X, y)

# 进行预测
print(reg.predict([[3, 5]]))

デシジョンツリー

デシジョン ツリーは、シンプルかつ効果的な分類および回帰手法です。Scikit-learn のツリー モジュールは、デシジョン ツリーの実装を提供します。

from sklearn import tree

# 创建数据
X = [[0, 0], [1, 1]]
Y = [0, 1]

# 创建决策树模型并训练
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

# 进行预测
print(clf.predict([[2., 2.]]))

サポートベクターマシン

サポート ベクター マシン (SVM) は強力な分類方法ですが、回帰問題の解決にも使用できます。Scikit-learn の svm モジュールは、SVM の実装を提供します。

from sklearn import svm

# 创建数据
X = [[0, 0], [1, 1]]
y = [0, 1]

# 创建SVM模型并训练
clf = svm.SVC()
clf.fit(X, y)

# 进行预测
print(clf.predict([[2., 2.]]))

Scikit-learn には、ニューラル ネットワーク、アンサンブル手法など、他の多くの教師あり学習アルゴリズムも含まれています。これらのメソッドの使用方法は上記と同様で、すべて Scikit-learn の統一 API 設計に従っています。実際の使用においては、データの特性や問題のニーズに応じて、適切な学習アルゴリズムを選択できます。

Scikit-learn の教師なし学習アルゴリズム

教師なし学習とは、ラベルのない学習データセットを指し、主にクラスタリングや次元削減などのタスクが含まれます。Scikit-learn は、教師なし学習アルゴリズムの豊富なセットを提供します。次に、その一部を紹介します。

クラスタリング

クラスタリングは教師なし学習における一般的なタスクであり、その目的は類似したサンプルをグループ化することです。Scikit-learn は、K 平均法、スペクトル クラスタリング、DBSCAN などのさまざまなクラスタリング アルゴリズムを提供します。

from sklearn.cluster import KMeans

# 创建数据
X = [[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]

# 创建KMeans模型并训练
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)

# 查看聚类结果
print(kmeans.labels_)

次元削減

次元削減も教師なし学習における一般的なタスクであり、その目標は、データの理解と視覚化を容易にするために高次元データを低次元空間にマッピングすることです。Scikit-learn は、PCA、t-SNE などのさまざまな次元削減アルゴリズムを提供します。

from sklearn.decomposition import PCA

# 创建数据
X = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 创建PCA模型并训练
pca = PCA(n_components=2)
pca.fit(X)

# 查看降维结果
print(pca.transform(X))

Scikit-learn は、相関ルール学習、異常検出など、他の多くの教師なし学習アルゴリズムも提供します。これらのアルゴリズムは、特定の問題に対処する際に大きな役割を果たすことができるため、Scikit-learn はさまざまな機械学習タスクに非常に柔軟に対処できます。

評価モデルとパラメータのチューニング

機械学習モデルを作成してトレーニングした後、そのパフォーマンスを評価し、最良の学習効果を達成するためにモデルのパラメーターを調整する必要があります。Scikit-learn は、モデルの評価とパラメーター調整のための一連のツールを提供します。

モデルの評価

Scikit-learn は、相互検証、精度、再現率、F1 スコアの計算など、モデルを評価するためのさまざまな方法を提供します。

from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets

# 加载数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target

# 创建模型
clf = RandomForestClassifier(random_state=7)

# 交叉验证
scores = cross_val_score(clf, X, y, cv=5)
print("Cross-validation scores: ", scores)

# 训练模型
clf.fit(X, y)

# 预测结果
y_pred = clf.predict(X)

# 计算各项评价指标
print(classification_report(y, y_pred))

パラメータチューニング

Scikit-learn は、パラメータ調整用のGridSearchCVや などのツールを提供しますRandomizedSearchCV

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

# 参数空间
param_grid = {
    
    'C': [0.1, 1, 10, 100], 'gamma': [1, 0.1, 0.01, 0.001], 'kernel': ['rbf']} 

# 创建SVC模型
svc = SVC()

# 创建GridSearchCV对象并训练
grid = GridSearchCV(svc, param_grid, refit=True, verbose=2)
grid.fit(X, y)

# 输出最优参数
print(grid.best_params_)

上記の評価とチューニングを通じて、最適なモデルとパラメータを取得できます。実際の機械学習タスクでは、モデルの評価とパラメーターの調整は非常に重要な手順であり、モデルのパフォーマンスと精度を大幅に向上させることができます。

結論は

Scikit-learn は強力で使いやすい Python ライブラリであり、データの前処理からモデルのトレーニング、モデルの評価、パラメーターの調整に至るプロセス全体のタスクを解決するために使用できる機械学習ツールの完全なセットを提供します。Scikit-learn が広く応用されているのは、その強力な機能のためだけではなく、その設計コンセプト、つまり、コードを大幅に変更することなく、さまざまなモデルやアルゴリズムをすばやく切り替えることができる統合 API によるものでもあります。この柔軟性と使いやすさにより、Scikit-learn は Python 機械学習ライブラリの最初の選択肢になります。

ただし、Scikit-learn は一連のツールを提供しますが、各ツールには適用可能なシナリオと条件があることにも注意する必要があります。Scikit-learn を使用するプロセスでは、さまざまなタスクやデータに適切なツールを選択して最良の結果を得ることができるように、各ツールの原理と特性を深く理解する必要があります。

このブログを通じて、Scikit-learn についての理解を深め、Scikit-learn の使用方法をより明確に理解していただければ幸いです。機械学習に興味がある場合、Scikit-learn は必須のツールとなるでしょう。

おすすめ

転載: blog.csdn.net/magicyangjay111/article/details/131959380