Scikit-learn(sklearn)是一个用于机器学习和数据挖掘的开源 Python 库。它建立在 NumPy、SciPy 和 Matplotlib 的基础上,提供了简单且高效的工具,用于数据挖掘和数据分析的各个阶段,包括预处理、特征选择、模型训练和评估等。
以下是 Scikit-learn 的一些主要特点和使用示例:
特点:
-
简单而一致的 API: Scikit-learn 提供了简单而一致的 API,方便用户快速上手,容易进行模型的交换和替换。
-
广泛的机器学习算法: Scikit-learn 包含了大量的机器学习算法,包括监督学习、无监督学习、降维和聚类等。
-
特征工程和数据预处理: 提供了丰富的特征工程和数据预处理工具,包括标准化、归一化、缺失值处理等。
-
模型评估和选择: 提供了多种模型评估指标和交叉验证方法,帮助用户选择最优的模型。
-
内置数据集: 包含了一些常用的数据集,方便用户测试和实验。
使用示例:
1. 监督学习 - 支持向量机(SVM):
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score
# 加载鸢尾花数据集
iris = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
# 创建支持向量机分类器
clf = svm.SVC(kernel='linear')
# 训练模型
clf.fit(X_train, y_train)
# 进行预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
2. 无监督学习 - K均值聚类:
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
# 创建K均值聚类模型
kmeans = KMeans(n_clusters=3, random_state=42)
# 训练模型
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
# 评估聚类性能
silhouette_avg = silhouette_score(X, labels)
print(f"Silhouette Score: {silhouette_avg}")
3. 特征工程 - 主成分分析(PCA):
from sklearn import datasets
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
# 加载手写数字数据集
digits = datasets.load_digits()
X = digits.data
y = digits.target
# 创建PCA模型,降维到2维
pca = PCA(n_components=2)
# 对数据进行降维
X_pca = pca.fit_transform(X)
# 绘制降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis', edgecolor='k', s=50)
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA of Handwritten Digits')
plt.show()
以上示例仅涵盖了 Scikit-learn 的一小部分功能,Scikit-learn 还包含了更多算法和工具,如决策树、随机森林、梯度提升、线性回归、逻辑回归等。通过查阅 Scikit-learn 的文档和示例,可以更全面地了解 Scikit-learn 的功能和用法。