机器学习基础(三)监督学习的进阶探索

         导语:上一节我们深入地探讨监督学习和非监督学习的知识,重点关注它们的理论基础、常用算法及实际应用场景,详情可见:

机器学习基础(二)监督与非监督学习-CSDN博客文章浏览阅读769次,点赞15次,收藏8次。更深入地探讨监督学习和非监督学习的知识,重点关注它们的理论基础、常用算法及实际应用场景。https://blog.csdn.net/qq_52213943/article/details/136163917?spm=1001.2014.3001.5501        这一节,我们将详细探索监督学习的进阶应用。

目录

监督学习

数据集的构成与模型学习

损失函数的选择与应用

分类与回归的深入应用

线性回归实战案例:房价预测

决策树的构建与应用

支持向量机(SVM)的高效应用

股票市场预测实战

应用概述

数据加载

特征工程

模型选择

性能评估


监督学习

        监督学习作为机器学习的一个主要分支,专注于从带有标签的数据中学习和建立预测模型。这些模型可以预测新数据的标签,广泛应用于各种行业和领域,从简单的邮件分类到复杂的医疗诊断。

数据集的构成与模型学习

        在监督学习中,数据集包含输入(特征)和输出(标签),这种结构使得模型能够学习输入与输出之间的关系。通过分析训练数据集中的模式,监督学习模型学习如何将输入映射到正确的输出。例如,在邮件分类中,模型学习识别垃圾邮件和正常邮件的特征。

损失函数的选择与应用

        损失函数是衡量模型预测准确度的关键,它计算了模型预测结果和实际结果之间的差异,不同类型的任务需选择不同的损失函数。例如,回归任务常用均方误差(MSE),而分类任务常用交叉熵损失。

        除此之外,常用的损失函数还有:平均绝对误差 (MAE):也用于回归任务,衡量模型预测值与真实值的绝对差异,对异常值不敏感;对数损失 (Log Loss):用于二元分类任务,评估模型的概率估计与真实标签之间的关系;希望风险损失 (Hinge Loss):用于支持向量机的二元分类任务,最大化分类边界的间隔。

分类与回归的深入应用

        分类任务的实际案例很丰富,例如,电子邮件分类器通过学习标记为垃圾邮件和非垃圾邮件的电子邮件的特征,来预测新邮件的类别。而回归任务的实际案例,如房价预测,模型通过学习房屋的特征如面积、位置等数据和历史价格数据,来预测新房屋的市场价值。

        在实际应用中,选择分类或回归方法取决于问题的性质:回归适用于连续数值预测,如股票价格,而分类适用于二元或多类别分类,如垃圾邮件检测。正确选择方法有助于模型更准确地满足任务需求,提高预测结果的可信度。

线性回归实战案例:房价预测

        线性回归是一个基本的预测模型,适用于预测与多个变量有线性关系的输出。在房价预测的例子中,开发者将看到如何将这个理论应用于实际数据。

        延续上一节关于房价预测的讨论,本节将更深入地探讨如何使用房屋的特征(如面积、位置和房龄)来预测其市场价格。本节案例展示了如何从实际数据中提取特征,以及这些特征如何影响预测结果。

        这个代码示例展示了如何使用标准的Python库来加载数据、划分数据集、训练线性回归模型以及评估模型效果。图表中展示了模型预测价格与实际价格之间的关系,从而直观地评估模型性能。线性回归房价预测代码如下:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 加载数据
data = pd.read_csv('housing_data.csv')
X = data[['size', 'location', 'age']]
y = data['price']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=42)

# 创建线性回归模型并训练
model = LinearRegression()
model.fit(X_train, y_train)

# 预测和评估
y_pred = model.predict(X_test)
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual Prices vs Predicted Prices")
plt.show()

        首先,通过pd.read_csv('housing_data.csv')加载名为'housing_data.csv'的数据集。数据集包括了各个房屋的特征,如尺寸、地理位置、房龄等,以及相应的价格信息;其次,从数据集中选择了三个特征:'size'(房屋尺寸)、'location'(地理位置)和'age'(房龄),以及一个目标列'price'(房价)。这些特征将被用于训练和测试模型。

        使用train_test_split函数将数据集划分为训练集和测试集,其中测试集占总数据的30%。这个步骤是为了在模型训练完成后,能够用独立的数据来评估模型的性能,以检验其泛化能力。创建一个线性回归模型,通过model = LinearRegression()实例化,并使用训练集数据进行训练,即model.fit(X_train, y_train)。在训练过程中,模型将学习如何根据给定的特征来预测房价。使用训练好的模型对测试集进行预测,将预测结果存储在y_pred中。这一步骤将生成模型对每个测试样本的房价预测值。

        最后,通过使用plt.scatter()和matplotlib库,创建一个散点图,将实际房价(y_test)与模型预测的房价(y_pred)进行可视化比较。这个图表有助于直观地了解模型的性能,以及模型是否能够准确地预测房价。如果点在一条对角线上分布,表示模型的预测与实际值非常接近,而点的偏离则代表了预测误差。

决策树的构建与应用

        决策树通过一系列规则对数据进行分类。例如,使用决策树对患者数据进行分类,预测疾病类型,代码如下:

from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# 加载数据
# 假设data是Pandas DataFrame,包含特征和标签
X = data.drop('disease', axis=1)
y = data['disease']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# 创建决策树模型并训练
tree_model = DecisionTreeClassifier()
tree_model.fit(X_train, y_train)

# 进行预测和评估
y_pred = tree_model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred)

        这段代码使用了Scikit-Learn库中的决策树分类器(DecisionTreeClassifier)来构建一个疾病预测模型。首先,从Pandas DataFrame中加载数据,将特征存储在X中,将标签存储在y中。然后,使用train_test_split函数将数据集分成训练集和测试集,其中测试集占总数据的30%。接下来,通过DecisionTreeClassifier()创建一个决策树模型,并使用训练集对其进行训练。最后,使用训练好的模型对测试集进行预测,计算模型的准确性(Accuracy)作为评估指标,并将结果打印出来。

支持向量机(SVM)的高效应用

        SVM通过找到最佳超平面来区分不同类别的数据。在文本分类或图像识别等高维数据中应用SVM。使用支持向量机(SVM)进行分类任务的基本步骤代码如下:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# 假设data是含有特征和标签的DataFrame
# 请确保data已经被正确加载和准备好
# 分离特征和标签
X = data.drop('label', axis=1)
y = data['label']
# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建SVM模型并训练
svm_model = SVC(kernel='linear')
svm_model.fit(X_train, y_train)
# 预测和评估
y_pred = svm_model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

        这段代码演示了使用Scikit-Learn中的SVM分类器构建分类模型的过程。首先,从DataFrame中提取特征和标签,然后将数据集分为训练集和测试集。接着,创建SVM模型,使用线性核函数进行训练,并对测试集进行预测。最后,计算并打印出模型的准确性,以评估模型性能。这段代码涵盖了典型的机器学习任务步骤。

股票市场预测实战

        金融领域中,股票市场预测一直是一个富有挑战性的课题,因为它受到多种不可预测因素的影响,如政治事件、经济数据发布、公司业绩报告以及市场情绪等。然而,借助监督学习的方法,我们可以通过分析历史股票价格数据和相关因素,构建模型来预测未来的股票走势

应用概述

        使用历史数据来预测股票市场的未来趋势是一个典型的监督学习应用场景,其中涉及到复杂的数据分析和特征工程。我们首先需要收集历史股票价格数据,这些数据通常包括开盘价、最高价、最低价、收盘价以及成交量等。此外,还可以包括一些宏观经济指标、公司财报数据等,以提供更全面的分析视角。可以从数据文件夹下stock_market_data.csv获得模拟数据集。

数据加载

        分析历史股价数据,包括开盘价、收盘价、最高价、最低价以及交易量等。从数据文件夹下stock_market_data.csv加载数据集,使用Pandas库的read_csv()函数读取CSV文件,代码如下:

 import pandas as pd    #导入Pandas模块
 # 加载股票市场数据
 stock_data = pd.read_csv('stock_market_data.csv')  #加载数据集
 print(stock_data.head())   #打印数据集的前5行

特征工程

        从原始数据中提取有用的特征,例如移动平均线、相对强弱指数(RSI)等技术指标。提取特征数据的代码如下:

 # 计算简单移动平均线(SMA)和相对强弱指数(RSI)
 stock_data['SMA'] = stock_data['Close'].rolling(window=15).mean()
 stock_data['RSI'] = compute_RSI(stock_data['Close'], 14) 
 # 假设compute_RSI是一个计算RSI的函数

模型选择

        讨论不同的预测模型,如线性回归、时间序列分析(如ARIMA模型)和机器学习方法(如随机森林和神经网络)。由于股票价格预测是一个时间序列问题,我们选择使用线性回归模型作为起始点。这是一个简单但有效的模型,适合初步尝试和基线建立。代码如下:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 使用开盘价、高、低、交易量以及计算的SMA和RSI作为特征
X = stock_data[['Open', 'High', 'Low', 'Volume', 'SMA', 'RSI']]
y = stock_data['Close']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,random_state=0)

# 创建线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

        这段代码利用Scikit-Learn库中的线性回归模型,使用开盘价、最高价、最低价、交易量、SMA和RSI等多个特征,构建了一个股票价格预测模型。它将数据分为训练集和测试集,通过线性回归模型对训练集进行训练,并使用该模型对测试集进行预测,最终可用于评估模型的性能表现

性能评估

        使用诸如均方误差(MSE)、绝对平均误差(MAE)等指标来评估模型的准确性。在这个例子中,我们使用均方误差(MSE)作为评估指标。它可以衡量预测值与实际股价之间的平均差异。

 mse = mean_squared_error(y_test, y_pred)
 print(f'Mean Squared Error: {mse}')

下一节我们将进行非监督学习的进阶探索

机器学习基础(四)非监督学习的进阶探索-CSDN博客非监督学习像一位探险家,挖掘未标记数据的未知领域。它不依赖预先定义的类别或标签,而是试图揭示数据自身的结构和关系。这种学习方式在处理复杂数据集时尤其有价值,因为它能发现人类可能未曾预见的模式和联系。https://blog.csdn.net/qq_52213943/article/details/136188233?spm=1001.2014.3001.5502-----------------

以上,欢迎点赞收藏、评论区交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/399215.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI工具分享】Retrovision一个图片转3D模型在线工具

Retrovision:图像到3D模型的快速转换工具 一、工具简介 Retrovision是一款前沿的web应用程序,致力于将传统的2D图像快速、简便地转换为高质量的3D模型。其核心功能围绕视差图处理与3D网格生成,为3D内容创作者提供了一个全新的创作平台。 二、核心功能 视差图支持:Retrov…

maven打包scala程序

pom文件打包scala程序 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&g…

快速上手Spring Boot整合,开发出优雅可靠的Web应用!

SpringBoot 1&#xff0c;SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 Controller1.1.1.3 启动服务器1.1.1.4 进行测试 1.1.2 对比1.1.3 官网构建工程1.1.3.1 进入SpringBoot官网1.1.3.2 选择依赖1.1.3.3 生成工程 1.1.4 SpringBoot工程…

前端进度条组件NProgress

nprogress 安装 npm install --save nprogress使用 import NProgress from nprogress // 引入nprogress插件 import nprogress/nprogress.css // 这个nprogress样式必须引入// axios请求拦截器 axios.interceptors.request.use(config > {NProgress.start() // 设置加载进…

CSS三大定位方式(浮动、定位、弹性盒)详细解析

CSS三大定位方式 前言&#xff1a;作为一名前端开发&#xff0c;已经工作2年了。由于自己是半路出家&#xff0c;从嵌入式方向转到前端开发&#xff0c;都是边百度边开发&#xff0c;很多基础都不了解&#xff0c;只要解决问题就好&#xff0c;但是近来为了让自己知识体系化&a…

Nginx 反向代理配置

Nginx就不废话了&#xff0c;web服务器。 最近在备案一个域名&#xff0c;想要备案&#xff0c;部署一个服务器&#xff0c;平常很少自己配置Nginx&#xff0c;今天记录下。 1、反向代理 正向代理 指 客户端通过代理访问后端服务 反向代理 指 服务器推出一个客户&#xff0…

Git 使用教程

一、Git的认识 1.1版本控制 什么是“版本控制”&#xff1f;我为什么要关心它呢&#xff1f; 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。 a) 还原&#xff1a;如果你是程序开发者&#xff0c;在新写一个促销活动的java文…

Elasticsearch:创建自定义 ES Rally tracks 的分步指南

作者&#xff1a;Alejandro Snchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是什么&#xff1f;它的用途是什么&#xff1f; ES Rally 是一个用于在 Elasticsearch 上测试性能的工具&#xff0c;允许你运行和记录比较测试。 做出决策可能很困难&#x…

电脑开机启动项在哪里设置?优化系统速度不是梦!

电脑的开机启动项设置直接影响着系统启动的速度和性能&#xff0c;合理配置启动项可以提高系统的启动速度&#xff0c;同时确保开机时运行的程序符合个人需求。那么&#xff0c;电脑开机启动项在哪里设置呢&#xff1f;本文将详细介绍电脑开机启动项设置的三种方法&#xff0c;…

helm部署gitlab-runner问题解决

关于.gitlab-ci.yml中build镜像时&#xff0c;docker守护进程未启动错误 参考&#xff1a;https://docs.gitlab.com/runner/install/kubernetes.html 问题截图 解决方法 values.yaml中关于conf.toml添加 注意&#xff1a;确保每个节点的docker正常运行 [[runners.kubernetes…

week04day01(爬虫)

一. 爬虫 只爬取公开的信息&#xff0c;不能爬取未公开的后台数据 1.爬虫的合法性 法无禁止皆可为 -- 属于法律的灰色地带https://www.tencent.com/robots.txt -- 网站/robots.txt 可以查看禁止爬取的内容 2. URL Uniform Resource Locator 统一资源定位符https://www.…

2024年黑龙江省考公告出来了,招7768人,速速查收报名流程!

✔️报名时间&#xff1a;2024年2月19日9:00至2月23日17:00 ✔️资格审查时间&#xff1a;至2024年2月23日17:00 ✔️缴费时间&#xff1a;至2024年2月25日09&#xff1a;00 ✔️打印准考证时间&#xff1a;2024年3月12日9&#xff1a;00至3月17日9&#xff1a;00 ✔️公共科目…

多线程相关(1)

线程调度 线程状态&#xff1a;状态切换阻塞与唤醒阻塞唤醒 wait 与 sleep创建线程方式 线程是cpu任务调度的最小执行单位&#xff0c;每个线程拥有自己独立的程序计数器、虚拟机栈、本地方法栈。 线程状态&#xff1a; 线程状态包括&#xff1a;创建、就绪、运行、阻塞、死亡…

Leetcode刷题笔记题解(C++):203. 移除链表元素

思路&#xff1a;不同的情况出现了&#xff0c;就是第一个节点要是为等于val的节点&#xff0c;可以新建一个节点&#xff0c;并next指向head&#xff0c;这样就可以遍历新的链表来删除节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* L…

揭秘阿里巴巴商品详情API:电商数据获取新篇章,业务效率飞跃提升

阿里巴巴平台商品详情API接口技术深度解析 一、概览 在阿里巴巴这个庞大的电商生态中&#xff0c;商品详情API接口&#xff08;item_get&#xff09;扮演着至关重要的角色。通过这一接口&#xff0c;开发者可以轻松地获取商品的详细信息&#xff0c;为选品、数据分析、价格监…

我是怎么用静态IP代理为Google账号保驾护航的

我为何要使用到静态IP代理服务 我是一名IT从业者&#xff0c;在很多年前就加入了一家跨国软件公司&#xff0c;日常需要在全世界各地跟甲方沟通&#xff0c;负责的工作中重要的一块就是Google广告&#xff0c;为此公司还特意给配置了一台笔记本电脑。 目录 我为何要使用到静态…

计算机视觉基础:【矩阵】矩阵选取子集

OpenCV的基础是处理图像&#xff0c;而图像的基础是矩阵。 因此&#xff0c;如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作&#xff0c;从而更好地实现对图像的处理。 示例 示例&#xff1a;选取矩阵中指定的行和列的…

使用IntelliJ IDEA查看接口的全部实现方法

在大型Java项目中&#xff0c;经常会使用接口和抽象类进行代码设计。为了更好地了解代码结构和功能&#xff0c;我们需要快速查看一个接口的所有实现类。IntelliJ IDEA提供了一些方便的方法来实现这一目标。 1. 点击查看接口的实现子类 在IDEA中&#xff0c;你可以轻松地查看…

Ansys Zemax | 使用点扩散函数的衍射极限成像系统的分辨率

附件下载 联系工作人员获取附件 成像系统&#xff08;例如显微镜&#xff09;的衍射极限分辨率可以通过不同方式表征。在本文中&#xff0c;我建议使用在 OpticStudio 中计算的点扩散函数 (PSF) 来客观衡量这些成像系统的分辨率。文中介绍了重叠图像&#xff08;探测器&#x…

SpringBoot项目如何打包成docker镜像?

将Spring Boot项目打包成Docker镜像的过程可以分为以下几个步骤&#xff1a; 1. 创建Dockerfile 首先&#xff0c;你需要在Spring Boot项目的根目录下创建一个Dockerfile。这个文件包含了Docker镜像构建的所有指令。一个基本的Dockerfile可能看起来像这样&#xff1a; # 使用…