2023 Python科学计算工具箱完全指南:NumPy、Pandas与SciPy实战教程
Scikit Learn – 科学机器学习库

Python的Scikit-learn简介
Scikit-learn主要使用Python进行开发,其中一些核心算法使用Cython编写以提供更好的性能。Scikit-learn专门用于构建机器学习模型,不建议将其用于读取、操作和总结数据,因为有其他更适合此目的的框架(如Pandas)可用。Scikit-learn是开源软件,并采用BSD许可证发布。
安装Scikit-learn
安装Scikit-learn的前提是您的设备上运行着Python 2.7或更高版本,并已安装NumPy(1.8.2及以上版本)和SciPy(0.13.3及以上版本)软件包。一旦这些依赖软件包安装完成,就可以进行Scikit-learn的安装了。若要通过pip进行安装,请在终端中运行以下命令:
pip install scikit-learn
如果您更喜欢使用conda,也可以通过conda进行安装,运行以下命令即可:
conda install scikit-learn
使用Scikit-Learn
安装完成后,您可以将scikit-learn导入到您的Python代码中,以便开始使用其功能。
import sklearn
使用Scikit-learn载入数据集
让我们从加载一个数据集开始。我们将加载一个名为Iris(鸢尾花)的经典数据集。这个数据集包含了关于鸢尾花不同测量值的150个观测结果。下面我们来看看如何使用scikit-learn加载这个数据集。
# 导入scikit-learn数据集模块
from sklearn import datasets
# 加载数据
iris = datasets.load_iris()
# 打印数据形状以确认数据已加载
print(iris.data.shape)

使用Scikit-learn进行SVM学习和预测
现在我们已经加载了数据,让我们尝试从中学习并在新数据上进行预测。为了实现这个目的,我们需要创建一个估计器(estimator),然后调用其fit(拟合)方法进行训练。
from sklearn import svm
from sklearn import datasets
# 加载数据集
iris = datasets.load_iris()
clf = svm.LinearSVC() # 创建线性支持向量机分类器
# 从数据中学习
clf.fit(iris.data, iris.target)
# 对新数据进行预测
clf.predict([[ 5.0, 3.6, 1.3, 0.25]])
# 模型的参数可以通过使用以下划线结尾的属性来访问
print(clf.coef_)

使用Scikit-Learn进行线性回归
使用scikit-learn创建各种模型相当简单。让我们以一个简单的线性回归示例开始。
# 导入线性回归模型
from sklearn import linear_model
reg = linear_model.LinearRegression()
# 使用模型拟合数据
reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
# 查看拟合后的数据系数
print(reg.coef_)

k-最近邻分类器
让我们尝试一个简单的分类算法。k-最近邻(k-NN)分类器使用基于球树的算法来表示训练样本,并根据样本的最近邻进行分类。
from sklearn import datasets
# 加载数据集
iris = datasets.load_iris()
# 创建并拟合一个最近邻分类器
from sklearn import neighbors
knn = neighbors.KNeighborsClassifier()
knn.fit(iris.data, iris.target)
# 预测并打印结果
result = knn.predict([[0.1, 0.2, 0.3, 0.4]])
print(result)

K-means聚类
K-means是最简单的聚类算法之一。该算法将数据集分成’k’个簇,并将每个观测值分配到最近的簇中。这个过程是迭代完成的,直到簇中心收敛。在下面的程序中,我们将创建一个K-means聚类模型。
from sklearn import cluster, datasets
# 加载数据
iris = datasets.load_iris()
# 创建k=3的聚类
k = 3
k_means = cluster.KMeans(k)
# 拟合数据
k_means.fit(iris.data)
# 打印结果
print(k_means.labels_[::10]) # 打印每10个样本的聚类标签
print(iris.target[::10]) # 打印每10个样本的真实类别

结论
在本教程中,我们已经看到Scikit-Learn使得使用多种机器学习算法变得简单易行。我们通过实例学习了回归、分类和聚类等基本机器学习任务。Scikit-Learn仍在持续开发中,由志愿者团队进行维护,并在数据科学社区中广受欢迎。现在,您可以尝试使用Scikit-Learn来解决自己的机器学习问题了!