【matlab】大数据基础与应用实例

目录

引言

线性回归模型

基本形式

最小二乘法

多元线性回归

线性回归的假设

模型评估

应用

独热编码

原理

应用场景

优点

缺点

数据收集

数据可视化

数据处理与分析

完整代码


引言

线性回归模型

线性回归模型是一种用于预测连续值输出(或称为因变量)的统计方法,它基于一个或多个自变量(或称为解释变量、特征)与因变量之间的线性关系。在线性回归中,我们假设因变量与自变量之间的关系可以通过一个线性方程来描述,即因变量是自变量的线性组合加上一个误差项。

基本形式

线性回归模型的基本形式可以表示为:

y=\beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_nx_n+\epsilon

其中:

  • y 是因变量(预测目标)。
  • β0​ 是截距项(或称为常数项)。
  • β1​,β2​,…,βn​ 是回归系数(或称为斜率),它们表示了各自变量对因变量的影响程度。
  • x1​,x2​,…,xn​ 是自变量(特征)。
  • ϵ 是误差项,表示模型未能捕捉到的变异或随机噪声。
最小二乘法

线性回归模型通常使用最小二乘法(Least Squares Method)来估计回归系数 β0​,β1​,…,βn​。最小二乘法的目标是找到一组回归系数,使得预测值与实际值之间的平方误差和(即残差平方和,RSS)最小。

多元线性回归

当模型包含多个自变量时,称为多元线性回归。在多元线性回归中,我们同样使用最小二乘法来估计回归系数,但需要考虑多个自变量之间的相互作用。

线性回归的假设

线性回归模型的有效性基于以下假设:

  1. 线性关系:自变量与因变量之间存在线性关系。
  2. 独立性:观测值之间相互独立。
  3. 同方差性:误差项 ϵ 的方差在所有观测值中都是相同的。
  4. 正态性:误差项 ϵ 服从正态分布。
模型评估

线性回归模型的性能可以通过多种指标来评估,包括但不限于:

  • 均方误差(MSE):预测值与实际值之差的平方的平均值。
  • 均方根误差(RMSE):MSE的平方根,与原始数据的量纲相同,便于理解。
  • 决定系数(R²):表示模型预测值与实际值之间的拟合程度,取值范围从0到1,值越大表示模型拟合得越好。
应用

线性回归模型广泛应用于各种领域,如经济学、统计学、工程学和自然科学等,用于预测、趋势分析和因果推断等。

独热编码

独热编码(One-Hot Encoding),又称一位有效编码,是数据预处理中常用的一种技术,主要用于处理分类数据。在机器学习和数据科学领域,独热编码是一种将分类变量(离散特征、无序特征)转换为数值型数据的方法,以便机器学习算法能够处理。以下是对独热编码的详细介绍:

原理

独热编码使用N位状态寄存器来对N个状态进行编码,每个状态都有其独立的寄存器位,且在任意时刻,只有一位是有效的(即设置为1),其余位都是0。这种方法通过将每个分类值映射到一个唯一的二进制向量上,确保模型正确理解非数值分类特征,同时避免了模型错误地解释分类值之间可能存在的数值关系。

应用场景

独热编码特别适用于处理那些具有明确、有限且通常不带有数值意义的分类值的数据。例如,在性别特征中,“男”和“女”之间没有数值上的大小或顺序关系;在颜色特征中,“红”、“绿”和“蓝”也是纯粹的分类标签,没有隐含的数值含义。

优点
  1. 计算机友好:计算机更擅长处理数字而不是文字或标签。使用独热编码,我们可以将分类数据转化为数值型数据,使得计算机能够更轻松地理解和处理。
  2. 防止大小关系误解:如果我们直接用数字来表示分类(如0、1、2等),计算机可能会误以为这些数字之间存在大小或顺序关系。独热编码避免了这种误解。
  3. 适用于各种算法:许多机器学习算法,尤其是涉及距离计算的算法(如K近邻算法),更适合处理数值型数据。独热编码将分类数据转换为二进制形式,使得这些算法能够更好地处理。
  4. 模型的需求:在深度学习等领域,神经网络的输入层通常期望是数值型数据。独热编码为我们提供了一种有效的方式,将分类数据转换为适用于神经网络的形式。
缺点
  1. 维度爆炸:独热编码会在原始特征的基础上引入大量的新特征,导致维度爆炸,特别是当分类数量较多时。这可能增加计算复杂性和存储空间需求。
  2. 不适用于高基数特征:当分类的类别数量非常大时,独热编码可能变得不切实际。这可能导致训练数据过于稀疏,影响模型的性能。
  3. 信息冗余:由于每个类别都有一个独立的特征,独热编码可能引入冗余信息。对于某些模型,这可能导致冗余特征的存在。
  4. 不考虑特征之间的关联性:独热编码将每个类别视为独立的特征,不考虑类别之间的关联性。这可能忽略了一些信息,特别是对于具有内在顺序关系的分类数据。

综上所述,独热编码是一种有效的数据预处理技术,能够将分类数据转换为适合机器学习算法处理的数值型数据。然而,在使用独热编码时需要注意其优缺点以及适用场景,并结合实际情况进行选择和调整。

数据收集

这里选择了电影相关数据集如图所示:

数据可视化

% 1、散点图,展示评分与评分人数的关系
figure;
scatter(data.Rating, data.NumRatings, 'filled');
xlabel('评分');
ylabel('评分人数');
title('电影评分与评分人数关系');

% 2、直方图,展示电影评分的分布
figure;
histogram(data.Rating, 'BinWidth', 0.5);
xlabel('评分');
ylabel('电影数量');
title('电影评分分布');

% 3、条形图,展示各个国家/地区电影数量
figure;
categories = categorical(data.CountryRegion);
uniqueCategories = unique(categories);
counts = histcounts(categories, 'Normalization', 'count');
bar(uniqueCategories, counts);
xlabel('国家/地区');
ylabel('电影数量');
title('各个国家/地区电影数量');

% 4、盒须图,展示电影时长的分布
figure;
boxplot(data.Duration);
ylabel('时长(分钟)');
title('电影时长分布');


% 5、饼状图,统计不同类型电影的数量
for i = 1:length(uniqueGenres)genreCounts(i) = sum(genres == uniqueGenres(i));
end
figure;
p = pie(genreCounts, uniqueGenres);
title('不同类型电影的分布');

数据处理与分析

对电影评分数据的预处理、特征编码、线性回归模型的训练和交叉验证,以及最后绘制实际评分与预测评分的对比图。

完整代码

clc;% 读取Excel文件
data = readtable('data.xlsx');%数据预处理
% 数据清洗,删除包含空值的行
data = rmmissing(data);
% 将中文列名映射到英文变量名
data.Properties.VariableNames = {'Movie', 'Year', 'Rating', 'NumRatings', 'Actors', 'Genre', 'CountryRegion', 'Duration'};
% 时长列是字符串,需要转换为数值
data.Duration = str2double(regexprep(data.Duration, '[^\d]', ''));
%将类别特征转换为数值特征
genres = string(data.Genre);  
uniqueGenres = unique(genres);
genreCounts = zeros(size(uniqueGenres));%数据可视化
% 1、散点图,展示评分与评分人数的关系
figure;
scatter(data.Rating, data.NumRatings, 'filled');
xlabel('评分');
ylabel('评分人数');
title('电影评分与评分人数关系');% 2、直方图,展示电影评分的分布
figure;
histogram(data.Rating, 'BinWidth', 0.5);
xlabel('评分');
ylabel('电影数量');
title('电影评分分布');% 3、条形图,展示各个国家/地区电影数量
figure;
categories = categorical(data.CountryRegion);
uniqueCategories = unique(categories);
counts = histcounts(categories, 'Normalization', 'count');
bar(uniqueCategories, counts);
xlabel('国家/地区');
ylabel('电影数量');
title('各个国家/地区电影数量');% 4、盒须图,展示电影时长的分布
figure;
boxplot(data.Duration);
ylabel('时长(分钟)');
title('电影时长分布');% 5、饼状图,统计不同类型电影的数量
for i = 1:length(uniqueGenres)genreCounts(i) = sum(genres == uniqueGenres(i));
end
figure;
p = pie(genreCounts, uniqueGenres);
title('不同类型电影的分布');% 确保年份,评分人数和时长列为数值类型
data.Year = str2double(string(data.Year));
data.NumRatings = str2double(string(data.NumRatings));
data.Duration = str2double(string(data.Duration));% 数据预处理
% 使用独热编码(One-Hot Encoding)处理类型特征
genreMatrix = zeros(height(data), length(uniqueGenres));
for i = 1:height(data)genreIndices = ismember(uniqueGenres, strsplit(genres(i), ', '));genreMatrix(i, genreIndices) = 1;
end% 组合所选特征
X = [data.Year, data.NumRatings, data.Duration, genreMatrix];
y = data.Rating;% 标准化特征矩阵
X = normalize(X);% 使用线性回归模型进行k折交叉验证
k = 5; % 5折交叉验证
cv = cvpartition(height(data), 'KFold', k);mseValues = zeros(k, 1); % 存储每折的均方误差
yPredAll = cell(k, 1); 
for i = 1:ktrainIdx = training(cv, i);testIdx = test(cv, i);% 训练模型model = fitlm(X(trainIdx, :), y(trainIdx));% 测试模型yPred = predict(model, X(testIdx, :));yPredAll{i} = yPred; % 存储每折的预测值% 计算均方误差mseValues(i) = mean((y(testIdx) - yPred).^2);
end% 输出平均均方误差
averageMSE = mean(mseValues);
disp(['平均均方误差: ', num2str(averageMSE)]);% 绘制实际值和预测值的曲线图
figure;
hold on;% 初始化一个数组来存储所有实际值和预测值
allYActual = [];
allYPred = [];for i = 1:ktestIdx = test(cv, i);yActual = y(testIdx);yPred = yPredAll{i};% 检查向量长度是否一致if length(yActual) == length(yPred)allYActual = [allYActual; yActual]; % 将每折的实际值添加到总数组中allYPred = [allYPred; yPred];       % 将每折的预测值添加到总数组中elsewarning(['Fold ', num2str(i), ' 的预测值和实际值长度不匹配']);end
end% 根据索引排序,以便绘制曲线图
[~, sortIdx] = sort(allYActual);
sortedYActual = allYActual(sortIdx);
sortedYPred = allYPred(sortIdx);% 绘制曲线图
plot(sortedYActual, '-b', 'DisplayName', '实际值'); % 蓝色实线表示实际值
hold on;
plot(sortedYPred, '-r', 'DisplayName', '预测值');   % 红色实线表示预测值xlabel('样本索引');
ylabel('评分');
title('实际值与预测值曲线图');
legend('show'); % 显示图例
hold off;

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

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

相关文章

【RHCE】综合实验0710综合实验

题目: 主服务器192.168.244.130 防火墙允许服务的放行: selinux放行 [rootlocalhost ~]# ll -Z /nfs/rhce 总用量 4 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 8 7月 10 16:52 index.html -rw-r--r--. 1 nobody nobody system_…

python爬虫网页解析模块及测试案例详解

xpath模块 xpath模块基本使用方法 测试网页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"/><title>Title</title> </head> <body><ul><li id"l1" class"c1&q…

​前端Vue自定义签到获取积分弹框组件设计与实现

摘要 随着前端技术的不断演进&#xff0c;开发的复杂性日益凸显。传统的整体式开发方式在面临功能迭代和修改时&#xff0c;常常牵一发而动全身&#xff0c;导致开发效率低下和维护成本高昂。组件化开发作为一种解决方案&#xff0c;通过实现模块的独立开发和维护&#xff0c;…

frp内网穿透ssh,tcp经过服务器慢速和p2p模式实现高速吃满上传带宽

ssh_server aliyun_server ssh_client 办公室 云服务器 家 在家里经过云服务器中转&#xff0c;很慢&#xff0c;但是很稳定 使用p2p穿透&#xff0c;速度可以直接拉满 ssh_server cc.ini # 连接服务器配置 [common] server_addr 1…

InjectFix 热更新解决方案

简介 今天来谈一谈&#xff0c;项目种的客户端热更新解决方案。InjectFix是腾讯xlua团队出品的一种用于Unity中C#代码热更新热修复的解决方案。支持Unity全系列&#xff0c;全平台。与xlua的思路类似&#xff0c;InjectFix解决的痛点主要在于Unity中C#代码写的逻辑在发包之后无…

【数智化CIO展】沃太能源CIO陈丽:AI 浪潮下的中国企业数智化转型机遇与挑战...

陈丽 本文由沃太能源CIO陈丽投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级优秀CIO》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 在当今飞速发展的数字时代&#xff0c;中国企业正面临着前所未有的变革机遇和挑战。“中国企业数…

Flowable-流程图标与流程演示

BPMN 2.0是业务流程建模符号2.0的缩写。它由Business Process Management Initiative这个非营利协会创建并不断发展。作为一种标识&#xff0c;BPMN 2.0是使用一些符号来明确业务流程设计流程图的一整套符号规范&#xff0c;它能增进业务建模时的沟通效率。目前BPMN2.0是最新的…

链路追踪系列-01.mac m1 安装zipkin

下载地址&#xff1a;https://hub.docker.com/r/openzipkin/zipkin jelexjelexxudeMacBook-Pro zipkin-server % pwd /Users/jelex/Documents/work/zipkin-server 先启动Es: 可能需要先删除 /Users/jelex/dockerV/es/plugins 目录下的.DS_Store 当端口占用时再次启动&#x…

Chromium CI/CD 之Jenkins实用指南2024-Windows安装篇(一)

1. 引言 在现代软件开发过程中&#xff0c;持续集成和持续部署&#xff08;CI/CD&#xff09;是确保高效、稳定软件交付的关键实践。Jenkins作为一款广泛使用的自动化服务器&#xff0c;通过其强大的插件体系和灵活的配置&#xff0c;支持各种操作系统和开发环境。为了帮助开发…

excel 百分位函数 学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、函数说明PERCENTILE 函数PERCENTILE.inc 函数PERCENTILE.exc 函数QUARTILE.EXC 函数 二、使用步骤总结 前言 excel 百分位函数 Excel提供了几个函数用于…

计算机网络——常见问题汇总

1. introduction 1.1 Explain what a communication protocol is and why its important. A communication protocol is a set of rules and conventions(公约) that govern(统治) how data is transmitted and received between devices(设备), systems, or entities in a ne…

Linux vim的使用(一键安装则好用的插件_forcpp),gcc的常见编译链接操作

vim 在Linux系统上vim是个功能还比较完善的软件。但是没装插件的vim用着还是挺难受的&#xff0c;所以我们直接上一款插件。 我们只需要在Linux上执行这个命令就能安装(bite提供的) curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh …

Qt中https的使用,报错TLS initialization failed和不能打开ssl.lib问题解决

前言 在现代应用程序中&#xff0c;安全地传输数据变得越来越重要。Qt提供了一套完整的网络API来支持HTTP和HTTPS通信。然而&#xff0c;在实际开发过程中&#xff0c;开发者可能会遇到SSL相关的错误&#xff0c;例如“TLS initialization failed”&#xff0c;cantt open ssl…

pytorch-LSTM

目录 1. RNN存在的问题2. LSTM的由来3. LSTM门3.1 遗忘门3.2 输入门3.3 输出门 4. LSTM是如何减轻梯度弥散问题 1. RNN存在的问题 如下图&#xff1a;RNN能满足预测下一个单词&#xff0c;但是对于获取更多的上下文信息就做不到了。 2. LSTM的由来 RNN能做到短时记忆即shor…

适合创业公司使用的wordpress主题

对于创业公司来说&#xff0c;‌选择一个适合的WordPress主题至关重要&#xff0c;‌它不仅能够提升公司网站的外观和用户体验&#xff0c;‌还能帮助优化搜索引擎排名&#xff0c;‌从而吸引更多的潜在客户。‌以下是一些推荐的WordPress主题&#xff0c;‌特别适合创业公司使…

抖音运营_商品标题优化关键词优化

一 为什么要优化标题&#xff1f; 标题是爆单的核心因素 有搜索的地方就有关键词检索 抖音现在重点扶持搜索板块 关键词检索不仅为了 消费者、也为了 达人。 二 关键词的组成和原则 1 核心词 n. &#xff08;你卖的东西&#xff09; 示例&#xff1a;连衣裙 2 属性词 …

Linux -- 认识 gdb

目录 前言&#xff1a; Debug 模式和 Release 模式 怎么安装 gdb&#xff1f;&#xff08;CentOS7&#xff09; 怎么使用 gdb&#xff1f; 进入 gdb 模式&#xff1a; 查看代码&#xff1a; 执行代码&#xff1a; 断点&#xff1a; 打断点&#xff1a; 查看断点&#x…

前端埋点数据收集和数据上报

原文地址 什么是埋点 学名叫时间追踪(Event Tracking), 主要针对用户行为或者业务过程进行捕获&#xff0c;处理和发送相关技术及实施过程. 埋点是数据领域的一个专业术语&#xff0c;也是互联网领域的俗称&#xff0c;是互联网领域的俗称 埋点是产品数据分析的基础&#xf…

深度解读李彦宏的“不要卷模型,要卷应用”

深度解读李彦宏的“不要卷模型&#xff0c;要卷应用” —— AI技术的应用之道 引言 在2024世界人工智能大会的舞台上&#xff0c;李彦宏的“不要卷模型&#xff0c;要卷应用”言论犹如一石激起千层浪&#xff0c;引发了业界对AI技术发展路径的深思。本文将深入探讨这一观点&a…

Eagle 4.0 更新了哪些功能,值得购买吗?

这个全新的版本带来了一系列重磅级别的更新&#xff0c;包括全新的「插件系统」、「全新的 UI 风格」以及「AI 工具」等。所有这些&#xff0c;都是为了提供给用户更加优质的使用体验&#xff0c;让工作的流程更加流畅&#xff0c;更加高效。 我们的团队始终倾听用户的声音&am…