Scikit-Learn 是一个广泛使用的 Python 机器学习库,旨在为数据科学和机器学习任务提供简洁、高效的工具。本文将介绍 Scikit-Learn 的安装、基本使用以及一些常见的机器学习任务的实现方法。
安装 Scikit-Learn
安装 Scikit-Learn 非常简单,只需使用 pip 包管理器即可:
pip install scikit-learn
安装完成后,可以通过以下命令验证安装是否成功:
import sklearn
print(sklearn.__version__)
Scikit-Learn 的基本使用
下面我们将通过一个简单的线性回归示例来介绍 Scikit-Learn 的基本使用方法。
导入必要的库
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
准备数据
我们生成一些随机数据作为示例:
# 生成随机数据
X = np.random.rand(100, 1) * 10 # 特征
y = 2.5 * X + np.random.randn(100, 1) * 2 # 标签
拆分数据集
将数据集拆分为训练集和测试集:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
训练模型
使用线性回归模型进行训练:
model = LinearRegression()
model.fit(X_train, y_train)
预测与评估
使用训练好的模型进行预测,并计算均方误差:
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse}')
Scikit-Learn 的主要功能
监督学习
Scikit-Learn 提供了多种常见的监督学习算法,包括回归和分类任务。
回归
-
线性回归(Linear Regression)
-
决策树回归(Decision Tree Regression)
-
支持向量回归(Support Vector Regression)
-
岭回归(Ridge Regression)
from sklearn.linear_model import Ridge
ridge_model = Ridge()
ridge_model.fit(X_train, y_train)
分类
-
逻辑回归(Logistic Regression)
-
K 近邻(K-Nearest Neighbors, KNN)
-
支持向量机(Support Vector Machine, SVM)
-
随机森林(Random Forest)
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(X_train, y_train)
无监督学习
Scikit-Learn 还包括多种无监督学习算法,用于聚类和降维。
聚类
-
K 均值聚类(K-Means Clustering)
-
层次聚类(Hierarchical Clustering)
-
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
降维
-
主成分分析(Principal Component Analysis, PCA)
-
t-SNE(t-Distributed Stochastic Neighbor Embedding)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)
模型选择与评估
Scikit-Learn 提供了多种工具用于模型选择、交叉验证和参数调优。
交叉验证
-
K 折交叉验证(K-Fold Cross Validation)
-
留一法交叉验证(Leave-One-Out Cross Validation)
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
超参数调优
-
网格搜索(Grid Search)
-
随机搜索(Random Search)
from sklearn.model_selection import GridSearchCV
param_grid = {'alpha': [0.1, 1, 10]}
grid_search = GridSearchCV(Ridge(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
数据预处理
数据预处理是机器学习管道中的重要一环,Scikit-Learn 提供了丰富的数据预处理工具。
标准化与归一化
-
标准化(Standardization)
-
归一化(Normalization)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
缺失值填补
-
使用均值、中位数或众数填补缺失值
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)
编码分类变量
-
独热编码(One-Hot Encoding)
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
X_encoded = encoder.fit_transform(X_categorical)
管道(Pipeline)
Scikit-Learn 的管道工具允许将多个步骤链接在一起,形成一个完整的工作流。这样可以简化代码,并确保数据处理的正确性。
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
('scaler', StandardScaler()),
('regressor', LinearRegression())
])
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
结论
通过本教程的介绍,你应该对 Scikit-Learn 的安装和基本使用有了初步的了解。Scikit-Learn 是一个功能强大且易于使用的机器学习库,适合从入门到高级的各种机器学习任务。更多详细信息和高级用法,可以参考