11.05记录-机器学习

news/2025/11/5 22:25:20/文章来源:https://www.cnblogs.com/JackWesley/p/19194812

# 11.05记录

拟合

欠拟合

简单地说,就是模型学不会,模型太简单。例如,一个学生只会背公式,但是不会运用,题目稍微变形,就做不出来了。欠拟合说明模型只学会了表层的规律。

现象:

在训练集和测试集上表现都很差

解决方案:

提升模型复杂度,例如增加特征,加深网络等

过拟合

过拟合说明模型学的太死,甚至会把噪声样本当成规律。例如一个学生能熟练的做出一张卷子上面所有的题目,甚至能把卷子的印刷错误都吸收了,但是这并非真实规律。

现象:

在训练集上表现极佳,但是在测试集上表现很差

解决方案:

降低复杂度,例如剪枝,正则化等

线性回归:

线性回归用于预测回归类问题,例如,我们要预测连续型数据,那么,我们就要找到一个函数,使得

\[y_i=h(x_i) \]

用线性函数表示,就是

\[h(x)=\omega^Tx \]

所以我们的目的就是找到最优的omega,怎么判断是否最优?可以用预测值和真实值的差来估算,但是这样正差值和负差值会抵消,所以我们用平方误差,公式:

\[L(\omega)=\sum_{i=1}^m(y_i-\omega^Tx_i)^2 \]

这个函数就是线性回归的损失函数

下面,就有两种求解方式了,一种是正规方程解法,一种是梯度下降法。

正规方程

先展开

\[(y-X\omega)^T(y-X\omega) \]

对omega求导,可以得到

\[X^T(y-X\omega) \]

令其为0,可以得出

\[\hat\omega=(X^TX)^{-1}X^Ty \]

这个omega即为最优解,但是要保证样本数大于特征数,不然X^TX的逆是不能直接算的。

梯度下降法

梯度就是函数值增加最快的方向,负梯度就是减少最快的方向。我们可以通过这个方法来寻找最小损失。

例如,我们站在山上,梯度下降就是从最陡峭的地方下滑山,这样可以最快到达山脚。但是我们也可能到达的是山谷之类的地方, 所以梯度下降只能求解局部最优解。

梯度公式

\[\frac{\partial J(\omega)}{\partial \omega_j} \]

然后用步长乘以这个公式,得到的就是下降的距离

\[a\frac{\partial J(\omega)}{\partial \omega_j} \]

检查梯度下降的距离是否小于设定的阈值epsilon,如果小于,那就停止,否则更新omega

\[\omega_j=\omega_j-a\frac{\partial J(\omega)}{\partial \omega_j} \]

梯度下降的方式

批量梯度下降:每次用所有样本来更新参数(计算量大,训练慢)

随机梯度下降:每次只用一个样本来更新参数(迭代方向变化大,函数收敛较慢)

mini-batch:综合上面两种方法

模型评估

均方误差:

\[MSE=\frac1 N \sum_{i=1}^N(y_i-p_i)^2 \]

其中,N为样本数量,y和p分别表示真实值和预测值

用线性回归来预测波士顿房价

sklearn

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 从原始网站读取 Boston 房价数据
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
# 构造 X 和 y
X = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
y = raw_df.values[1::2, 2]
# 训练集 / 测试集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=8)
# 建立线性回归模型
lr = LinearRegression()
lr.fit(X_train, y_train)
# 预测并计算 MSE
y_pred = lr.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("MSE:", mse)

xgboost

xgboost内置了线性回归的API

import xgboost as xgb
from 线性回归.boston import X_train, y_train, X_testtrian_xgb=xgb.DMatrix(X_train,y_train)
params={'objective': 'reg:linear','booster': 'gblinear' }
model=xgb.train(dtrain=trian_xgb,params=params)
y_pred=model.predict(xgb.DMatrix(X_test))

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

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

相关文章

Day14综合案例一--热词

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

机器学习-逻辑回归算法-基础数学原理版代码

`import numpy as np x=[[1,5],[1,7],[1,3],[1,3],[1,5],[1,6],[1,9],[1,8],[1,7],[1,6]] y=[0,1,0,0,0,1,1,1,1,1] num_x=len(x) num_fe=len(x[0]) 初始化权重和Z weight=[0.0 for _ in range (num_fe)] Z=[0.0 for _…

测试理论知识

一、 为什么要测试? 1、软件本身存在问题、非正常运行也会有问题 2、代码和文档是人写的,难免会出错 3、环境会影响软件 4、软件测试是保证质量的一种方法 二、测试的定义 制造业的定义: 以检验产品是否满足需求为目…

100小时学会SAP—问题1:FB50 做总账凭证时提示过账码没有定义

100小时学会SAP—问题1:FB50 做总账凭证时提示过账码没有定义利用FB50来做总账凭证提示“过账码 没有定义”。但是利用F-02做凭证没有提示相关错误,能正常做凭证。 解决方法如下: 转到事务码OBX1 (路径:SAP用户化…

模拟赛记录 11/5

前言:出分了,有点难受但又不多,毕竟已经难受过了。 T1贪心考虑 \(\text{顺序}-\text{顺序}\) 或 \(\text{顺序}-\text{逆序}\) 即可求出对应答案。点击查看代码 #include<bits/stdc++.h> using namespace std…

Win11 改虚拟内存到C盘之外的盘 - Leone

参考 https://answers.microsoft.com/zh-hans/windows/forum/all/win11%E6%97%A0%E6%B3%95%E6%8A%8A%E8%99%9A%E6%8B%9F/50381a46-ce77-40f5-8bde-a9d01b361e6c解决: WIN11无法把虚拟内存更改到其他盘,改完后重启显示…

随机数板子 - miao

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); 这行代码用于创建一个高质量的随机数生成器。让我详细解释每个部分: 完整代码示例 #include <iostream> #include <random> #inc…

题解:P13933 [蓝桥杯 2022 省 Java B] 最大子矩阵

数据结构大于脑子发现标签是单调队列,我也不会单调队列,所以写 K-Dtree。 正文 一句话题意(迫真) 求所有满足矩形区域内最大值和最小值的差不大于 \(lim\) 的矩形区域的面积的最大值。 解析 那么思路就很清晰了。 …

深度学习非专业解释

深度学习非专业解释1.神经网络中,多个参数输入,与很多神经元进行组合,产生的结果根据权重等最终影响生成一个期望结果的事件。

内存管理-50-可读性-1-page_flags.h - Hello

内存管理-50-可读性-1-page_flags.h基于msm-5.4 实现下面 test.c, 然后 gcc -E test.c -o pp.c 然后得到 page_flags_my.h#define CONFIG_MMU#define CONFIG_SWAP //#define BUILD_BUG_ON_INVALID(e) ((void)(sizeof((…

25.11.05

AGC004E 运动是相对的,显然考虑挪动出口。 假设我们向四个方向最远移动分别是 \(u,d,l,r\),那么大矩形会从外往内删掉 \(d,u,r,l\)。 而注意到我们这个 \(u,d,l,r\) 框出的范围实质是个矩形,在这个矩形内造成的删除…

在React中实现路由跳转

在 React 中实现路由跳转可以使用多种方法,主要依赖于 react-router-dom 库。 常见的路由跳转方法 使用 useNavigate 钩子(适用于 react-router-dom v6): 1. useNavigate 是一个钩子,允许在函数组件中进行编程式导…

2025 11 4+11 5

11.4号这个只有一个上午的时间来着,晚上和中午我被弄去搞WHK了/jk vp 第十七场 T1 评分:绿直接秒了,倒着弄+并查集即可(用时20min)T2 评分:蓝这个我经过了一系列的思考才得出解法来着 首先我先观察到了 \(k_i \cdo…

022304105叶骋恺数据采集第二次作业

作业1 代码与运行结果 class WeatherForecast:def __init__(self):self.headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9pre) Gecko/2008072421 Minefield/3.0…

2025.11.5模拟赛

赛时T1,T2看完都有锅,然后节奏有点乱了,改完题面后,写了T1,但是没太细想,所以出了很多问题,幸好写了一个拍,然后一边拍一边改错2h30min就过去了 调整了一下状态,T2看了一会,切了,但是考虑到一个细节,忘写了…

ai编程第一次实战

ai编程第一次实战安装uniapp的ide hbuilder, 配置nodejs环境, 安装trae ide hbuilder先创建新项目, 选择空白模板 ,项目文件名叫test trae打开这个项目test文件夹, 然后输入提示词. 用uniapp框架写一个留言板功能(不要…

WordPress Social Feed Gallery插件未授权信息泄露漏洞分析

本文详细分析了CVE-2025-10637漏洞,该漏洞影响WordPress Social Feed Gallery插件4.9.2及以下版本,由于缺少授权验证导致未认证攻击者能够窃取Instagram个人资料和媒体数据。概述 CVE-2025-10637是一个影响WordPress…

[题解]P14094 [ICPC 2023 Seoul R] Special Numbers

P14094 [ICPC 2023 Seoul R] Special Numbers 数位 DP。 考虑使用 \(f[pos][g]\) 记忆化,其中:\(pos\) 表示当前填到第几位。 \(g\) 表示填过位置的乘积与 \(k\) 的 \(\gcd\)。根据这个表格我们知道,\(10^{17}\) 内…

ASP.NET Core Blazor 核心功能三:Blazor与JavaScript互操作——让Web开发更灵活

嗨,大家好!我是码农刚子。今天我们来聊聊Blazor中C#与JavaScript互操作。我知道很多同学在听到"Blazor"和"JavaScript"要一起工作时会有点懵,但别担心,我会用最简单的方式带你掌握这个技能! …