机器学习基础(二)监督与非监督学习

news2024/11/15 8:41:46

        导语:更深入地探讨监督学习和非监督学习的知识,重点关注它们的理论基础、常用算法及实际应用场景。

        上一节我们深入探索机器学习的根本原理,包括基本概念、分类及如何通过构建预测模型来应用这些理论,详情可见:

机器学习基础(一)理解机器学习的本质-CSDN博客将在本节深入探索机器学习的根本原理,包括基本概念、分类及如何通过构建预测模型来应用这些理论。https://blog.csdn.net/qq_52213943/article/details/136162632?spm=1001.2014.3001.5501

目录

监督学习

理论基础

常见算法

应用场景

 非监督学习

理论基础

常见算法

应用场景

实战案例:预测房价

问题背景

业务目标

数据集描述

数据清洗

处理缺失值

去除异常值

转换非数值数据

特征选择

相关性分析

特征重要性评估

模型构建与训练


监督学习

        监督学习的核心在于从带有标签的数据中学习,在这种有标签的数据学习的过程中,算法的目标是找到输入特征和输出标签之间的映射关系。

理论基础

        监督学习算法尝试建立一个模型,该模型可以对给定的输入数据做出准确的预测。这通常涉及到从数据中识别模式并建立预测函数。常见的监督学习任务包括分类和回归。分类任务预测离散的标签,而回归任务预测连续的输出。

常见算法

线性回归:在回归任务中,模型尝试找到特征和连续标签之间的线性关系。

决策树:这是一种可以用于分类和回归的算法,它通过一系列规则来进行预测。

支持向量机(SVM):SVM是一种强大的分类算法,特别适合处理高维空间中的数据。

应用场景

        在医疗领域,监督学习可以用于疾病诊断,如基于患者数据预测糖尿病。此流程图是一个简化的糖尿病预测监督学习模型的创建和使用过程,在实际应用中可能需要更多的细节和额外的步骤,如特征选择、交叉验证、模型解释等。

        在金融行业,监督学习被用于信用评分和欺诈检测。此流程图简要概述了监督学习在金融行业中的欺诈检测应用。实际应用中,可能还需要考虑数据隐私、合规性、模型解释性和实时性等因素。

 非监督学习

        非监督学习与监督学习不同,因为它处理的是没有标签的数据。这种类型的学习更多关注于发现数据内部的结构和模式。

理论基础

        非监督学习的目标是探索数据的内在结构和模式,而不是预测标签。主要任务包括聚类、关联规则学习和降维。

常见算法

K-均值聚类:这是一种广泛使用的聚类算法,旨在将数据分成多个类别或群体。

主成分分析(PCA):PCA是一种降维技术,用于减少数据集的复杂性,同时保留最重要的信息。

应用场景

        市场细分是非监督学习的一个经典应用,通过聚类相似的消费者来发现不同的市场细分。这个过程旨在将市场中的消费者或客户分成具有相似需求、行为或特征的不同组群,以便企业能够更好地理解和满足不同市场细分的需求。市场细分的一般流程如图:

        

        在文本分析和自然语言处理中,非监督学习可用于主题建模和文档聚类等领域。主题建模用于发现文本数据中的主题或话题。这在新闻文章分类、社交媒体分析、文档摘要生成等领域非常有用;文档聚类则用于将文档根据其相似性分组,以便于文本检索、信息检索、情感分析等任务。

        主题建模是一种非监督学习技术,用于从文本数据中自动识别和提取主题或话题。它在自然语言处理领域中有广泛的应用,可以帮助人们理解大规模文本语料库中的内容和趋势。主题是文本数据中一种抽象的概念,通常由一组相关的单词组成,描述了文档或文本片段的内容。主题建模旨在通过分析文本数据中的单词分布来自动发现这些主题。

        主题建模的经典算法有:Latent Dirichlet Allocation (LDA): LDA是主题建模中最知名的算法之一。它假设文档是由一组主题混合而成的,每个主题都有一组相关的单词。LDA通过迭代过程来估计文档中的主题分布和主题中的单词分布;Non-Negative Matrix Factorization (NMF): NMF是另一种用于主题建模的算法。它通过将文本数据矩阵分解为两个非负矩阵来发现主题。一个矩阵代表主题-文档关系,另一个代表主题-单词关系。主题建模的流程如图:

实战案例:预测房价

        我们将通过一个实战案例来具体展示如何使用监督学习构建一个预测模型。我们选择的案例是房价预测,这是一个经典的回归问题,目的是根据房屋的特征来预测其售价。

问题背景

        在房地产市场,正确估计房屋价值对于买家、卖家、投资者乃至房地产经纪人都至关重要。房价受多种因素影响,包括房屋的大小、位置、年龄、近期装修情况等。

业务目标

        开发一个模型,准确预测不同特征组合下房屋的市场售价。为房地产公司、投资者提供快速估价工具,帮助他们做出更明智的投资和购买决策。

数据集描述

每个样本包含如下特征:

  1. 基本属性:面积、房间数、楼层数、建造年份等。

  2. 地理位置:所在城市、街区、是否靠近市中心等。

  3. 附加属性:地下室面积、车库情况、花园大小等。

        房价数据集的特征涵盖房屋的基本构造(如面积、房间数、楼层数、建造年份)、所处的地理位置(城市、街区、邻近市中心的情况)以及额外设施(地下室、车库、花园),为评估房产价值提供了全面信息。

数据清洗

        数据清洗是机器学习项目中至关重要的一步,它直接影响模型的性能。对于房价预测案例,数据清洗的基本步骤包括:

处理缺失值

        检查数据集中的缺失值。对于少量缺失的特征,可以使用均值、中位数或众数来填充。如果某个特征有大量缺失值,可以考虑删除该特征

import pandas as pd
# df包含了你的数据集
df = pd.read_csv('home_price.csv')
# 检查数据集中的缺失值
missing_values = df.isnull().sum()
# 显示每个特征的缺失值数量
print("缺失值统计:")
print(missing_values)
# 处理缺失值
for column, count in missing_values.items():
    if count > 0:
        if count < len(df) * 0.1:  # 少量缺失的特征,使用均值填充
            df[column].fillna(df[column].mean(), inplace=True)
        else:  # 大量缺失的特征,删除该特征
            df.drop(column, axis=1, inplace=True)
# 显示处理后的数据集信息
print("\n处理后的数据集信息:")
print(df.info())

去除异常值

        识别并去除异常值,这些可能是由于输入错误或其他非典型情况造成的。使用统计方法(如Z-score)或可视化方法(如箱线图)来检测异常值。

import pandas as pd
import numpy as np
from scipy import stats

# 创建一个包含异常值的DataFrame示例
data = {'Value': [10, 15, 20, 25, 100]}
df = pd.DataFrame(data)
# 计算Z-score
z_scores = np.abs(stats.zscore(df))
# 设置阈值,通常选择阈值为2或3
threshold = 2
# 找到Z-score超过阈值的行
outliers = np.where(z_scores > threshold)
# 去除异常值
df_cleaned = df[(z_scores < threshold).all(axis=1)]
# 显示去除异常值后的DataFrame
print("去除异常值后的DataFrame:")
print(df_cleaned)

转换非数值数据

        很多机器学习算法要求输入是数值型的。因此,对于类别型数据(如街区名称),我们需要进行编码,如使用独热编码(One-Hot Encoding)

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline

# 假设df是Pandas DataFrame,包含了房屋的特征和目标价格
# 分离特征和目标变量
X = df.drop('Price', axis=1)
y = df['Price']

# 数值型和类别型特征的列名
numeric_features = ['Area', 'Rooms', 'Age']
categorical_features = ['Location', 'Type']


# 创建预处理步骤
numeric_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='median')),
    ('scaler', StandardScaler())])

categorical_transformer = Pipeline(steps=[    
('imputer', SimpleImputer(strategy='constant', fill_value='missing')), 
('onehot', OneHotEncoder(handle_unknown='ignore'))])
# 使用ColumnTransformer来应用这些转换
preprocessor = ColumnTransformer(
    transformers=[
        ('num', numeric_transformer, numeric_features),        ('cat', categorical_transformer, categorical_features)])

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

特征选择

特征选择涉及决定使用哪些特征来训练模型。这一步骤可以减少模型的复杂性和过拟合的风险。

相关性分析

        使用相关系数矩阵来检查各个特征与目标变量(房价)之间的相关性,高度相关的特征可能对预测房价有更大的影响。例如,房屋面积对于房价的影响大于楼层对于房价的影响,即房屋面积比楼层更适合作为训练房价预测模型的特征。

特征重要性评估

        使用某些算法(如随机森林)可以评估不同特征的重要性。

根据特征重要性来选择最有影响的特征。

模型构建与训练

选择算法

        在这个案例中,由于其基于回归的性质以及线性回归模型的简单易学特点,开发者可以优先选择线性回归模型作为起点学习算法。线性回归是一个简单而直观的模型,适合初学者理解和实现,因此可作为探索机器学习领域的起点。随着对线性回归的熟悉和理解,开发者可以进一步探索和优化模型,拓展到更复杂的算法和技术领域。

模型训练

        一旦选择了合适的算法,接下来的关键步骤是使用训练数据来训练模型。这个过程涉及到调整模型的各种参数,例如学习率、正则化项等,以不断改善模型的性能和准确度。通过对训练数据的反复迭代学习,模型将逐渐优化,更好地拟合数据,从而使其能够对新数据做出更准确的预测。使用选定的特征来构建和训练模型。

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.pipeline import Pipeline

# 创建一个管道,结合预处理步骤和线性回归模型model =
Pipeline(steps=[('preprocessor', preprocessor),
                        ('regressor', LinearRegression())])

# 训练模型
model.fit(X_train, y_train)

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

# 评估模型
print("模型的均方误差: ", mean_squared_error(y_test, y_pred))

        这段代码使用Scikit-learn库构建了一个处理房价预测问题的线性回归模型。它首先通过预处理管道处理数值型和类别型特征,然后将处理后的数据用于训练线性回归模型,并对测试集进行预测,最后计算模型的均方误差以评估其性能。

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

机器学习基础(三)监督学习的进阶探索-CSDN博客监督学习作为机器学习的一个主要分支,专注于从带有标签的数据中学习和建立预测模型。这些模型可以预测新数据的标签,广泛应用于各种行业和领域,从简单的邮件分类到复杂的医疗诊断。https://blog.csdn.net/qq_52213943/article/details/136173870?spm=1001.2014.3001.5501

-----------------

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos中安装go

安装过程 &#xff08;1&#xff09;源码二进制下载地址 wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz &#xff08;2&#xff09;将下载的二进制包解压至 /usr/local目录。 tar -C /usr/local/ -xzf go1.13.5.src.tar.gz &#xff08;3&#xff09;设置环…

自定义电子凸轮曲线的运动:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十三)

PCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡&#xff0c;可选6-64轴运动控制&#xff0c;支持多路高速数字输入输出&#xff0c;可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能&#xff0c;结合MotionRT7运动控…

week04day03(爬虫 beautifulsoup4、)

一. 使用bs4解析网页 下载bs4 - pip install beautifulsoup4 使用的时候 import bs4专门用于解析网页的第三方库 在使用bs4的时候往往会依赖另一个库lxml pip install lxml 网页代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><…

使用redisMQ-spring-boot-starter实现消息队列和延时队列

简介 redisMQ-spring-boot-starter是一个轻量级的、基于Redis实现的消息队列中间件&#xff0c;它有如下优点&#xff1a; 开箱即用&#xff0c;你几乎不用添加额外的配置支持消息队列、延时队列&#xff0c;并提供精细化配置参数提供消息确认机制支持虚拟空间&#xff0c;不…

华为算法题 go语言或者ptython

1 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的景区垃圾识别系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本文介绍了一个先进的基于深度学习的景区垃圾检测系统&#xff0c;该系统集成了最新的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等前代算法进行了性能对比&#xff0c;通过对比实验证明了其在图像、视频、实时视频流和批量文件处理中对景区垃圾进行精…

【深度学习笔记】3_1 线性回归

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.1 线性回归 线性回归输出是一个连续值&#xff0c;因此适用于回归问题。回归问题在实际中很常见&#xff0c;如预测房屋价格、气温、销售额等连续值的问题。与回归问…

HTTP基本概念-HTTP 常见的状态码有哪些?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 常见的状态码有哪些? 1xx 类状态码属于提示信息&#xff0c;是协议处理中的一种中间状态&#xff0c;实际用到的比较少。 2xx 类状态码表示服务器成功处理了客户端的请求&#xff0c;也是我们最愿…

数据库事物复习

事务 比如说将张三的银行账户拿出一千给李四&#xff0c;首先需要查询张三的账户余额&#xff0c;扣除1000&#xff0c;然后如果给李四加上1000的过程中出现异常会回滚事务&#xff0c;临时修改的数据会回复回去。 -- 1. 查询张三账户余额 select * from account where name …

OpenAI Sora模型,官方技术文档翻译

技术报告地址&#xff1a;https://openai.com/research/video-generation-models-as-world-simulators 本技术报告的重点是&#xff08;1&#xff09;将所有类型的视觉数据转化为统一表示&#xff0c;从而能够大规模训练生成模型的方法&#xff1b;以及&#xff08;2&#xff0…

互联网广告投放与IP地理位置定位

随着互联网的发展和普及&#xff0c;互联网广告投放成为各行业推广营销的重要方式之一。而结合IP地理位置定位技术&#xff0c;可以实现精准定向&#xff0c;提高广告投放的效果和精准度。IP数据云将探讨互联网广告投放与IP地理位置定位的关系&#xff0c;分析其优势和应用场景…

基于springboot+vue的智能物流管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

设计模式-创建型模式-原型模式

原型模式&#xff08;Prototype Pattern&#xff09;&#xff1a;使用原型实例指定创建对象的种类&#xff0c;并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。原型模式其实就是从一个对象再创建另外一个可定制的对象&#xff0c;而且不需知道任何创建的细节…

Nginx知识笔记

一、前言 首先&#xff0c;我们来看一张关于正向代理和反向代理的图片 简单理解正向代理和反向代理的概念&#xff1a; 正向代理&#xff1a;在客户端配置代理服务器(和跳板机功能类似&#xff0c;比如公司很多机器需要通过跳板机才允许登录&#xff0c;正向代理的典型用途是…

npmjs官网(查询依赖包)

npmjs官网 可以方便的查看依赖包的安装、使用说明及相关注意事项等。 以wechat-http为例&#xff1a;

1.CSS单位总结

CSS 单位总结 经典真题 px 和 em 的区别 CSS 中的哪些单位 首先&#xff0c;在 CSS 中&#xff0c;单位分为两大类&#xff0c;绝对长度单位和相对长度单位。 绝对长度单位 我们先来说这个&#xff0c;绝对长度单位最好理解&#xff0c;和我们现实生活中是一样的。在我们…

rabbitmq知识梳理

一.WorkQueues模型 Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于消息的消费速度。长此以往&#xff0c;消息就会堆积越来越多&#xff0c…

男性美颜SDK解决方案,专属男性美化新体验

随着科技的发展&#xff0c;美颜技术已广泛应用于摄影、社交、直播等领域&#xff0c;满足了用户对美的追求。然而&#xff0c;传统的美颜算法往往更偏向于女性用户&#xff0c;忽视了男性用户对于自然、真实美的需求。美摄科技针对这一市场痛点&#xff0c;推出了专为男性设计…

APP的UI自动化demo(appium+java)

文章目录 appium连接手机java代码实现-第一版第二版-接入testng和隐式等待显示等待 appium连接手机 准备工作 1、查看连接手机模拟器是否连接成功&#xff0c;获取设备名称 执行命令&#xff1a;adb devices 2、查看android内核版本号—>paltformVersion 执行命令&#xf…

NLP 使用Word2vec实现文本分类

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/…