入门 scikit-learn:简单示例与基本概念
1. 简介
什么是 Scikit-learn?
scikit-learn(简称 sklearn)是一个用于机器学习的 Python 库。它建立在 NumPy、SciPy 和 matplotlib 之上,提供了简单且高效的工具,用于数据挖掘和数据分析,是构建机器学习模型的理想选择。
安装 Scikit-learn
在开始之前,你需要确保 scikit-learn 已经安装在你的环境中。你可以使用以下命令安装 scikit-learn:
pip install scikit-learn
安装完成后,你可以通过以下命令来验证安装是否成功:
import sklearn
print(sklearn.__version__)
2. 基本概念
在使用 scikit-learn 进行机器学习任务之前,了解一些基本概念是很重要的。以下是一些关键概念:
数据集
数据集是进行机器学习的基础。scikit-learn 提供了一些内置的数据集,方便我们进行学习和测试。例如,经典的鸢尾花数据集(Iris Dataset)。
from sklearn.datasets import load_iris
iris = load_iris()
print(iris.keys())
特征和标签
在机器学习中,特征(Features)是用来描述数据的属性,而标签(Labels)是我们想要预测的目标。例如,在鸢尾花数据集中,特征包括花瓣的长度和宽度,而标签是花的种类。
X = iris.data # 特征
y = iris.target # 标签
print("Features:", X[:5])
print("Labels:", y[:5])
数据预处理
数据预处理是机器学习的一个重要步骤,包括数据清洗、标准化、缺失值处理等。scikit-learn 提供了一系列工具来帮助我们进行数据预处理。
标准化
标准化是将特征缩放到相同的范围内,通常是 0 到 1 或者是标准正态分布(均值为 0,方差为 1)。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print("Scaled Features:", X_scaled[:5])
3. 数据拆分
在进行模型训练之前,我们需要将数据集拆分为训练集和测试集。训练集用于训练模型,而测试集用于评估模型的性能。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
print("Training set size:", X_train.shape[0])
print("Test set size:", X_test.shape[0])
4. 模型训练
scikit-learn 提供了多种机器学习算法,我们可以选择适合的算法来训练模型。这里我们以 K 近邻(K-Nearest Neighbors, KNN)算法为例。
from sklearn.neighbors import KNeighborsClassifier
# 创建 KNN 模型
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
5. 模型评估
训练完成后,我们需要评估模型的性能。常见的评估指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)等。这里我们使用准确率作为评估指标。
from sklearn.metrics import accuracy_score
# 使用测试集进行预测
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
6. 综合示例
以下是一个综合示例,将上述所有步骤整合到一起,完整展示使用 scikit-learn 进行机器学习的过程。
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 数据预处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 数据拆分
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
# 模型训练
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# 模型评估
y_pred = knn.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Model Accuracy:", accuracy)
7. 总结
在本章中,我们介绍了 scikit-learn 的基本概念和使用方法,包括数据集的加载、数据预处理、数据拆分、模型训练和模型评估。通过一个完整的示例,我们展示了如何使用 scikit-learn 进行机器学习任务。希望通过本章的学习,你能对 scikit-learn 有一个初步的了解,并能够开始使用它进行简单的机器学习任务。