Sklearn中的监督学习全览:从线性回归到SVM

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: 【7月更文第23天】在机器学习的广阔领域中,监督学习占据着举足轻重的地位,它通过已标记的数据集学习输入与输出之间的映射关系,进而对未知数据进行预测。`scikit-learn`(简称sklearn)作为Python中最受欢迎的机器学习库之一,提供了丰富的监督学习算法。本篇文章将带您深入探索sklearn中的监督学习世界,从简单的线性回归到复杂的支撑向量机(SVM),并通过实战代码示例,让您对这些算法有更直观的理解。

在机器学习的广阔领域中,监督学习占据着举足轻重的地位,它通过已标记的数据集学习输入与输出之间的映射关系,进而对未知数据进行预测。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设计和丰富的功能,成为学习和应用监督学习的理想工具。希望本文能为您在机器学习的探索之旅中提供有价值的参考。在实践中,还需根据具体问题进一步调整模型参数,采用交叉验证、网格搜索等方法优化模型性能。

目录
相关文章
Sklearn库中的决策树模型有哪些主要参数?
Sklearn的决策树模型参数包括:criterion(默认"gini")用于特征选择,splitter(默认"best")决定划分点,max_depth限制树的最大深度,min_samples_split设置内部节点划分的最小样本数,min_samples_leaf定义叶子节点最少样本数,max_features(默认"auto")控制搜索最优划分时的特征数量,random_state设定随机数种子,max_leaf_nodes限制最大叶子节点数,以及min_impurity_decrease阻止不纯度减少不足的节点划分。
301 0
|
数据可视化 数据挖掘
【数据挖掘】多项式回归原理介绍及实战应用(超详细 附源码)
【数据挖掘】多项式回归原理介绍及实战应用(超详细 附源码)
775 1
|
资源调度 算法 关系型数据库
5G 物理层|带你读《5G无线网络规划与设计》之十
使用非授权频谱是移动通信系统扩展频谱资源的重要手段之一。非授权频谱上的业务非常繁忙,抢占信道最好的方法是一旦发现信道空闲马上开始传输。在 LTE 中,资源调度以时隙为单位,即使监听到信道空闲,也必须等到下一个时隙开始进行传输
5G 物理层|带你读《5G无线网络规划与设计》之十
|
6月前
|
人工智能 测试技术 API
Apifox对比Apipost:2025年推荐的API协作工具
Apifox与Apipost这两大国产API平台的全方位较量,助你在2025年做出最明智的选择。
|
9月前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。
377 16
|
机器学习/深度学习 存储 分布式计算
scikit-learn在大数据处理中的优化与加速
【4月更文挑战第17天】面对大数据处理的挑战,scikit-learn的性能优化与加速至关重要。优化策略包括内存管理(数据集缩减、数据流处理、分布式存储)和算法选择(如在线学习、低内存占用算法)。并行化计算通过设置`n_jobs`或使用Dask、Joblib提升速度,分布式计算如Spark、Dask Distributed扩展处理能力。结合案例实践,建议综合考虑各种策略,并关注新技术以适应不断变化的大数据需求。未来,期待更多优化方案提升scikit-learn在大数据场景下的效能。
|
数据挖掘 索引 Python
Pandas中的crosstab:轻松构建交叉表
Pandas中的crosstab:轻松构建交叉表
423 0
ENVI:如何进行遥感图像的分类?(决策树模型)
ENVI:如何进行遥感图像的分类?(决策树模型)
632 0
|
Cloud Native 安全 自动驾驶
全新升级!《云原生架构白皮书 2022 版》重磅发布
今年,《云原生架构白皮书2022版》正式上线,相较于2020年版本,本次内容新增数十家企业实战经验合集,同时在云原生产品矩阵中,新增多个核心产品家族,如容器产品家族、微服务产品家族、云原生技术中台 CNStack 产品家族等,更加一站式助力企业数字化转型。
9360 1
全新升级!《云原生架构白皮书 2022 版》重磅发布
|
Linux 数据安全/隐私保护 C++
如何使用Cython对python脚本加密成pyd/so
如何使用Cython对python脚本加密成pyd/so
594 0
如何使用Cython对python脚本加密成pyd/so