Scikit-learnは、しばしばsklearnと呼ばれ、機械学習のための強力なオープンソースのPythonライブラリです。NumPy、SciPy、Matplotlibをベースに構築されており、データマイニング、データ分析、モデリングのためのシンプルで効率的なツールを提供します。初心者でもエキスパートでも、sklearnの直感的なAPIは予測モデルの構築に最適です。2007年のリリース以来、sklearnは活気あるコミュニティに支えられ、Pythonデータサイエンスエコシステムの要に成長しました。教師あり学習と教師なし学習の両方をサポートしており、分類、回帰、クラスタリング、次元削減などのタスクに多用途に使用できます。
sklearnを選ぶ理由その一貫したインターフェース、豊富なドキュメント、線形回帰、サポートベクターマシン、ランダムフォレストのような幅広いアルゴリズムは、迅速なプロトタイピングとデプロイを可能にします。このガイドでは、Python による機械学習をマスターするために、sklearn のコア機能、実用的なアプリケーション、高度なテクニックを紹介します。
Scikit-learnを始める
まず、pipを使ってsklearnをインストールする:
バッシュ pip install scikit-learn
あるいは、condaを使う:
バッシュ condaがscikit-learnをインストールする
NumPy、SciPy、Pandasがインストールされていることを確認してください。仮想環境(例えば ヴヴ
または コンダ
)がプロジェクトを整理してくれます。sklearnをインポートしてインストールを確認してください:
パイソン インポート sklearn print(sklearn.__version__)
SklearnはJupyter Notebooksでシームレスに動作するため、実験が容易です。IrisやBoston Housingのようなサンプルデータセットをsklearnから直接ダウンロードしてください:
パイソン from sklearn.datasets import load_iris iris = load_iris()
Scikit-learnのコアコンセプト
SklearnのAPIは、3つの重要なコンセプトを中心に展開されている: 推定数, 予測変数、 そして 変圧器.推定器はデータから学習するあらゆるオブジェクトである(例えば分類器)。予測器は予測を提供する(例. predict()
メソッド)、トランスフォーマーはデータの前処理(例えば、特徴のスケーリング)を行う。ワークフローは、適合-変換-予測というパターンに従っている:
パイソン from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X)
データ前処理 が重要です。Sklearnは次のようなツールを提供している。 スタンダードスケーラー
標準化のために、 ワンホットエンコーダー
カテゴリー変数については シンプル・コンピューター
欠損値には使用方法 パイプライン
前処理とモデリングのステップを連鎖させる:
パイソン from sklearn.pipeline import Pipeline pipeline = Pipeline([('scaler', StandardScaler()), ('clf', LogisticRegression())])
これにより、トレーニング中とテスト中の一貫した変換が保証され、エラーが減少する。
sklearnによる教師あり学習
教師あり学習はラベル付きデータを含む。Sklearnは分類と回帰の2つのタイプを得意とする。
- 分類:カテゴリーを予測する(例:スパムかスパムでないか)。ロジスティック回帰を試す:
パイソン
from sklearn.linear_model import LogisticRegression clf = LogisticRegression() clf.fit(X_train, y_train)
- y_pred = clf.predict(X_test)
- その他のアルゴリズムには、サポート・ベクトル・マシン(
あいてせんたくせつぞく
)と決定木(決定木分類器
).精度やF1スコアのようなメトリクスでモデルを評価する: パイソン
from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, y_pred))
- 回帰:連続値(住宅価格など)を予測する。線形回帰は定番:
パイソン
from sklearn.linear_model import LinearRegression reg = LinearRegression()
reg.fit(X_train, y_train)
- RidgeやLassoのような高度なオプションが正則化を処理します。平均二乗誤差(MSE)でパフォーマンスを測定します:
パイソン
from sklearn.metrics import mean_squared_error
print(mean_squared_error(y_test, y_pred))
sklearnによる教師なし学習
教師なし学習はラベルのないデータからパターンを見つけ出す。Sklearnはクラスタリングと次元削減をサポートする。
- クラスタリング:類似したデータ点をグループ化する。K-Meansが有名:
パイソン
from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3)
clusters = kmeans.fit_predict(X)
- DBSCANは、複雑なデータセットに対して、非球状のクラスタをよりうまく処理する。
- 次元削減:情報を保持したまま特徴を減らす。主成分分析(PCA)が広く使われている:
パイソン
from sklearn.decomposition import PCA pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)
- 探索的分析のためにt-SNEを用いて高次元データを可視化する。
モデルの選択と評価
ロバストなモデルを保証するために、sklearnは検証とチューニングのためのツールを提供している。 クロスバリデーション は一般化を評価する:
パイソン from sklearn.model_selection import cross_val_score scores = cross_val_score(clf, X, y, cv=5) print(scores.mean())
ハイパーパラメーターの調整 モデルを最適化します。GridSearchCVを使用する:
パイソン from sklearn.model_selection import GridSearchCV param_grid = {'C':[0.1, 1, 10]} grid = GridSearchCV(LogisticRegression(), param_grid, cv=5) grid.fit(X_train, y_train) print(grid.best_params_)
データを訓練セットとテストセットに分けることで、オーバーフィッティングを防ぐことができる:
パイソン from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
高度な機能とヒント
ランダムフォレストや勾配ブースティングのようなSklearnのアンサンブル手法は、より良いパフォーマンスのためにモデルを組み合わせる:
パイソン from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(n_estimators=100) rf.fit(X_train, y_train)
SMOTEのような技術で不均衡なデータセットを扱う(via 不均衡学習
) またはクラスの重み。再利用のためにモデルを保存します:
パイソン joblib をインポート joblib.dump(clf, 'model.pkl') clf = joblib.load('model.pkl')
による特徴選択 セレクトベスト
または再帰的特徴除去 (RFE
)は効率を向上させる。
実例住宅価格の予測
Boston Housingデータセット(あるいは、Bostonは非推奨なので類似のデータセット)を使って回帰モデルを構築してみよう。データをロードします:
パイソン
pdとしてpandasをインポートする
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
X = pd.DataFrame(housing.data, columns=housing.feature_names)
y = 住宅.ターゲット
前処理とトレーニング
パイソン
from sklearn.pipeline import パイプライン
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
pipeline = Pipeline([('scaler', StandardScaler()), ('reg', LinearRegression())])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
print(mean_squared_error(y_test, y_pred))
係数を解釈して特徴の重要性を理解する。Matplotlib を使って予測値を可視化し、洞察を得る。
結論とリソース
Scikit-learnは、統一されたAPIと堅牢なツールで機械学習を簡素化します。前処理から高度なモデリングまで、データ科学者が実世界の問題に効率的に取り組めるようにします。sklearnの 公式文書やKaggleのコンペティション、あるいは『Hands-On Machine Learning with Scikit-learn』、『Keras』、『TensorFlow』などの書籍がある。
カーマテック は、堅牢で拡張性に優れ、高いパフォーマンスを提供します。 Pythonソリューション を加速させる。 デジタル変革.ウェブアプリからAI統合まで、私たちのエキスパートがお手伝いします。 Python開発者 ビジネスの成長を促進する、インテリジェントで将来性のあるソリューションを構築します。