在机器学习的广阔领域中,监督学习占据着举足轻重的地位,它通过已标记的数据集学习输入与输出之间的映射关系,进而对未知数据进行预测。scikit-learn
(简称sklearn)作为Python中最受欢迎的机器学习库之一,提供了丰富的监督学习算法。本篇文章将带您深入探索sklearn中的监督学习世界,从简单的线性回归到复杂的支撑向量机(SVM),并通过实战代码示例,让您对这些算法有更直观的理解。
1. 线性回归(Linear Regression)
线性回归是最基本的监督学习算法之一,用于预测连续数值型变量。它试图找到一个线性模型,使所有数据点到该直线的垂直距离之和最小。
代码示例:
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
# 生成模拟数据
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 打印预测结果
print("预测结果:", y_pred[:5])
2. 逻辑回归(Logistic Regression)
尽管名字中含有“回归”,逻辑回归实际上是一个分类算法,适用于二分类问题。它通过Sigmoid函数将线性模型的输出转换为概率。
代码示例:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 加载数据集
data = load_iris()
X, y = data.data, data.target
# 仅使用前两列特征和前100个样本进行演示
X, y = X[:100, :2], y[:100]
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练逻辑回归模型
logreg = LogisticRegression(max_iter=10000)
logreg.fit(X_train, y_train)
# 预测
predictions = logreg.predict(X_test)
# 打印预测结果
print("预测类别:", predictions)
3. 支撑向量机(Support Vector Machines, SVM)
SVM是一种强大的分类和回归算法,通过寻找最大边界(margin)来划分数据。对于非线性可分数据,SVM可通过核技巧映射到高维空间进行处理。
代码示例:
from sklearn import datasets
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
# 加载鸢尾花数据集
iris = datasets.load_iris()
X, y = iris.data, iris.target
# 数据预处理,标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 训练SVM模型,这里使用RBF核
svm = SVC(kernel='rbf', C=1, gamma='scale')
svm.fit(X_scaled, y)
# 预测
predictions = svm.predict(X_scaled[:5])
# 打印预测结果
print("预测类别:", predictions)
总结
通过上述代码示例,我们简要介绍了sklearn中三种典型的监督学习算法:线性回归、逻辑回归和支撑向量机。每种算法都有其独特的应用场景和优势,选择合适的模型对于解决实际问题至关重要。sklearn以其简洁的API设计和丰富的功能,成为学习和应用监督学习的理想工具。希望本文能为您在机器学习的探索之旅中提供有价值的参考。在实践中,还需根据具体问题进一步调整模型参数,采用交叉验证、网格搜索等方法优化模型性能。