当前位置: 首页 > ds >正文

「日拱一码」058 机器学习——监督学习

目录

特点

类型

常见监督学习算法

代码示例

示例1:线性回归(回归问题)

示例2:逻辑回归(分类问题)


监督学习(Supervised Learning)是机器学习中最常见的一种学习方式,它通过已有的标记训练数据(即有输入和对应的正确输出)来训练模型,使模型能够预测新的未知数据的输出。

特点

  1. 有标记数据:训练数据包含输入特征和对应的正确输出标签
  2. 预测目标明确:模型学习输入到输出的映射关系
  3. 可评估性:可以通过测试数据评估模型性能

类型

  1. 分类(Classification):预测离散的类别标签
    • 例如:垃圾邮件识别、图像分类、疾病诊断
  2. 回归(Regression):预测连续的数值输出
    • 例如:房价预测、股票价格预测、温度预测

常见监督学习算法

  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 决策树(Decision Tree)
  • 随机森林(Random Forest)
  • 支持向量机(SVM)
  • k近邻(KNN)
  • 神经网络(Neural Networks)

代码示例

示例1:线性回归(回归问题)

# 导入必要的库
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as pltnp.random.seed(42)
X = np.random.rand(100, 1) * 10  # 100个0-10之间的随机数
y = 2 * X + 1 + np.random.randn(100, 1) * 2  # y = 2x + 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(f"模型系数: {model.coef_}")
print(f"模型截距: {model.intercept_}")
print(f"R²分数: {model.score(X_test, y_test):.2f}")# 可视化
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.scatter(X, y, color='blue', label='实际数据')
plt.plot(X, model.predict(X), color='red', label='预测线')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()# 模型系数: [[1.91972946]]
# 模型截距: [1.28582664]
# R²分数: 0.93

示例2:逻辑回归(分类问题)

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
import seaborn as sns
import numpy as np
import matplotlib.pyplot as pltdata = load_iris()
X = data.data[:, :2]  # 只使用前两个特征以便可视化
y = (data.target != 0).astype(int)  # 二分类问题:是否为setosa类# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建并训练模型
model = LogisticRegression()
model.fit(X_train, y_train)# 预测和评估
y_pred = model.predict(X_test)
print(f"准确率: {accuracy_score(y_test, y_pred):.2f}")# 可视化决策边界和混淆矩阵
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(12, 5))# 决策边界
plt.subplot(1, 2, 1)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor='k')
plt.title('决策边界')
plt.xlabel('花萼长度')
plt.ylabel('花萼宽度')# 混淆矩阵
plt.subplot(1, 2, 2)
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.title('混淆矩阵')
plt.xlabel('预测标签')
plt.ylabel('真实标签')plt.tight_layout()
plt.show()# 准确率: 1.00

http://www.xdnf.cn/news/19265.html

相关文章:

  • CesiumJS 封装 - 初始化与配置
  • 《零基础入门AI:YOLOv2算法解析》
  • 【菜狗每日记录】VSCode远程连接多个账号、创建环境
  • Linux Shell 脚本基础002
  • Day16(前端:JavaScript基础阶段)
  • 8月科技前沿速递 | 存算一体开发者社区月报
  • HCIE考试截图及作答文件上传流程
  • Baseline|基线
  • 在vue/react项目中单独引入一个js文件,在js文件中使用DOMContentLoaded函数querySelectorAll为空数组解决办法
  • OpenCV轮廓近似与Python命令行参数解析
  • 第四十七天(jndi注入)
  • 柳州市委常委、统战部部长,副市长潘展东率队首访深兰科技集团新总部,共探 AI 赋能制造大市与东盟合作新局
  • 前端vue框架实现反向代理详解
  • 响应式编程框架Reactor【3】
  • 【物联网】关于 GATT (Generic Attribute Profile)基本概念与三种操作(Read / Write / Notify)的理解
  • OpenAI Sora深度解析:AI视频生成技术如何重塑广告电商行业?影业合作已落地
  • WebGIS开发智慧校园(8)地图控件
  • 【实时Linux实战系列】实时自动化测试框架
  • [vmware][ubuntu]一个linux调用摄像头截图demo
  • 常见视频封装格式对比
  • LeetCode 317 离建筑物最近的距离
  • 科技赋能医疗:陪诊小程序系统开发,让就医不再孤单
  • mysql中表的约束
  • weblogic JBoss漏洞 Strcts2漏洞 fastjson漏洞
  • 计算机视觉第一课opencv(四)保姆级教学
  • solidity地址、智能合约、交易概念
  • 【完整源码+数据集+部署教程】高速公路施工区域物体检测系统源码和数据集:改进yolo11-RepNCSPELAN
  • FOC-双电阻采样-无刷-AC/DC(吹风筒项目)
  • 笔记本电脑频繁出现 vcomp140.dll丢失怎么办?结合移动设备特性,提供适配性强的修复方案
  • 函数的逆与原象