Scikit-learn,开启机器学习大门的钥匙!
点击
上方文字
关注我们
Scikit-learn,开启机器学习大门的钥匙!
今天我们聊聊机器学习中的神奇工具—— Scikit-learn 。这是一个非常流行且功能强大的 Python 库,用来快速实现各种机器学习模型。无论你是机器学习新手,还是经验丰富的老手,Scikit-learn 都能帮你快速上手并且完成一些很酷的事情。
1.
安装与导入
用 Scikit-learn 的第一步当然是安装咯,如果你还没有装过它,那就直接在命令行输入:
1
pip install scikit-learn
安装完了别忘了导入它:
1
import sklearn
接下来,我们就可以开始搞事情了。
2.
数据集:机器学习的原材料
Scikit-learn 自带了一些很经典的数据集,方便你学习和测试。比如咱们马上就要用到的 Iris 数据集。Iris 是一个有四个特征的经典花卉分类数据集。你可以这样加载它:
1
from sklearn.datasets import load_iris3
iris = load_iris()4
print(iris.data[:5]) # 打印前五行数据
温馨提示 :iris.data 是数据的特征部分,iris.target 是目标标签。初学者经常会弄混,不要搞错喽!
3.
K近邻算法:简单好用的分类器
我们先从一个简单的分类器开始——K近邻算法(KNN)。这个模型的思想很直白:新来的样本,看看它离哪个老样本最近,然后归为老样本的类别。直接上代码:
1
from sklearn.model_selection import train_test_split2
from sklearn.neighbors import KNeighborsClassifier3
from sklearn.metrics import accuracy_score5
# 分割数据集为训练集和测试集6
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)8
# 创建KNN分类器9
knn = KNeighborsClassifier(n_neighbors=3)11
# 训练模型12
knn.fit(X_train, y_train)14
# 预测15
y_pred = knn.predict(X_test)17
# 计算准确率18
print(“KNN分类器的准确率:”, accuracy_score(y_test, y_pred))
看吧,几行代码就搞定了一个分类器! KNN 算法非常简单,而且容易理解,适合用来做入门实验。不过它的效率不高,尤其是数据量大的时候,所以在实际应用中你可能不会经常用它,但掌握它对理解机器学习很有帮助。
4.
决策树:让模型做出“决定”
接下来我们看看另一种常用的分类器—— 决策树 。决策树的核心是“问问题”,它会根据数据特征一步步提出问题,直到可以明确分类为止。上代码:
1
from sklearn.tree import DecisionTreeClassifier3
# 创建决策树分类器4
tree = DecisionTreeClassifier()6
# 训练模型7
tree.fit(X_train, y_train)9
# 预测10
y_pred_tree = tree.predict(X_test)12
# 计算准确率13
print(“决策树分类器的准确率:”, accuracy_score(y_test, y_pred_tree))
温馨提示 :决策树容易出现“过拟合”,意思就是它可能会对训练集学得太好,导致在新数据上的表现不佳。在实际使用中,通常会对它做一些剪枝操作来防止过拟合。
5.
支持向量机(SVM):分类的终极战士
支持向量机(SVM)是一个非常强大的分类器,尤其适合处理高维数据。虽然背后的数学有点复杂,但别担心,使用 Scikit-learn 你几乎不用管这些细节。代码如下:
1
from sklearn.svm import SVC3
# 创建SVM分类器4
svm = SVC()6
# 训练模型7
svm.fit(X_train, y_train)9
# 预测10
y_pred_svm = svm.predict(X_test)12
# 计算准确率13
print(“SVM分类器的准确率:”, accuracy_score(y_test, y_pred_svm))
SVM 的表现通常很不错,特别是在分类任务中。它会自动找到一个“最佳”的分割平面来区分数据,不管数据的维度有多高。
6.
超参数调优:让模型表现更佳
在实际项目中,我们经常需要调整模型的参数,来提高它的表现,这就是所谓的 超参数调优 。Scikit-learn 提供了一个方便的工具—— GridSearchCV ,让我们可以高效地搜索最佳参数组合。比如我们可以这么做:
1
from sklearn.model_selection import GridSearchCV3
# 定义参数网格4
param_grid = {'n_neighbors':[3, 5, 7], 'weights':['uniform', 'distance']}6
# 使用GridSearchCV查找最佳参数7
grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)8
grid_search.fit(X_train, y_train)10
print(“最佳参数组合:”, grid_search.best_params_)
通过这个工具,我们可以快速找到让模型表现更好的参数组合,免去了大量的手动调试。
7.
常见错误和注意事项
数据预处理 :机器学习模型对数据的要求非常高。比如支持向量机要求输入的数据必须标准化,否则可能会影响模型的表现。你可以使用 Scikit-learn 的
StandardScaler来对数据进行标准化:
from sklearn.preprocessing import StandardScalerscaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test)
温馨提示 :别忘了在训练集和测试集上使用相同的缩放器,避免数据泄漏。
过拟合与欠拟合 :如果模型在训练集上表现很好,但在测试集上效果很差,那可能是过拟合了。反之,如果两个数据集都表现不好,那就欠拟合了。调节模型复杂度和引入更多数据是解决这些问题的常见方法。
8.
小结
Scikit-learn 是一个非常强大且易于上手的机器学习工具。在了解了 KNN、决策树、SVM 这些经典算法之后,你就已经迈出了机器学习的一大步。接下来可以尝试更多高级的模型,或者深入研究超参数调优、模型评估等更复杂的内容。
往期回顾
1.
2.
3.
别忘了点
分享、
收藏、
在看、
点赞
哦!