機器學習基石:深入解析線性回歸

線性回歸是機器學習中最基礎、最核心的算法之一,它為我們理解更復雜的模型奠定了基礎。本文將帶你全面解析線性回歸的方方面面。


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^,}y1??y1,? 表示第一個點的真實值和計算值的差值 ,然后把第二個點,第三個點…最后一個點的差值全部算出來

有的點在上面有點在下面,如果直接相加有負數和正數會抵消,體現不出來總誤差,平方后就不會有這個問題了

所以最后:

總誤差(也就是傳說中的損失):

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}(y1??y1,?)2+(y2??y2,?)2+....(yn??yn,?)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ˉ=n1?i=1n?(yi??wxi??b)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=-144?4w1?+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=30?1w1?+?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=126?15w1?+?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=422?14w1?+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=-309?3w1?+?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,=w1?x1?+w2?x2?+....wn?xn?+b
b是截距,我們也可以使用w0w_0w0?來表示只要是個常量就行
y,=w1x1+w2x2+....wnxn+w0y^,=w_1x_1+w_2x_2+....w_nx_n+w_0y,=w1?x1?+w2?x2?+....wn?xn?+w0?
y,=w1x1+w2x2+....wnxn+w0?1y^,=w_1x_1+w_2x_2+....w_nx_n+w_0*1y,=w1?x1?+w2?x2?+....wn?xn?+w0??1
那么損失函數就是
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=[(y1??y1,?)2+(y2??y2,?)2+....(yn??yn,?)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)=w1?x1?+w2?x2?+w3?x3?+w4?x4?+w5?x5?+w6?x6?+w7?x7?+w8?x8?+w0?x0?

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=n1?i=1n?(h(xi?)?yi?)2=n1?∣∣(XW?y)2=21?∣∣(XW?y)2這就是傳說中的最小二乘法公式∣∣A2是歐幾里得范數的平方也就是每個元素的平方相加

但求得最合適的w還需對其求導,這里使用鏈式求導,(推薦,因為后期深度學習全是這種):

內部函數是f(W)=XW?yf(W) = XW - yf(W)=XW?y,外部函數是 g(u)=12u2g(u) = \frac{1}{2} u^2g(u)=21?u2,其中 u=f(W)u = f(W)u=f(W)

外部函數的導數:?g?u=u=XW?y\frac{\partial g}{\partial u} = u = XW - y?u?g?=u=XW?y

內部函數的導數:?f?W=XT\frac{\partial f}{\partial W} = X^T?W?f?=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^T?W?L?=(?u?g?)(?W?f?)=(XW?y)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?)=(w1??3.5)2?4.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
英文地址,請注明出處:http://en.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;讓開發者無需深入底層即可實現高效的線程協作。本文作為并發工具…