机器学习基石:深入解析线性回归

线性回归是机器学习中最基础、最核心的算法之一,它为我们理解更复杂的模型奠定了基础。本文将带你全面解析线性回归的方方面面。


1. 什么是回归?

回归分析用于预测连续型数值。它研究自变量(特征)与因变量(目标)之间的关系。例如:

  • 根据房屋面积、地段预测房价
  • 根据广告投入预测产品销量

核心目标:找到特征与目标之间的最佳映射函数。


2. 线性回归

核心假设:目标变量(y)与特征变量(x)之间存在线性关系
模型表达式:
y = w0 + w1*x1 + w2*x2 + ... + wn*xn + ε

  • y:预测目标
  • w0:偏置项(截距)
  • w1..wn:特征权重(斜率)
  • ε:随机误差

3. 损失函数:衡量模型误差

均方误差(MSE) 是最常用损失函数:

MSE = (1/m) * Σ(y_i - ŷ_i)^2
  • m:样本数量
  • y_i:真实值
  • ŷ_i:预测值

目标:找到一组权重 w,使 MSE 最小化。
数据: [[4.2, 3.8],[4.2, 2.7],[2.7, 2.4],[0.8, 1.0],[3.7, 2.8],[1.7, 0.9],[3.2, 2.9]]

我们假设 这个最优的方程是:

y=wx+by=wx+by=wx+b

这样的直线随着w和b的取值不同 可以画出无数条
在这无数条中,哪一条是比较好的呢?
在这里插入图片描述
我们有很多方式认为某条直线是最优的,其中一种方式:均方差

就是每个点到线的竖直方向的距离平方 求和 在平均 最小时 这条直接就是最优直线
在这里插入图片描述
假设: y=wx+by=wx+by=wx+b

x1,x2,x3...x_1,x_2,x_3...x1,x2,x3...带入进去 然后得出:

y1,=wx1+by_1^,=wx_1+by1,=wx1+b

y2,=wx2+by_2^,=wx_2+by2,=wx2+b

y3,=wx3+by_3^,=wx_3+by3,=wx3+b

然后计算y1−y1,{y_1-y_1^,}y1y1, 表示第一个点的真实值和计算值的差值 ,然后把第二个点,第三个点…最后一个点的差值全部算出来

有的点在上面有点在下面,如果直接相加有负数和正数会抵消,体现不出来总误差,平方后就不会有这个问题了

所以最后:

总误差(也就是传说中的损失):

loss1=(y1−y1,)2+(y2−y2,)2+....(yn−yn,)2{(y_1-y_1^,)^2}+{(y_2-y_2^,)^2}+....{(y_n-y_n^,)^2}(y1y1,)2+(y2y2,)2+....(ynyn,)2

平均误差(总误差会受到样本点的个数的影响,样本点越多,该值就越大,所以我们可以对其平均化,求得平均值,这样就能解决样本点个数不同带来的影响)

这样就得到了传说中的损失函数:

eˉ=1n∑i=1n(yi−wxi−b)2\bar e = \frac{1}{n} \textstyle\sum_{i=1}^{n}(y_{i}-w x_{i} - b)^{2}eˉ=n1i=1n(yiwxib)2

总结

1.实际数据中 x和y组成的点 不一定是全部落在一条直线上

2.我们假设有这么一条直线 y=wx+by=wx+by=wx+b 是最符合描述这些点的

3.最符合的条件就是这个方程带入所有x计算出的所有y与真实的y值做 均方差计算

4.找到均方差最小的那个w

5.这样就求出了最优解的函数(前提条件是假设b=0)


4. 多参数回归

当特征数量 > 1 时,使用矩阵运算更高效:

ŷ = X · w
  • X:m×(n+1) 维特征矩阵(含偏置列)
  • w:(n+1)×1 维权重向量

上面案例中,实际情况下,影响这种植物高度的不仅仅有温度,还有海拔,湿度,光照等等因素:

实际情况下,往往影响结果y的因素不止1个,这时x就从一个变成了n个,x1,x2,x3...xnx_1,x_2,x_3...x_nx1,x2,x3...xn 上面的思路是对的,但是求解的公式就不再适用了

案例: 假设一个人健康程度怎么样,由很多因素组成

被爱学习指数抗压指数运动指数饮食情况金钱心态压力健康程度
014805-29-3339
-41064-14-2-148-114
-1-65-123-32-230
5-23105114-8126
-15-15-8-157-4-122-395
11-10-243-9-67-87
-1404-3510137422
-3-7-2-80-6-5-9-309
111481051081?

求如果karen的各项指标是:
被爱:11 学习指数:14 抗压指数:8 运动指数:10 饮食水平:5 金钱:10 心态:8 压力:1
那么karen的健康程度是多少?
直接能想到的就是八元一次方程求解:

14w2+8w3+5w5+−2w6+9w7+−3w8=39914w_2+8w_3+5w_5+-2w_6+9w_7+-3w_8=39914w2+8w3+5w5+2w6+9w7+3w8=399

−4w1+10w2+6w3+4w4+−14w5+−2w6+−14w7+8w8=−144-4w_1+10w_2+6w_3+4w_4+-14w_5+-2w_6+-14w_7+8w_8=-1444w1+10w2+6w3+4w4+14w5+2w6+14w7+8w8=144

−1w1+−6w2+5w3+−12w4+3w3+−3w6+2w7+−2w8=30-1w_1+-6w_2+5w_3+-12w_4+3w_3+-3w_6+2w_7+-2w_8=301w1+6w2+5w3+12w4+3w3+3w6+2w7+2w8=30

5w1+−2w2+3w3+10w4+5w5+11w6+4w7+−8w8=1265w_1+-2w_2+3w_3+10w_4+5w_5+11w_6+4w_7+-8w_8=1265w1+2w2+3w3+10w4+5w5+11w6+4w7+8w8=126

−15w1+−15w2+−8w3+−15w4+7w5+−4w6+−12w7+2w8=126-15w_1+-15w_2+-8w_3+-15w_4+7w_5+-4w_6+-12w_7+2w_8=12615w1+15w2+8w3+15w4+7w5+4w6+12w7+2w8=126

11w1+−10w2+−2w3+4w4+3w5+−9w6+−6w7+7w8=−8711w_1+-10w_2+-2w_3+4w_4+3w_5+-9w_6+-6w_7+7w_8=-8711w1+10w2+2w3+4w4+3w5+9w6+6w7+7w8=87

−14w1+4w3+−3w4+5w5+10w6+13w7+7w8=422-14w_1+4w_3+-3w_4+5w_5+10w_6+13w_7+7w_8=42214w1+4w3+3w4+5w5+10w6+13w7+7w8=422

−3w1+−7w2+−2w3+−8w4+−6w6+−5w7+−9w8=−309-3w_1+-7w_2+-2w_3+-8w_4+-6w_6+-5w_7+-9w_8=-3093w1+7w2+2w3+8w4+6w6+5w7+9w8=309

解出 权重 w(w1,w2...w8)w(w_1,w_2...w_8)w(w1,w2...w8) 然后带入即可求出karen的健康程度
权重即重要程度,某一项的权重越大说明它影响最终健康的程度越大
但是这有一个前提:这个八元一次方程组得有解才行
因此我们还是按照损失最小的思路来求权重 w(w1,w2...w8)w(w_1,w_2...w_8)w(w1,w2...w8)

多元线性回归:

y,=w1x1+w2x2+....wnxn+by^,=w_1x_1+w_2x_2+....w_nx_n+by,=w1x1+w2x2+....wnxn+b
b是截距,我们也可以使用w0w_0w0来表示只要是个常量就行
y,=w1x1+w2x2+....wnxn+w0y^,=w_1x_1+w_2x_2+....w_nx_n+w_0y,=w1x1+w2x2+....wnxn+w0
y,=w1x1+w2x2+....wnxn+w0∗1y^,=w_1x_1+w_2x_2+....w_nx_n+w_0*1y,=w1x1+w2x2+....wnxn+w01
那么损失函数就是
loss=[(y1−y1,)2+(y2−y2,)2+....(yn−yn,)2]/nloss=[(y_1-y_1^,)^2+(y_2-y_2^,)^2+....(y_n-y_n^,)^2]/nloss=[(y1y1,)2+(y2y2,)2+....(ynyn,)2]/n
如何求得对应的W(w1,w2..w0)W{(w_1,w_2..w_0)}W(w1,w2..w0) 使得loss最小呢?
数学家高斯给出了答案,就是最小二乘法。


5. 最小二乘法(OLS)

h(x)=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6+w7x7+w8x8+w0x0h(x)=w_1x_1+w_2x_2+w_3x_3+w_4x_4+w_5x_5+w_6x_6+w_7x_7+w_8x_8+w_0x_0h(x)=w1x1+w2x2+w3x3+w4x4+w5x5+w6x6+w7x7+w8x8+w0x0

loss=[(h1(x)−y1)2+(h2(x)−y2)2+...(hn(x)−yn)2]/n=1n∑i=1n(h(xi)−yi)2=1n∣∣(XW−y)∣∣2=12∣∣(XW−y)∣∣2这就是传说中的最小二乘法公式∣∣A∣∣2是欧几里得范数的平方 也就是每个元素的平方相加loss=[(h_1(x)-y_1)^2+(h_2(x)-y_2)^2+...(h_n(x)-y_n)^2]/n\\=\frac{1}{n} \textstyle\sum_{i=1}^{n}(h(x_{i})-y_{i})^{2}\\=\frac{1}{n}||(XW-y)||^2\\=\frac{1}{2}||(XW-y)||^2 这就是传说中的最小二乘法公式 \\ ||A||^2 是欧几里得范数的平方\,也就是每个元素的平方相加loss=[(h1(x)y1)2+(h2(x)y2)2+...(hn(x)yn)2]/n=n1i=1n(h(xi)yi)2=n1∣∣(XWy)2=21∣∣(XWy)2这就是传说中的最小二乘法公式∣∣A2是欧几里得范数的平方也就是每个元素的平方相加

但求得最合适的w还需对其求导,这里使用链式求导,(推荐,因为后期深度学习全是这种):

内部函数是f(W)=XW−yf(W) = XW - yf(W)=XWy,外部函数是 g(u)=12u2g(u) = \frac{1}{2} u^2g(u)=21u2,其中 u=f(W)u = f(W)u=f(W)

外部函数的导数:∂g∂u=u=XW−y\frac{\partial g}{\partial u} = u = XW - yug=u=XWy

内部函数的导数:∂f∂W=XT\frac{\partial f}{\partial W} = X^TWf=XT

应用链式法则,我们得到最终的梯度:∂L∂W=(∂g∂u)(∂f∂W)=(XW−y)XT\frac{\partial L}{\partial W} = \left( \frac{\partial g}{\partial u} \right) \left( \frac{\partial f}{\partial W} \right) = (XW - y) X^TWL=(ug)(Wf)=(XWy)XT

有了W,回到最初的问题:
求如果karen的各项指标是:
被爱:11 学习指数:14 抗压指数:8 运动指数:10 饮食水平:5 金钱:10 权利:8 压力:1
那么karen的健康程度是多少?
分别用W各项乘以新的X 就可以得到y健康程度

5.1 矩阵公式关键

  • 权重解:W=(XTX)−1XTyW=(X^TX)^{-1}X^TyW=(XTX)1XTy
  • 需确保 XTXX^T XXTX 可逆(否则需正则化)

5.3 Scikit-Learn 实现

from sklearn.linear_model import LinearRegressionmodel = LinearRegression()
model.fit(X_train, y_train)  # 训练模型
y_pred = model.predict(X_test)  # 预测

5.4 示例代码(含可视化)

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression# 生成数据
X = np.array([[1], [2], [3]])
y = np.array([2, 4, 5])# 训练模型
model = LinearRegression()
model.fit(X, y)# 可视化
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict(X), color='red')
plt.title('Linear Regression Fit')
plt.show()

6. 梯度下降(GD):迭代优化法

当特征维度高、数据量大时,最小二乘法计算成本过高,梯度下降成为更优选择。

6.1 核心概念

通过迭代调整权重,逐步逼近损失函数最小值。
形象比喻:在山顶蒙眼下山,每步沿最陡峭方向前进。

6.2 梯度下降步骤

在这里插入图片描述
梯度下降流程就是“猜"正确答案的过程:

1、Random随机数生成初始W,随机生成一组成正太分布的数值w0,w1,w2....wnw_0,w_1,w_2....w_nw0,w1,w2....wn,这个随机是成正太分布的(高斯说的)

2、求梯度g,梯度代表曲线某点上的切线的斜率,沿着切线往下就相当于沿着坡度最陡峭的方向下降.

3、if g < 0,w变大,if g >0,w变小(目标左边是斜率为负右边为正 )

4、判断是否收敛,如果收敛跳出迭代,如果没有达到收敛,回第2步再次执行2~4步收敛的判断标准是:随着迭代进行查看损失函数Loss的值,变化非常微小甚至不再改变,即认为达到收敛

5.上面第4步也可以固定迭代次数

在这里插入图片描述
在这里插入图片描述
随机给一个w初始值,然后就不停的修改它,直到达到抛物线最下面附近,比如

w=0.2

w=w-0.01*w为0.2时的梯度(导数) 假设算出来是 0.24

w=w-0.01*w为0.24时的梯度(导数) 假设算出来是 0.33

w=w-0.01*w为0.33时的梯度(导数) 假设算出来是 0.51

w=w-0.01*w为0.51时的梯度(导数) 假设算出来是 0.56

w=w-0.01*w为0.56时的梯度(导数) 假设算出来是 0.58

w=w-0.01*w为0.58时的梯度(导数) 假设算出来是 0.62

就这样一直更新下去,会在真实值附近,我们可以控制更新的次数
关于随机的w在左边和右边问题:

因为导数有正负

如果在左边 导数是负数 减去负数就是加 往右移动

如果在右边 导数是正数 减去正数就是减 往左移动

6.3 学习率(α)的重要性

  • α 过大:跳过最优解,无法收敛
  • α 过小:收敛速度极慢
  • 实践建议:尝试 0.001、0.01、0.1 等值
    在这里插入图片描述

6.4 手写梯度下降实现

我们自己用代码亲自实现一遍梯度下降,之后使用API时就明白它底层的核心实现过程了.

1.假设损失函数是只有一个w1w_1w1特征的抛物线:

loss(w1)=(w1−3.5)2−4.5w1+10loss(w_1)=(w_1-3.5)^2-4.5w_1+10loss(w1)=(w13.5)24.5w1+10
在这里插入图片描述
我们要求解这个抛物线最小值时的横坐标w1w_1w1的值

#1.列损失函数 画出函数图像
loss=lambda w_1:(w_1-3.5)**2-4.5*w_1+10
w_1=np.linspace(0,11.5,100)
plt.plot(w_1,loss(w_1))
#2.求这个损失函数的最小值:梯度下降
def cb():g=lambda w_1:2*(w_1-3.5)-4.5#导函数t0,t1=1,100    alpha=t0/t1#学习率,设置大和过大会导致震荡或者无法收敛w_1=np.random.randint(0,10,size=1)[0]#随机初始值#控制更新次数for i in range(1000):alpha=t0/(i+t1)#控制学习率 逐步变小w_1=w_1-alpha*g(w_1)#梯度下降公式print("更新后的w_1:",w_1)
cb()

6.5 Scikit-Learn 实现

官方的梯度下降API常用有三种:
批量梯度下降BGD(Batch Gradient Descent)
小批量梯度下降MBGD(Mini-BatchGradient Descent)
随机梯度下降SGD(Stochastic Gradient Descent)。
在这里插入图片描述
三种梯度下降有什么不同呢?

  • Batch Gradient Descent (BGD): 在这种情况下,每一次迭代都会使用全部的训练样本计算梯度来更新权重。这意味着每一步梯度更新都是基于整个数据集的平均梯度。这种方法的优点是每次更新的方向是最准确的,但缺点是计算量大且速度慢,尤其是在大数据集上。
  • Mini-Batch Gradient Descent (MBGD): 这种方法介于批量梯度下降和随机梯度下降之间。它不是用全部样本也不是只用一个样本,而是每次迭代从数据集中随机抽取一小部分样本(例如,从500个样本中选取32个),然后基于这一小批样本的平均梯度来更新权重。这种方法在准确性和计算效率之间取得了一个平衡。
  • Stochastic Gradient Descent (SGD): 在随机梯度下降中,每次迭代仅使用随机单个样本(或有时称为“例子”)来计算梯度并更新权重。这种方法能够更快地收敛,但由于每次更新都基于单个样本,所以会导致权重更新路径不稳定。
from sklearn.linear_model import SGDRegressormodel = SGDRegressor(learning_rate='constant', eta0=0.01)
model.fit(X_train, y_train)

梯度下降变体对比

类型批量大小速度稳定性适用场景
BGD全批量(m)小数据集
SGD单样本(1)低(震荡)大规模在线学习
MBGD小批量(b)最常用(b=32/64)

6.9 梯度下降优化技巧

  1. 动量(Momentum)
    v = β*v + (1-β)*gradient
    w = w - α*v
    加速收敛,减少震荡

  2. 自适应学习率

    • AdaGrad:为每个参数调整 α
    • RMSProp:解决 AdaGrad 学习率衰减问题
    • Adam(最常用):结合 Momentum 和 RMSProp
  3. 标准化:前期数据的预处理
    正则化:防止过拟合


关键总结

  1. 回归预测连续值,线性回归假设线性关系
  2. MSE是常用损失函数,通过最小化MSE求解模型
  3. 最小二乘法求解析解,梯度下降求数值解
  4. 学习率是梯度下降的核心超参数
  5. MBGD在实践中最常用,Adam是最流行的优化器

理解线性回归不仅能解决实际问题,更是学习深度学习、支持向量机等复杂模型的基石。掌握其数学本质和实现细节,才能在机器学习道路上走得更远。

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

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

相关文章

OneCodeServer 架构深度解析:从组件设计到运行时机制

一、架构概览与设计哲学1.1 系统定位与核心价值OneCodeServer 作为 OneCode 平台的核心服务端组件&#xff0c;是连接前端设计器与后端业务逻辑的桥梁&#xff0c;提供了从元数据定义到应用程序执行的完整解决方案。它不仅是一个代码生成引擎&#xff0c;更是一个全生命周期管理…

Jwts用于创建和验证 ​​JSON Web Token(JWT)​​ 的开源库详解

Jwts用于创建和验证 ​​JSON Web Token&#xff08;JWT&#xff09;​​ 的开源库详解在 Java 开发中&#xff0c;提到 Jwts 通常指的是 ​​JJWT&#xff08;Java JWT&#xff09;库​​中的核心工具类 io.jsonwebtoken.Jwts。JJWT 是一个专门用于创建和验证 ​​JSON Web To…

如果发送的数据和接受的数据不一致时,怎么办?

那ART4222这个板卡举例&#xff0c;我之间输入一个原始数据“6C532A14”&#xff0c;但是在选择偶校验时&#xff0c;接收的是“6C532B14”&#xff0c;我发送的码率&#xff08;运行速度&#xff09;是100000&#xff0c;但接受的不稳定&#xff0c;比如&#xff1b;“100100.…

ISCC认证:可持续生产的新标杆。ISCC如何更快认证

在全球可持续发展浪潮中&#xff0c;ISCC&#xff08;国际可持续与碳认证&#xff09;体系已成为企业绿色转型的重要工具。这一国际公认的认证系统覆盖农业、林业、废弃物处理等多个领域&#xff0c;通过严格的可持续性标准、供应链可追溯性要求和碳排放计算规范&#xff0c;建…

想对学习自动化测试的一些建议

Python接口自动化测试零基础入门到精通&#xff08;2025最新版&#xff09;接触了不少同行&#xff0c;由于他们之前一直做手工测试&#xff0c;现在很迫切希望做自动化测试&#xff0c;其中不乏工作5年以上的人。 本人从事软件自动化测试已经近5年&#xff0c;从server端到web…

电子电气架构 ---智能电动汽车嵌入式软件开发过程中的block点

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

createAsyncThunk

下面&#xff0c;我们来系统的梳理关于 Redux Toolkit 异步操作&#xff1a;createAsyncThunk 的基本知识点&#xff1a;一、createAsyncThunk 概述 1.1 为什么需要 createAsyncThunk 在 Redux 中处理异步操作&#xff08;如 API 调用&#xff09;时&#xff0c;传统方法需要手…

STM32F103C8T6 BC20模块NBIOT GPS北斗模块采集温湿度和经纬度发送到EMQX

云平台配置 访问下载页面&#xff1a;免费试用 EMQX Cloud 或 EMQX Enterprise | 下载 EMQX&#xff0c;根据需求选择对应版本下载。将下载的压缩包上传至服务器&#xff08;推荐存放于C盘根目录&#xff0c;便于后续操作&#xff09;&#xff0c;并解压至指定路径&#xff08…

YOLO11涨点优化:自研检测头, 新创新点(SC_C_11Detect)检测头结构创新,实现有效涨点

目标检测领域迎来重大突破!本文揭秘原创SC_C_11Detect检测头,通过空间-通道协同优化与11层深度结构,在YOLO系列上实现mAP最高提升5.7%,小目标检测精度暴涨9.3%!创新性结构设计+即插即用特性,为工业检测、自动驾驶等场景带来革命性提升! 一、传统检测头的三大痛点 在目…

OSCP 考试期间最新考试政策

根据 Offensive Security 官方最新考试政策&#xff08;2025 年 7 月&#xff09;&#xff0c;OSCP 考试期间禁止或严格限制以下工具与行为&#xff1a; 一、绝对禁止使用的工具/服务 类别举例说明商业/付费版本Metasploit Pro、Burp Suite Pro、Cobalt Strike、Canvas、Core …

如何基于MQ实现分布式事务

文章目录1.可靠消息最终一致性1.1 本地消息表1.1.1 本地消息表的优缺点1.消息堆积&#xff0c;扫表慢2.集中式扫表&#xff0c;会影响正常业务3.定时扫表的延迟问题1.1.2 本地消息表的代码实践1.表结构设计2.具体业务实现1.2 事务消息1.2.1 事务消息的三个阶段阶段1&#xff1a…

ARM学习(45)AXI协议总线学习

笔者来介绍一下ARM AMBA 总线中的AXI协议 1、简介 ARM 公司推出的AMBA 总线(Advanced Microcontroller Bus Architecture) ,目前已经推出到AMBA5版本。主要包括 APB:Advanced Peripheral Bus,针对外设 AHB:Advanced High-Performance Bus,高性能总线,支持64/128 位多管…

Visual C++与HGE游戏引擎:创建伪2.5D斜45度视角游戏

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;本教程专注讲解如何结合Visual C和HGE游戏引擎构建一个斜45度视角的伪2.5D游戏世界。HGE提供了DirectX的接口&#xff0c;简化了图形和音频处理&#xff0c;使得开发者可以专注于游戏逻辑和视觉效果的实现。教程…

打造个人数字图书馆:LeaNote+cpolar如何成为你的私有化知识中枢?

文章目录前言1. 安装Docker2. Docker本地部署Leanote蚂蚁笔记3. 安装cpolar内网穿透4. 固定Leanote蚂蚁笔记公网地址前言 在信息爆炸的时代&#xff0c;如何系统管理知识资产并实现价值输出&#xff1f;蚂蚁笔记&#xff08;Leanote&#xff09;提供了一种全新解决方案。这款开…

[特殊字符]️ 整个键盘控制无人机系统框架

&#x1f3af; 五大核心模块详解1. &#x1f4e5; 输入处理模块keyboard_control_node ├── 功能&#xff1a;捕获键盘输入并转换为ROS消息 ├── 文件&#xff1a;keyboard_control.cpp ├── 输入&#xff1a;键盘按键 (W/A/S/D/R/F/Q/E/L/ESC) ├── 输出&#xff1a;g…

机器学习第三课之逻辑回归(三)LogisticRegression

目录 简介 1.下采样 2.过采样 简介 接上两篇篇博客最后&#xff0c;我们使用了K折交叉验证去寻找最合适的C值&#xff0c;提升模型召回率&#xff0c;对于选取C的最优值&#xff0c;我们就要把不同C值放到模型里面训练&#xff0c;然后用验证集去验证得到结果进行比较&#x…

1.Java语言有什么特点

1.Java语言有什么特点 1.面向对象编程&#xff0c;拥有封装&#xff0c;继承和多态的特性&#xff0c;所有可以很好的设计出低耦合的项目工程。 2.很好的可移植性&#xff0c;在Java中有java虚拟机&#xff08;JVM&#xff09;的支持&#xff0c;每写一个类都是.Class文件。J…

部署 Kibana 8.2.2 可视化管理 Elasticsearch 8.2.2 集群

✅ 适用版本&#xff1a;Elasticsearch 8.2.2 Kibana 8.2.2 一、环境准备 组件版本示例地址Elasticsearch8.2.2192.168.130.61:9200, 192.168.130.62:9200, 192.168.130.65:9200Kibana8.2.2部署在 192.168.130.651操作系统CentOS 7⚠️ 严格版本匹配&#xff1a;Kibana 8.2.2…

7.2 I/O接口 (答案见原书 P305)

第7章 输入/输出系统 7.1 I/O系统基本概念 (答案见原书 P301) & 7.2 I/O接口 (答案见原书 P305) 01. 在统一编址的方式下,区分存储单元和I/O设备是靠( A )。 题目原文 在统一编址的方式下,区分存储单元和I/O设备是靠( )。 A. 不同的地址码 B. 不同的地址线 C. 不同…

并发编程常用工具类(上):CountDownLatch 与 Semaphore 的协作应用

在 Java 并发编程领域&#xff0c;JDK 提供的工具类是简化多线程协作的重要武器。这些工具类基于 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;框架实现&#xff0c;封装了复杂的同步逻辑&#xff0c;让开发者无需深入底层即可实现高效的线程协作。本文作为并发工具…