預測分析(二):基于機器學習的數值預測

文章目錄

  • 基于機器學習的數值預測
    • 機器學習簡介
      • 監督學習的任務
      • 創建第一個機器學習模型
      • 機器學習的目標——泛化
      • 過擬合現象
      • 評價函數與最優化
    • 建模前的數據處理
      • 進一步特征變換
    • 多元線性回歸模型
    • LASSO回歸
    • kNN
      • 算法原理
      • 算法步驟
      • k值的選擇

基于機器學習的數值預測

機器學習是人工智能的核心領域,通過算法讓計算機從數據中自動學習規律并完成預測或決策任務。其核心思想是“經驗提升性能”,核心流程包括數據預處理、模型訓練、評估與優化。

監督學習
需使用標注數據(輸入+明確標簽),目標是建立輸入到輸出的映射關系。

  • 分類任務:如垃圾郵件識別(標簽:是/否)
  • 回歸任務:如房價預測(標簽:連續數值)
    常用算法:決策樹、支持向量機(SVM)、神經網絡(如CNN用于圖像分類)

無監督學習
處理無標簽數據,目標是發現數據內在結構或模式。

  • 聚類:如客戶分群(K-means算法)
  • 降維:如PCA提取數據主成分
  • 關聯規則:如購物籃分析(啤酒與尿布的經典案例)

強化學習
智能體通過與環境的動態交互學習策略,以最大化累積獎勵。

  • 核心要素:狀態、動作、獎勵、策略
  • 典型應用:游戲AI(AlphaGo)、機器人控制
  • 算法示例:Q-learning、深度強化學習(DQN、PPO)

三者對比

類型數據類型學習目標典型應用場景
監督學習帶標簽數據輸入輸出映射圖像分類、語音識別
無監督學習無標簽數據發現數據結構客戶分群、異常檢測
強化學習環境交互反饋優化序列決策自動駕駛、游戲AI

當前機器學習正朝著多模態學習(結合文本、圖像等)、小樣本學習(少數據下訓練)、可解釋性AI等方向發展,在醫療、金融、智能制造等領域持續產生變革性影響。


機器學習簡介

監督學習的任務

監督學習的任務一般有兩種類型:回歸和分類。它們的區別很明顯,依據是目標的類型

  • 回歸:對應著目標是一個數值特征的情形。
  • 分類:對應著目標是一個分類特征的情形。
    • 二元分類:非黑即白的
    • 多元分類:目標的類別多于兩個
    • 多標簽分類:多個類別或標簽指派向一個結果

創建第一個機器學習模型

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# 生成一些示例數據
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 創建線性回歸模型
model = LinearRegression()# 訓練模型
model.fit(X_train, y_train)# 進行預測
y_pred = model.predict(X_test)# 計算均方誤差
mse = mean_squared_error(y_test, y_pred)
print(f"均方誤差: {mse}")# 打印模型參數
print(f"截距: {model.intercept_[0]}")
print(f"斜率: {model.coef_[0][0]}")

機器學習的目標——泛化

預測分析的目的就是預測未知事件。應用機器學習的過程就是找到特征與目標的關系。這也是機器學習的目的。換言之:

機器學習是為了使用樣本點盡量逼近這個未知函數!

所以泛化是什么?泛化就是從數據中學到的算法推廣到樣本之外的點
如何檢驗模型的泛化能力呢?使用交叉驗證,一般是使用 hold-out \textit{hold-out} hold-out方法,把數據集合分為兩部分:

  • 數據集:進行學習的集合,用來訓練模型的部分數據。
  • 測試集:評價集合,驗證結果怎么樣?是否符合實際。

過擬合現象

這種情況的發生是因為模型對訓練集適應得太好,甚至開始學習一些訓練集的無效噪聲。
相應的:還有欠擬合,良好的學習和過擬合。

  1. 欠擬合
  • 定義:指模型未能學習到數據中的模式和規律,對訓練數據的擬合程度較差,在訓練集和測試集上的表現都不佳。
  • 產生原因
    • 模型復雜度不夠:例如使用線性模型去擬合非線性的數據,模型無法捕捉數據中的復雜關系。
    • 特征不足:沒有提供足夠的特征讓模型學習,導致模型無法全面了解數據的特性。
    • 訓練時間過短:模型還沒有充分學習到數據的特征就停止訓練。
  • 解決辦法
    • 增加模型復雜度:比如從簡單的線性模型轉換為多項式模型。
    • 添加更多特征:挖掘更多與目標變量相關的特征。
    • 延長訓練時間:讓模型有更多的時間去學習數據中的規律。
  1. 良好的學習
  • 定義:模型能夠很好地學習到數據中的一般模式,既不會過于簡單而忽略重要信息,也不會過于復雜而學習到噪聲。在訓練集和測試集上都能有較好的表現,泛化能力強。
  • 特點
    • 誤差平衡:訓練誤差和測試誤差都比較小,且兩者之間的差距不大。
    • 泛化能力強:對于未見過的數據,模型也能做出準確的預測。
  • 實現途徑
    • 選擇合適的模型:根據數據的特點和問題的復雜度,選擇恰當的模型結構。
    • 合理調整超參數:通過交叉驗證等方法,找到最優的超參數組合。
    • 數據預處理:對數據進行清洗、歸一化等操作,提高數據質量。
  1. 過擬合
  • 定義:模型對訓練數據擬合得過于精確,不僅學習到了數據中的真實模式,還學習到了訓練數據中的噪聲和隨機波動。在訓練集上表現很好,但在測試集上表現不佳,泛化能力差。
  • 產生原因
    • 模型復雜度太高:模型有過多的參數,能夠完美地擬合訓練數據,但對新數據缺乏適應性。
    • 訓練數據量太少:模型容易記住訓練數據中的細節,而無法學習到普遍規律。
    • 特征過多:包含了一些與目標變量無關或冗余的特征,導致模型學習到錯誤的信息。
  • 解決辦法
    • 減少模型復雜度:簡化模型結構,例如減少神經網絡的層數或神經元數量。
    • 增加訓練數據:收集更多的數據,讓模型學習到更廣泛的模式。
    • 正則化:在損失函數中添加正則化項,限制模型參數的大小,防止模型過擬合。
    • 特征選擇:選擇最相關的特征,去除無關或冗余的特征。

直觀理解
可以用一個比喻來理解這三種狀態。假設你要畫一幅貓的畫像,欠擬合就像是只畫出了一個模糊的輪廓,根本看不出是貓;良好的學習是畫出了一只栩栩如生的貓,既抓住了貓的主要特征,又不過于追求細節;過擬合則是在畫像上把貓身上的每一根毛發都畫出來了,雖然在這只特定的貓上畫得很精確,但換一只貓就完全不適用了。

評價函數與最優化

在機器學習中,評價函數(損失函數、代價函數)用于衡量模型預測結果與真實值之間的差異,而最優化則是通過不斷調整模型的參數,使得評價函數的值達到最小(或最大)。

不同的任務類型(如分類、回歸)適用不同的評價函數。

  1. 回歸任務
  • 均方誤差(MSE, Mean Squared Error):計算預測值與真實值之間誤差平方的平均值。公式為 M S E = 1 n ∑ i = 1 n ( y i ? y ^ i ) 2 MSE=\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^{2} MSE=n1?i=1n?(yi??y^?i?)2,其中 y i y_{i} yi? 是真實值, y ^ i \hat{y}_{i} y^?i? 是預測值, n n n 是樣本數量。MSE 對異常值比較敏感,因為誤差的平方會放大異常值的影響。
  • 平均絕對誤差(MAE, Mean Absolute Error):計算預測值與真實值之間誤差絕對值的平均值。公式為 M A E = 1 n ∑ i = 1 n ∣ y i ? y ^ i ∣ MAE=\frac{1}{n}\sum_{i = 1}^{n}|y_{i}-\hat{y}_{i}| MAE=n1?i=1n?yi??y^?i?。MAE 對異常值的魯棒性比 MSE 強。
  • 均方根誤差(RMSE, Root Mean Squared Error):RMSE 是 MSE 的平方根,即 R M S E = 1 n ∑ i = 1 n ( y i ? y ^ i ) 2 RMSE=\sqrt{\frac{1}{n}\sum_{i = 1}^{n}(y_{i}-\hat{y}_{i})^{2}} RMSE=n1?i=1n?(yi??y^?i?)2 ?。它的單位與目標變量的單位相同,更直觀地反映了預測誤差的大小。
  1. 分類任務
  • 準確率(Accuracy):分類正確的樣本數占總樣本數的比例。公式為 A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy=\frac{TP + TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN?,其中 T P TP TP 是真正例, T N TN TN 是真反例, F P FP FP 是假正例, F N FN FN 是假反例。當樣本類別不平衡時,準確率可能無法很好地反映模型的性能。
  • 精確率(Precision):預測為正例的樣本中,實際為正例的比例。公式為 P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP + FP} Precision=TP+FPTP?。精確率主要關注預測為正例的準確性。
  • 召回率(Recall):實際為正例的樣本中,被預測為正例的比例。公式為 R e c a l l = T P T P + F N Recall=\frac{TP}{TP + FN} Recall=TP+FNTP?。召回率主要關注模型對正例的識別能力。
  • F1 值:精確率和召回率的調和平均數,公式為 F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1=\frac{2\times Precision\times Recall}{Precision + Recall} F1=Precision+Recall2×Precision×Recall?。F1 值綜合考慮了精確率和召回率,在兩者之間取得平衡。
  1. 最優化方法
    最優化的目標是找到使評價函數最小化(或最大化)的模型參數。常見的最優化方法有:
  • 梯度下降法:通過迭代更新模型參數,沿著評價函數的負梯度方向更新參數,使得評價函數的值逐漸減小。
  • 隨機梯度下降法(SGD):每次只使用一個樣本的梯度來更新參數,計算效率高,適用于大規模數據集。
  • 批量梯度下降法:使用所有樣本的梯度來更新參數,更新方向更準確,但計算成本高。

評價多個預測模型的好壞
可以按照以下步驟評價多個預測模型的好壞:

  1. 數據劃分:將數據集劃分為訓練集、驗證集和測試集。訓練集用于模型訓練,驗證集用于調整模型的超參數,測試集用于最終評估模型的性能。
  2. 模型訓練:使用訓練集對每個模型進行訓練,并通過驗證集調整模型的超參數。
  3. 模型評估:使用測試集計算每個模型的評價指標(如上述的 MSE、Accuracy 等)。
  4. 結果比較:比較各個模型的評價指標,選擇在評價指標上表現最優的模型。
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import mean_squared_error# 生成一些示例數據
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 線性回歸模型
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
linear_pred = linear_model.predict(X_test)
linear_mse = mean_squared_error(y_test, linear_pred)# 決策樹回歸模型
tree_model = DecisionTreeRegressor()
tree_model.fit(X_train, y_train)
tree_pred = tree_model.predict(X_test)
tree_mse = mean_squared_error(y_test, tree_pred)# 輸出結果
print(f"線性回歸模型的均方誤差: {linear_mse}")
print(f"決策樹回歸模型的均方誤差: {tree_mse}")if linear_mse < tree_mse:print("線性回歸模型表現更好")
else:print("決策樹回歸模型表現更好")

建模前的數據處理

對于數據處理,我們這里使用scikit-learn

進一步特征變換

數據的使用方式不同,模型收到的影響不同,因此不僅要將數據導入模型,提供數據的方式也要是最佳的。例如:對預測變量的偏度進行光滑處理,或變換離群點,這些處理都有益于學習模型。
準備數據有兩種方法:

  • 無監督預處理(包括那些在進行計算時不考慮目標的技術)
  • 有監督預處理

現在我們創建一個包含特征值的矩陣,從而可以使用標準的機器學習符號,特征值稱為 x x x,目標稱為 y y y。創建這些變量之前應該要對分類變量使用one-hot編碼格式,理由之一就是scikit-learn只接收數值。scikit-learn不能直接提供分類數據。

  1. 訓練-測試分割
    在使用hold-out交叉驗證方法的時候,一般訓練使用 60 % 60\% 60% ~ 85 85 85 % \% %的數據,其余部分留給測試。常用的數據集分割比是 80 % 80\% 80%。這里可以使用scikit-learn提供隨機分割的函數:
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.1,random_state=123)
  1. 使用PCA數據降維
    降維是基于大量特征提取少量特征的過程,這些少量特征需要盡量保留原始特征的大部分信息。

最主流的降維分析技術是主成分分析。PCA的核心原理:
目標
找到一組正交的主成分(Principal Components),使得數據在這些主成分上的方差最大,從而用盡可能少的維度保留數據的主要信息。

from sklearn.decomposition imoprt PCA
pca = PCA(n_components = 3,random_state=123)
pca.fit(X_train[['x','y','z']])
princ_comp = pca.transform(X_train['x','y','z'])

我們還可以看出來各個成分捕捉了多少的方差信息:

pca.explained_variance_ratio_.round(3)

現在我們要保留第一主成分:

from sklearn.decomposition imoprt PCA
pca = PCA(n_components = 1,random_state=123)
pca.fit(X_train[['x','y','z']])
X_train['dim_index']=pca.transform(X_train[['x','y','z']]).flatten()
X_train.drop(['x','y','z'],axis=1,inplace=True)
  1. 對數據進行標準化
    由于很多的數據是不一定滿足正態分布的,但是我們在使用這樣的數據投入到機器學習中的時候會造成執行效果很糟糕,所以我們要對數值特征進行標準化。
numerical_features=['carat','depth','table','dim_index']
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fix(X_train[numercial_features])
X_train.loc[:,numerical_features] = scaler.transform(X_train[numercial_features])

多元線性回歸模型

多元線性回歸模型是所有模型之母。

y p r e d = ω 0 + ∑ i = 1 k ω i x i y_{pred}=\omega_0+\sum_{i=1}^{k}\omega_ix_i ypred?=ω0?+i=1k?ωi?xi?
我們需要做的只是:

R S S m i n = ∑ i = 1 N ( y i ? y p r e d ) 2 RSS_{min}=\sum_{i=1}^{N}\left(y_i -y_{pred}\right)^2 RSSmin?=i=1N?(yi??ypred?)2

現在對模型進行評價:

M S E = 1 N ∑ i = 1 N ( y i ? y p r e a d ) 2 MSE=\frac{1}{N}\sum_{i=1}^{N}\left(y_i-y_{pread}\right)^2 MSE=N1?i=1N?(yi??ypread?)2

LASSO回歸

找到下式的最小化權重組合:

1 2 N ∑ i = 1 N ( y i ? y p r e d ) + α ∑ k = 1 P ∣ ω k ∣ , 0 ≤ α \frac{1}{2N}\sum_{i=1}^N \left( y_i-y_{pred}\right)+\alpha \sum_{k=1}^{P}\left|\omega_k\right| ,0 \le \alpha 2N1?i=1N?(yi??ypred?)+αk=1P?ωk?,0α

總之最后的最后,我們可以得到一個權重,然后里面有幾個是零,就把一些影響比較小的項給自動排除了。

kNN

k k k近鄰 ( k ? N e a r e s t N e i g h b o r s , k N N ) (k-Nearest Neighbors,kNN) k?NearestNeighborskNN算法是一種基本且常用的監督學習算法,可用于分類和回歸任務。以下是關于kNN算法的詳細介紹:

算法原理

kNN算法的核心思想基于“近朱者赤,近墨者黑”的理念。對于一個待預測的樣本,它會在訓練數據集中找到與該樣本距離最近的k個樣本,然后根據這k個樣本的類別(分類任務)或者數值(回歸任務)來進行預測。

  • 分類任務:在分類問題中,通常采用“多數表決”的方式,即這k個最近鄰樣本中哪個類別出現的次數最多,就將待預測樣本歸為該類別。
  • 回歸任務:在回歸問題中,會取這k個最近鄰樣本的目標值的平均值作為待預測樣本的預測值。

算法步驟

  1. 數據準備:收集并整理訓練數據集,包含特征和對應的標簽(分類任務)或目標值(回歸任務)。
  2. 計算距離:對于待預測樣本,計算它與訓練數據集中每個樣本的距離。
  3. 選擇k值:確定k的大小,即選擇最近鄰的樣本數量。
  4. 找到最近鄰:根據計算得到的距離,選擇距離待預測樣本最近的k個樣本。
  5. 進行預測
    • 分類任務:統計這k個樣本中各個類別的數量,將待預測樣本歸為數量最多的類別。
    • 回歸任務:計算這k個樣本目標值的平均值,作為待預測樣本的預測值。

k值的選擇

k值的選擇對kNN算法的性能有重要影響:

  • 較小的k值:模型的復雜度較高,對局部數據的敏感度高,容易受到噪聲的影響,可能會導致過擬合。例如,當 k = 1 k = 1 k=1時,模型只根據最近的一個樣本進行預測,可能會因為這個樣本是噪聲點而做出錯誤的預測。
  • 較大的k值:模型的復雜度較低,對數據的整體特征更關注,但可能會忽略局部的重要信息,導致欠擬合。例如,當k值接近訓練數據集的大小時,模型會將所有樣本都考慮進來,預測結果會趨近于訓練數據集中的整體分布,無法對新樣本做出準確的預測。

通常可以通過交叉驗證的方法來選擇合適的k值,即嘗試不同的k值,在驗證集上評估模型的性能,選擇性能最優的k值。

下面是一個使用kNN進行分類任務的簡單示例,使用的是鳶尾花數據集:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score# 加載鳶尾花數據集
iris = load_iris()
X = iris.data
y = iris.target# 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 創建kNN分類器,這里k值選擇為5
knn = KNeighborsClassifier(n_neighbors=5)# 訓練模型
knn.fit(X_train, y_train)# 進行預測
y_pred = knn.predict(X_test)# 計算準確率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的準確率: {accuracy}")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75982.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75982.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75982.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

批量壓縮 jpg/png 等格式照片|批量調整圖片的寬高尺寸

圖片格式種類非常的多&#xff0c;并且不同的圖片由于像素、尺寸不一樣&#xff0c;可能占用的空間也會不一樣。文件太大會占用較多的磁盤空間&#xff0c;傳輸及上傳系統都非常不方便&#xff0c;可能會收到限制&#xff0c;因此我們經常會碰到需要對圖片進行壓縮的需求。如何…

生鮮果蔬便利店實體零售門店商城小程序

——線上線下融合賦能社區零售新生態 隨著新零售模式的深化和消費者需求的升級&#xff0c;生鮮果蔬便利店亟需通過數字化工具實現經營效率與用戶體驗的雙重提升。結合線下實體門店與線上商城的一體化小程序&#xff0c;成為行業轉型的核心工具。以下從功能模塊、運營策略及行…

如何開通google Free Tier長期免費云服務器(1C/1G)

Google宣布的一項政策&#xff0c;為標準層級的網絡提供每地域200G的免費流量。兩項政策結合&#xff0c;于是便可以得到一臺1核心、1G內存、30G磁盤、200G流量的小云服務器&#xff0c;可玩性大大提高。這篇文章就分享一下如何正確開機&#xff0c;避免產生額外的費用。 免費…

C# 多線程并發編程基礎

1. 線程基礎 1.1 線程簡介 C# 中的線程是操作系統能夠進行運算調度的最小單位&#xff0c;它被包含在進程中&#xff0c;是進程中的實際運作單位。一個進程可以包含多個線程&#xff0c;這些線程可以并發執行不同的任務。 1.2 線程的創建與啟動 在 C# 中&#xff0c;可以使…

【Introduction to Reinforcement Learning】翻譯解讀2

2.2 馬爾可夫決策過程&#xff08;MDPs&#xff09; 馬爾可夫決策過程&#xff08;MDP&#xff09;為順序決策提供了框架&#xff0c;其中動作不僅影響即時獎勵&#xff0c;還會影響未來結果。與多臂老虎機問題不同&#xff0c;MDP中的即時獎勵與延遲獎勵相平衡。在多臂老虎機…

STM32單片機入門學習——第22節: [7-2] AD單通道AD多通道

寫這個文章是用來學習的,記錄一下我的學習過程。希望我能一直堅持下去,我只是一個小白,只是想好好學習,我知道這會很難&#xff0c;但我還是想去做&#xff01; 本文寫于&#xff1a;2025.04.07 STM32開發板學習——第22節: [7-2] AD單通道&AD多通道 前言開發板說明引用解…

Python高階函數-filter

1. 基本概念 filter() 是Python內置的高階函數&#xff0c;用于過濾序列中的元素。它接收一個函數和一個可迭代對象作為參數&#xff0c;返回一個迭代器&#xff0c;包含使函數返回True的所有元素。 filter(function, iterable)2. 工作原理 惰性計算&#xff1a;filter對象是…

密碼學基礎——分組密碼的運行模式

前面的文章中文我們已經知道了分組密碼是一種對稱密鑰密碼體制&#xff0c;其工作原理可以概括為將明文消息分割成固定長度的分組&#xff0c;然后對每個分組分別進行加密處理。 下面介紹分組密碼的運行模式 1.電碼本模式&#xff08;ECB&#xff09; 2.密碼分組鏈接模式&…

Redlinux(2025.3.29)

1、將你的虛擬機的網卡模式設置為nat模式&#xff0c;給虛擬機網卡配置三個主機位分別為100、200、168的ip地址。(以nmtui命令為例) 2、測試你的虛擬機是否能夠ping通網關和dns&#xff0c;如果不能請修改網關和dns的地址。 首先打開虛擬網絡編輯器查看NAT設置里的網關IP&…

【PalladiumZ2 使用專欄 1 -- 波形 trigger 抓取詳細介紹】

文章目錄 Palladium Z2 OverviewPalladium 波形抓取Palladium 波形存放文件創建Palladium Trigger 斷點設置Palladium 加探針并 dumpPalladium 波形查看 Palladium Z2 Overview Cadence Palladium Z2 是 Cadence 推出的企業級硬件仿真加速平臺&#xff0c;旨在應對復雜 SoC 設…

Redisson分布式鎖:原理、使用

1. Redisson簡介 Redisson是一個基于Redis的Java客戶端庫&#xff0c;提供了豐富的分布式對象和服務&#xff08;如分布式鎖、信號量、Map等&#xff09;。其核心優勢在于??簡化分布式鎖的實現??&#xff0c;并解決了原生Redis分布式鎖的常見問題&#xff08;如死鎖、誤刪…

Java大廠面試題 -- JVM 優化進階之路:從原理到實戰的深度剖析(2)

最近佳作推薦&#xff1a; Java大廠面試題 – 深度揭秘 JVM 優化&#xff1a;六道面試題與行業巨頭實戰解析&#xff08;1&#xff09;&#xff08;New&#xff09; 開源架構與人工智能的融合&#xff1a;開啟技術新紀元&#xff08;New&#xff09; 開源架構的自動化測試策略優…

MySQL學習筆記(四)——DML和DQL

目錄 1. DML 1.1 添加數據 1.1.1 給指定字段添加數據 1.1.2 給全部字段添加數據 1.1.3 批量添加數據 1.2 修改數據 1.3 刪除數據 2. DQL 2.1 基本語法 2.2 基礎查詢 2.2.1 查詢多個字段 2.2.2 字段設置別名 2.2.3 去除重復記錄 2.3 條件查詢 2.4 聚合函數 2.5 …

DeepSeek-MLA

MLA 結構 需要緩存 KV 向量共用的壓縮隱特征K 向量多頭共享的帶位置編碼的向量 為什么帶有位置信息的 Q 向量來自于隱特征向量&#xff0c;而帶有位置的 K 向量來自于 H 向量且共享呢&#xff1f; 最好的方法肯定是從H向量直接計算并且不共享&#xff0c;但是會大大增加顯存使…

檢索增強技術RAG和向量數據庫技術的優勢和劣勢,應用范圍和價值

RAG 和向量數據庫在技術棧中處于不同層級&#xff0c;前者側重生成任務的準確性與動態性&#xff0c;后者專注檢索效率與擴展性。在實際應用中&#xff0c;二者常協同工作&#xff0c;但也可獨立服務于不同場景。企業需根據需求選擇&#xff1a;若需生成內容&#xff0c;RAG 是…

Python爬蟲教程013:使用CrawlSpider爬取讀書網數據并保存到mysql數據庫

文章目錄 3.8 CrawlSpider介紹3.9 CrawlSpider爬取讀書網案例3.9.1 創建項目3.9.2 定義要爬取的數據結構3.9.3 獲取數據3.9.4 保存數據到本地3.9.5 保存數據到mysql數據庫3.9.6 完整項目下載3.8 CrawlSpider介紹 CrawlSpider 是 Scrapy 框架中 最常用的高級爬蟲類之一,用于構…

Three.js 系列專題 5:加載外部模型

內容概述 Three.js 支持加載多種 3D 文件格式(如 GLTF、OBJ、FBX),這讓開發者可以直接使用專業建模軟件(如 Blender、Maya)創建的復雜模型。本專題將重點介紹 GLTF 格式的加載,并調整模型的位置和材質。 學習目標 理解常見 3D 文件格式及其特點。掌握使用 GLTFLoader 加…

P1006 [NOIP 2008 提高組] 傳紙條 題解

題目傳送門 前言 每次準備摸魚時都在這道題的界面。 今天有空做做&#xff0c;順便寫一波題解&#xff0c;畢竟估值蹭蹭往下跳。 雙倍經驗&#xff1a;P1004 [NOIP 2000 提高組] 方格取數&#xff0c;P1006 [NOIP 2008 提高組] 傳紙條。 題意簡述 現有一個 m m m 行 n …

LLM架構解析:長短期記憶網絡(LSTM)(第三部分)—— 從基礎原理到實踐應用的深度探索

本專欄深入探究從循環神經網絡&#xff08;RNN&#xff09;到Transformer等自然語言處理&#xff08;NLP&#xff09;模型的架構&#xff0c;以及基于這些模型構建的應用程序。 本系列文章內容&#xff1a; NLP自然語言處理基礎詞嵌入&#xff08;Word Embeddings&#xff09…

ffmpeg提取字幕

使用ffmpeg -i test.mkv 獲取視頻文件的字幕流信息如下 Stream #0:4(chi): Subtitle: subrip (srt) (default) Metadata: title : chs Stream #0:5(chi): Subtitle: subrip (srt) Metadata: title : cht Stream #0:6(jpn)…