焦小花同学

Scikit-learn,开启机器学习大门的钥匙!

点击

上方文字

关注我们

Scikit-learn,开启机器学习大门的钥匙!

今天我们聊聊机器学习中的神奇工具—— Scikit-learn 。这是一个非常流行且功能强大的 Python 库,用来快速实现各种机器学习模型。无论你是机器学习新手,还是经验丰富的老手,Scikit-learn 都能帮你快速上手并且完成一些很酷的事情。

1.

安装与导入

用 Scikit-learn 的第一步当然是安装咯,如果你还没有装过它,那就直接在命令行输入:

1pip install scikit-learn

安装完了别忘了导入它:

1import sklearn

接下来,我们就可以开始搞事情了。

2.

数据集:机器学习的原材料

Scikit-learn 自带了一些很经典的数据集,方便你学习和测试。比如咱们马上就要用到的 Iris 数据集。Iris 是一个有四个特征的经典花卉分类数据集。你可以这样加载它:

1from sklearn.datasets import load_iris

3iris = load_iris()

4print(iris.data[:5]) # 打印前五行数据

温馨提示 :iris.data 是数据的特征部分,iris.target 是目标标签。初学者经常会弄混,不要搞错喽!

3.

K近邻算法:简单好用的分类器

我们先从一个简单的分类器开始——K近邻算法(KNN)。这个模型的思想很直白:新来的样本,看看它离哪个老样本最近,然后归为老样本的类别。直接上代码:

1from sklearn.model_selection import train_test_split

2from sklearn.neighbors import KNeighborsClassifier

3from sklearn.metrics import accuracy_score

5# 分割数据集为训练集和测试集

6X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)

8# 创建KNN分类器

9knn = KNeighborsClassifier(n_neighbors=3)

11# 训练模型

12knn.fit(X_train, y_train)

14# 预测

15y_pred = knn.predict(X_test)

17# 计算准确率

18print(“KNN分类器的准确率:”, accuracy_score(y_test, y_pred))

看吧,几行代码就搞定了一个分类器! KNN 算法非常简单,而且容易理解,适合用来做入门实验。不过它的效率不高,尤其是数据量大的时候,所以在实际应用中你可能不会经常用它,但掌握它对理解机器学习很有帮助。

4.

决策树:让模型做出“决定”

接下来我们看看另一种常用的分类器—— 决策树 。决策树的核心是“问问题”,它会根据数据特征一步步提出问题,直到可以明确分类为止。上代码:

1from sklearn.tree import DecisionTreeClassifier

3# 创建决策树分类器

4tree = DecisionTreeClassifier()

6# 训练模型

7tree.fit(X_train, y_train)

9# 预测

10y_pred_tree = tree.predict(X_test)

12# 计算准确率

13print(“决策树分类器的准确率:”, accuracy_score(y_test, y_pred_tree))

温馨提示 :决策树容易出现“过拟合”,意思就是它可能会对训练集学得太好,导致在新数据上的表现不佳。在实际使用中,通常会对它做一些剪枝操作来防止过拟合。

5.

支持向量机(SVM):分类的终极战士

支持向量机(SVM)是一个非常强大的分类器,尤其适合处理高维数据。虽然背后的数学有点复杂,但别担心,使用 Scikit-learn 你几乎不用管这些细节。代码如下:

1from sklearn.svm import SVC

3# 创建SVM分类器

4svm = SVC()

6# 训练模型

7svm.fit(X_train, y_train)

9# 预测

10y_pred_svm = svm.predict(X_test)

12# 计算准确率

13print(“SVM分类器的准确率:”, accuracy_score(y_test, y_pred_svm))

SVM 的表现通常很不错,特别是在分类任务中。它会自动找到一个“最佳”的分割平面来区分数据,不管数据的维度有多高。

6.

超参数调优:让模型表现更佳

在实际项目中,我们经常需要调整模型的参数,来提高它的表现,这就是所谓的 超参数调优 。Scikit-learn 提供了一个方便的工具—— GridSearchCV ,让我们可以高效地搜索最佳参数组合。比如我们可以这么做:

1from sklearn.model_selection import GridSearchCV

3# 定义参数网格

4param_grid = {'n_neighbors':[3, 5, 7], 'weights':['uniform', 'distance']}

6# 使用GridSearchCV查找最佳参数

7grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)

8grid_search.fit(X_train, y_train)

10print(“最佳参数组合:”, grid_search.best_params_)

通过这个工具,我们可以快速找到让模型表现更好的参数组合,免去了大量的手动调试。

7.

常见错误和注意事项

  1. 数据预处理 :机器学习模型对数据的要求非常高。比如支持向量机要求输入的数据必须标准化,否则可能会影响模型的表现。你可以使用 Scikit-learn 的 StandardScaler 来对数据进行标准化:
    from sklearn.preprocessing import StandardScaler

    scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test)

温馨提示 :别忘了在训练集和测试集上使用相同的缩放器,避免数据泄漏。

  1. 过拟合与欠拟合 :如果模型在训练集上表现很好,但在测试集上效果很差,那可能是过拟合了。反之,如果两个数据集都表现不好,那就欠拟合了。调节模型复杂度和引入更多数据是解决这些问题的常见方法。

8.

小结

Scikit-learn 是一个非常强大且易于上手的机器学习工具。在了解了 KNN、决策树、SVM 这些经典算法之后,你就已经迈出了机器学习的一大步。接下来可以尝试更多高级的模型,或者深入研究超参数调优、模型评估等更复杂的内容。

Image

往期回顾

1.

2.

3.

别忘了点

Image

分享、

Image

收藏、

Image

在看、

Image

点赞

哦!