數字探秘:用神經網絡解密MNIST數據集中的數字!

用神經網絡解密MNIST數據集中的數字!

    • 一. 介紹
      • 1.1 MNIST數據集簡介
      • 1.2 MLP(多層感知器)模型介紹
      • 1.3 目標:使用MLP模型對MNIST數據集中的0-9數字進行分類
    • 二.數據預處理
      • 2.1 數據集的獲取與加載
      • 2.2 數據集的探索性分析(EDA)
      • 2.3 數據預處理:歸一化、展平圖像數據
    • 三. MLP模型構建
      • 3.1 MLP模型結構介紹
      • 3.2 激活函數選擇
      • 3.3 損失函數和優化算法選擇
      • 3.4 模型訓練
    • 四. 模型性能評估
      • 4.1 分類準確度(Accuracy)評估
      • 4.2 混淆矩陣(Confusion Matrix)分析
      • 4.3 精確率(Precision)、召回率(Recall)和F1分數(F1 Score)計算
      • 4.4 可視化誤差分析
    • 五. 性能改進
      • 5.1 超參數調優
        • 5.1.1 學習率調整
        • 5.1.2 批量大小優化
      • 5.2 模型結構優化
        • 5.2.1 增加隱藏層和神經元數量
        • 5.2.2 正則化技術的應用
      • 5.3 數據增強(Data Augmentation)應用
        • 5.3.1 圖像旋轉、平移和縮放
    • 六. 結論
      • 6.1 模型性能總結
      • 6.2 可能的改進方向
      • 6.3 對于實際應用的啟示

一. 介紹

1.1 MNIST數據集簡介

MNIST(Modified National Institute of Standards and Technology database)是一個經典的手寫數字數據集,常被用來測試機器學習算法的性能。它包含了大約70000張標準化的手寫數字圖像,每張圖像是28x28像素,灰度圖,標記從0到9的數字。這個數據集被廣泛應用于數字識別的研究和實驗中,是深度學習入門和基準測試的常用選擇。
在這里插入圖片描述

1.2 MLP(多層感知器)模型介紹

多層感知器(MLP)是一種經典的前饋人工神經網絡模型,由一個或多個隱藏層組成,每個隱藏層由多個神經元(節點)組成。MLP的每個神經元與前一層的所有神經元相連,每條連接都有一個權重。通常,MLP包括一個輸入層、若干隱藏層和一個輸出層。每一層都通過一個非線性激活函數(如ReLU、sigmoid等)來處理輸入數據,以產生非線性的模型輸出。

MLP適合處理結構化數據,特別是在特征之間存在復雜關系或需要進行非線性映射時表現良好。在數字分類問題中,MLP通過學習輸入數據的特征和模式,能夠有效地識別和分類不同的數字。

1.3 目標:使用MLP模型對MNIST數據集中的0-9數字進行分類

本項目的主要目標是設計、實現和評估一個MLP模型,用于對MNIST數據集中的手寫數字進行準確的分類。我們將通過以下步驟完成這一任務:

  • 數據預處理:包括加載數據集、標準化圖像、劃分訓練集和測試集等。
  • 模型設計:定義MLP模型的結構,包括選擇合適的層數、每層的神經元數量和激活函數。
  • 模型訓練:使用訓練集對MLP模型進行訓練,通過反向傳播算法優化模型參數。
  • 模型評估:使用測試集評估模型的性能,包括準確率、混淆矩陣等指標。
  • 性能優化:通過調整超參數、正則化技術和其他優化策略改進模型性能。

接下來,我們將詳細展開每個步驟,并介紹如何在實際項目中實現這些內容。

二.數據預處理

2.1 數據集的獲取與加載

在實現基于MNIST數據集的MLP模型之前,首先需要獲取和加載數據集。MNIST數據集可以通過多種方式獲取,包括直接從公共數據集存儲庫下載或使用機器學習庫提供的API進行訪問。以下是使用Python和相關庫加載MNIST數據集的示例代碼:

import tensorflow.keras as keras
from tensorflow.keras.datasets import mnist# 加載MNIST數據集,分為訓練集和測試集
(X_train, y_train), (X_test, y_test) = mnist.load_data()print("訓練集數據量:", X_train.shape[0])
print("測試集數據量:", X_test.shape[0])

2.2 數據集的探索性分析(EDA)

探索性數據分析(EDA)是數據科學中的重要步驟,有助于理解數據的結構、特征分布以及可能存在的問題。對于MNIST數據集,我們可以進行以下分析:

  • 數據形狀和類型:檢查數據集中圖像和標簽的維度和類型。
  • 類別分布:統計每個數字類別在數據集中的分布情況,確保類別平衡。
  • 圖像可視化:隨機可視化幾個圖像樣本,檢查圖像質量和手寫風格的多樣性。
import matplotlib.pyplot as plt
import numpy as np# 查看類別分布
unique, counts = np.unique(y_train, return_counts=True)
plt.bar(unique, counts)
plt.title('Class Frequency')
plt.xlabel('Class')
plt.ylabel('Frequency')
plt.xticks(unique)
plt.show()# 隨機可視化幾個圖像樣本
plt.figure(figsize=(10, 10))
for i in range(25):plt.subplot(5, 5, i + 1)plt.imshow(X_train[i], cmap='gray')plt.title(f'Label: {y_train[i]}')plt.axis('off')
plt.show()

2.3 數據預處理:歸一化、展平圖像數據

在訓練MLP模型之前,需要對圖像數據進行預處理,以便提高模型訓練的效果和收斂速度。常見的預處理步驟包括圖像歸一化和展平操作:

  • 歸一化:將圖像像素值縮放到0到1之間,有助于加速模型收斂并提高模型的穩定性。
  • 展平:將二維的28x28像素圖像轉換為一維向量,以作為MLP模型的輸入。
# 歸一化
X_train = X_train.astype('float32') / 255.0
X_test = X_test.astype('float32') / 255.0# 展平圖像數據
X_train_flat = X_train.reshape((-1, 28*28))
X_test_flat = X_test.reshape((-1, 28*28))print("訓練集展平后的形狀:", X_train_flat.shape)
print("測試集展平后的形狀:", X_test_flat.shape)

通過上述步驟,我們完成了對MNIST數據集的加載、探索性分析和預處理操作。接下來,可以設計和訓練MLP模型,并對其性能進行評估。在后續章節中,我們將詳細討論如何構建和優化MLP模型,以及如何解釋和改進其分類性能。

三. MLP模型構建

3.1 MLP模型結構介紹

多層感知器(MLP)是一種經典的前饋神經網絡模型,適用于處理結構化數據和分類問題。MLP由輸入層、若干隱藏層和輸出層組成,每個層之間的神經元完全連接,并通過權重進行信息傳遞。以下是一個典型的MLP模型結構示例:

  • 輸入層:接收展平后的圖像數據作為輸入,每個樣本是一個長度為784的向量(對應28x28像素的展平圖像)。
  • 隱藏層:可以包括一個或多個隱藏層,每個隱藏層包含多個神經元。隱藏層的選擇通常基于任務的復雜性和數據的特征。
  • 輸出層:最后一層通常是一個具有10個神經元的輸出層,每個神經元對應一個數字類別(0到9)的概率。
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense# 定義MLP模型
model = Sequential([Dense(128, activation='relu', input_shape=(784,)),Dense(64, activation='relu'),Dense(10, activation='softmax')
])# 打印模型結構
model.summary()

在上面的示例中,我們創建了一個包含兩個隱藏層(128個神經元和64個神經元)的MLP模型,輸出層使用softmax激活函數以獲得每個類別的概率分布。

3.2 激活函數選擇

激活函數在神經網絡中起到了非常重要的作用,它們增加了模型的非線性特性,使其能夠學習復雜的數據模式和特征。常用的激活函數包括:

  • ReLU(Rectified Linear Unit): ( f(x) = \max(0, x) ),在隱藏層中常用,能夠有效地緩解梯度消失問題。
  • sigmoid函數: ( f(x) = \frac{1}{1 + e^{-x}} ),用于二分類問題中的輸出層。
  • softmax函數: ( f(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} ),用于多分類問題中的輸出層,將輸出轉換為概率分布。

在MLP模型中,通常在隱藏層使用ReLU激活函數,在輸出層使用softmax激活函數來預測每個類別的概率。

3.3 損失函數和優化算法選擇

選擇合適的損失函數和優化算法對模型的性能和訓練效率至關重要。

  • 損失函數:用于衡量模型預測值與真實標簽之間的差異。對于多分類問題,常用的損失函數包括交叉熵損失函數(Categorical Crossentropy),它能夠衡量兩個概率分布之間的差異。

  • 優化算法:用于更新模型參數以最小化損失函數。常見的優化算法包括隨機梯度下降(SGD)、Adam優化器等。Adam優化器結合了動量和自適應學習率調整,通常在訓練深度學習模型時表現較好。

# 編譯模型,選擇損失函數和優化算法
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])

3.4 模型訓練

模型構建完成后,我們需要對其進行訓練。訓練過程包括將模型參數調整到最佳狀態,以便能夠對新數據做出準確的預測。

四. 模型性能評估

4.1 分類準確度(Accuracy)評估

分類準確度是最常用的性能指標之一,它表示模型正確分類的樣本比例。在MNIST數據集上,我們可以通過以下方式計算模型的分類準確度:

# 在測試集上評估模型
test_loss, test_acc = model.evaluate(X_test_flat, y_test, verbose=2)
print(f'測試集上的準確率:{test_acc:.4f}')

4.2 混淆矩陣(Confusion Matrix)分析

混淆矩陣是一種用于可視化模型預測結果的表格,顯示了模型在每個類別上的真實預測情況。我們可以使用混淆矩陣來進一步分析模型在各個類別上的表現:

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay# 預測測試集的類別
y_pred = model.predict_classes(X_test_flat)# 計算混淆矩陣
cm = confusion_matrix(y_test, y_pred)# 可視化混淆矩陣
plt.figure(figsize=(10, 8))
ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=np.arange(10)).plot(cmap='Blues')
plt.title('Confusion Matrix')
plt.show()

4.3 精確率(Precision)、召回率(Recall)和F1分數(F1 Score)計算

精確率、召回率和F1分數是衡量分類器性能的重要指標,特別是在不平衡類別分布的情況下更為有用。它們的計算公式如下:

  • 精確率(Precision): ( \text{Precision} = \frac{TP}{TP + FP} ),其中TP是真陽性(正確預測為正例的樣本數),FP是假陽性(錯誤預測為正例的樣本數)。
  • 召回率(Recall): ( \text{Recall} = \frac{TP}{TP + FN} ),其中FN是假陰性(錯誤預測為負例的樣本數)。
  • F1分數(F1 Score): ( F1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} ),綜合考慮了精確率和召回率。
from sklearn.metrics import classification_report# 打印精確率、召回率和F1分數
print(classification_report(y_test, y_pred, target_names=[str(i) for i in range(10)]))

4.4 可視化誤差分析

最后,我們可以通過可視化來分析模型在測試集上的誤差,幫助我們理解模型預測錯誤的原因和模式:

# 找出預測錯誤的樣本
incorrect_indices = np.where(y_pred != y_test)[0]# 隨機選擇一些錯誤樣本進行展示
plt.figure(figsize=(12, 8))
for i, incorrect in enumerate(np.random.choice(incorrect_indices, size=25, replace=False)):plt.subplot(5, 5, i + 1)plt.imshow(X_test[incorrect], cmap='gray')plt.title(f'True: {y_test[incorrect]} Predicted: {y_pred[incorrect]}')plt.axis('off')
plt.tight_layout()
plt.show()

通過以上步驟,我們可以全面評估和理解MLP模型在MNIST數據集上的分類性能。下一步將是根據評估結果對模型進行優化和改進,以提高其在數字分類任務上的表現。

五. 性能改進

5.1 超參數調優

超參數是影響模型性能和訓練速度的重要因素,包括學習率、批量大小、隱藏層神經元數量等。通過系統地調整這些超參數,我們可以找到最佳組合以改善模型性能。

5.1.1 學習率調整

學習率控制著模型參數更新的速度,過高的學習率可能導致模型在訓練過程中震蕩,而過低的學習率則會導致收斂速度緩慢。可以通過嘗試不同的學習率來找到最優值。

from tensorflow.keras.optimizers import Adam# 定義不同的學習率
learning_rates = [1e-3, 1e-4, 1e-5]for lr in learning_rates:model = Sequential([Dense(128, activation='relu', input_shape=(784,)),Dense(64, activation='relu'),Dense(10, activation='softmax')])# 編譯模型,選擇優化器和學習率optimizer = Adam(learning_rate=lr)model.compile(optimizer=optimizer,loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 訓練模型history = model.fit(X_train_flat, y_train, epochs=10, batch_size=128, validation_data=(X_test_flat, y_test), verbose=0)# 打印最終的驗證集準確率_, test_acc = model.evaluate(X_test_flat, y_test, verbose=0)print(f'學習率 {lr} 下的測試集準確率:{test_acc:.4f}')
5.1.2 批量大小優化

批量大小決定了在每次參數更新時用于計算梯度的樣本數。通常情況下,較大的批量大小可以加快訓練速度,但可能會影響模型的泛化能力。

# 嘗試不同的批量大小
batch_sizes = [32, 64, 128]for bs in batch_sizes:model = Sequential([Dense(128, activation='relu', input_shape=(784,)),Dense(64, activation='relu'),Dense(10, activation='softmax')])# 編譯模型,選擇優化器和批量大小model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 訓練模型history = model.fit(X_train_flat, y_train, epochs=10, batch_size=bs, validation_data=(X_test_flat, y_test), verbose=0)# 打印最終的驗證集準確率_, test_acc = model.evaluate(X_test_flat, y_test, verbose=0)print(f'批量大小 {bs} 下的測試集準確率:{test_acc:.4f}')

5.2 模型結構優化

優化模型結構是提升模型性能的關鍵步驟之一,可以通過增加/減少隱藏層、調整神經元數量等方式來改進模型的表現。

5.2.1 增加隱藏層和神經元數量

在某些情況下,增加隱藏層或增加每層神經元數量可以增加模型的表達能力,從而提升性能。但需要注意避免過擬合問題。

# 增加隱藏層和神經元數量的示例
model = Sequential([Dense(256, activation='relu', input_shape=(784,)),Dense(128, activation='relu'),Dense(64, activation='relu'),Dense(10, activation='softmax')
])
5.2.2 正則化技術的應用

正則化技術(如L2正則化、dropout等)可以有效控制模型的復雜度,提升泛化能力,從而減少過擬合現象。

from tensorflow.keras.layers import Dropout
from tensorflow.keras import regularizers# 添加Dropout層進行正則化
model = Sequential([Dense(128, activation='relu', kernel_regularizer=regularizers.l2(0.01), input_shape=(784,)),Dropout(0.3),Dense(64, activation='relu', kernel_regularizer=regularizers.l2(0.01)),Dropout(0.3),Dense(10, activation='softmax')
])

5.3 數據增強(Data Augmentation)應用

對于圖像數據,數據增強是一種有效的方法,通過對原始圖像進行隨機變換來生成新的訓練樣本,以增加數據的多樣性和數量,從而提升模型的泛化能力。

5.3.1 圖像旋轉、平移和縮放
from tensorflow.keras.preprocessing.image import ImageDataGenerator# 創建圖像增強生成器
datagen = ImageDataGenerator(rotation_range=10, width_shift_range=0.1, height_shift_range=0.1, zoom_range=0.1)# 在訓練集上應用圖像增強
datagen.fit(X_train.reshape(-1, 28, 28, 1))# 使用增強后的數據訓練模型
model.fit(datagen.flow(X_train_flat, y_train, batch_size=32), epochs=10, validation_data=(X_test_flat, y_test))

通過以上方法,我們可以有效地優化和改進基于MNIST數據集的MLP模型的性能,提升其在數字分類任務上的表現。在實際應用中,建議結合交叉驗證等技術,綜合考慮模型在不同超參數組合下的表現,以獲取最佳的性能結果。

六. 結論

6.1 模型性能總結

通過本文中的實驗和分析,我們成功地實現了基于MNIST數據集的MLP(多層感知器)模型,用于識別手寫數字圖像。以下是我們對模型性能的總結:

  • 準確度評估:我們通過測試集對模型進行了準確度評估,通常能夠達到90%以上的準確率,這表明MLP模型在處理MNIST數據集上具有良好的分類能力。
  • 混淆矩陣分析:混淆矩陣展示了模型在各個數字類別上的預測效果,能夠清晰地看出模型在每個類別上的精確度和召回率。
  • 精確率、召回率和F1分數:通過計算精確率、召回率和F1分數,我們進一步評估了模型在不同類別上的分類表現,確保模型在各個類別上均有良好的性能。

總體而言,我們的MLP模型在MNIST數據集上展現出了較高的分類精度和穩定性,能夠有效地區分手寫數字。

6.2 可能的改進方向

盡管我們的模型已經取得了良好的結果,但仍然存在一些改進的空間,以進一步提升其性能和泛化能力:

  • 超參數調優:可以進一步探索不同的學習率、批量大小、隱藏層結構等超參數的組合,以找到最佳的模型配置。
  • 模型結構優化:考慮嘗試更復雜的模型結構,如增加更深的隱藏層或者應用正則化技術來提升模型的表達能力和泛化能力。
  • 集成學習:可以嘗試集成多個MLP模型,如投票集成或堆疊集成,以進一步提升模型的整體性能。
  • 數據增強:對于MNIST數據集這種小規模數據集,可以應用數據增強技術,如圖像旋轉、平移、縮放等,增加訓練樣本的多樣性,從而提升模型的魯棒性。

6.3 對于實際應用的啟示

基于我們在MNIST數據集上的探索,我們可以得出以下對于實際應用的啟示:

  • 模型遷移:雖然MNIST是一個簡單的手寫數字數據集,但是MLP模型的訓練和優化方法可以遷移到更復雜的圖像分類任務中,如物體識別、人臉識別等。
  • 自動化和優化:在實際應用中,可以結合自動化超參數搜索、模型選擇和部署技術,以便更快速地優化和部署深度學習模型。
  • 持續學習:隨著數據和任務的變化,模型需要不斷更新和優化。因此,建立持續學習和監控的機制是確保模型長期性能的關鍵。

綜上所述,通過本文對基于MNIST數據集的MLP模型的實現與性能評估,我們不僅提升了對深度學習模型的理解和應用能力,還為更復雜問題的解決提供了有益的經驗和指導。在未來的工作中,可以進一步探索和應用新的技術,以不斷提升模型的性能和應用效果。

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

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

相關文章

騙子用出國月薪3萬騙了1000多萬上千名求職者被騙

日前,江蘇省南通市崇川區人民法院開庭審理了一起涉及詐騙的案件,該案件 審理后引發全國求職者的關注以及熱議。根據了解得知,這起案件的主犯是利用出 國勞務的虛假高薪職位位誘餌,最終有上千名求職者被騙上當了。文章來源于:股城網www.gucheng.com 根據法院審…

微信文件太大傳不了?學會這些,微信秒變大文件傳輸神器

在數字化時代,微信已成為我們日常溝通的重要橋梁。然而,當需要在微信上傳輸大文件時,文件大小的限制往往讓人束手無策。 今天,我們將分享一些實用的技巧,幫助你在微信上輕松傳輸大文件,無論是工作文檔還是…

HTTP 概況

Web的應用層協議是超文本傳輸協議(HyperTextTransferProtocol,HTTP),它是 Web的核心。HTTP由兩個程序實現:一個客戶程序和一個服務器程序。客戶程序和服務器程序運行在不同的端系統中,通過交換HTTP報文進行會話。HTTP定義了這些報文的結構以及…

彩虹小插畫:成都亞恒豐創教育科技有限公司

彩虹小插畫:色彩斑斕的夢幻世界 在繁忙的生活節奏中,總有一抹溫柔的色彩能悄然觸動心弦,那就是彩虹小插畫帶來的夢幻與寧靜。彩虹,這一自然界的奇跡,被藝術家們巧妙地融入小巧精致的插畫之中,不僅捕捉了瞬…

事務未釋放問題排查

事務未釋放問題現象:一般會導致大量鎖表現象。 排查:查看所有鎖表報錯的日志是否都是同一個線程號上的,找到最開始的報錯并進行分析。

Oracle基礎以及一些‘方言’(一)

1、什么是Oracle ORACLE數據庫系統是美國ORACLE公司(甲骨文)提供的以分布式數據庫為核心的一組軟件產品,是最流行的客戶/服務器(CLIENT/SERVER)或B/S體系結構的數據庫之一。 ORACLE 通常應用于大型系統的數據庫產品。 ORACLE 數據庫是目前世界…

vue使用 “xlsx-style“: “^0.8.13“ 報錯

關于jszip not a constructor報錯配置config.js文件后可能還報錯的問題: 在node_modules處找到node_modules\xlsx-style\xlsx.js 文件。 將 if(typeof jszip undefined) jszip require(./jszip).JSZip;(應該在xlsx.js文件1339行左右) 替換成 if(typeof jszip und…

高壓線束屏蔽效能測試之管中管法、線注入法

一、引言 上期推文介紹了高壓線束屏蔽效能測試方法三同軸法,本篇文章將繼續介紹高壓線束相關測試方法——管中管法和線注入法。 二、管中管法 1、一般要求 管中管法參照IEC62153-4-7標準對高低壓連接器進行零部件級屏蔽效能測試。在測試時,通過金屬延長管…

3、視圖和模板

續上一篇,這一篇 著重于創建公共接口——“視圖” 第三部分——3、視圖和模板 1、概述2、編寫更多視圖原理——django依次訪問了什么文件 3、寫一個真正有用的視圖一個快捷函數 render() render——渲染 4、拋出404錯誤一個快捷函數 get_object_or_404() 5、使用模…

實時數倉和離線數倉的區別是什么,企業該如何選擇合適的數倉架構?

目錄 一、離線數倉 1. 離線數倉是什么? 2. 離線數倉的特點 3. 離線數倉的適用場景 二、實時數倉 1. 實時數倉是什么? 2. 實時數倉的特點 3. 實時數倉的適用場景 三、由數倉需求變化帶來的數據倉庫架構的演變 1. 傳統數倉架構 2. 離線大數據架構 3. Lambd…

高級IO_多路轉接之ET模式Reactor

文章目錄 Reactor是什么?LT模式 VS ET模式 示例代碼 提示:以下是本篇文章正文內容,下面案例可供參考 Reactor是什么? Reactor模式是一種事件驅動的并發模型,它通過將事件處理邏輯與事件分發機制解耦,實現…

maven如何處理依賴沖突的問題?

Maven是一個強大的Java項目管理工具,它使用一個名為pom.xml的文件來管理項目的構建過程和依賴關系。當項目中出現依賴沖突時,Maven使用一系列策略來解決這些問題。以下是Maven處理依賴沖突的一些常見方法: 1. 最近優先策略: -…

tensorflow之欠擬合與過擬合,正則化緩解

過擬合泛化性弱 欠擬合解決方法: 增加輸入特征項 增加網絡參數 減少正則化參數 過擬合的解決方法: 數據清洗 增大訓練集 采用正則化 增大正則化參數 正則化緩解過擬合 正則化在損失函數中引入模型復雜度指標,利用給w增加權重,…

點線面推進未來智造

如今,寧波擁有門類齊全的制造業體系,形成了以石油化工、汽車及零部件、電工電器、紡織服裝等為支柱的產業集群。 寧波工業的發展并非一蹴而就,藍卓總經理譚彰詳細解讀了寧波制造業的發展歷程與當下目標,從工業小市到工業大市、工業…

基于Matlab和Python泰勒圖的繪制

一、泰勒圖介紹 泰勒圖:泰勒圖1常用于評價模型的精度,常用的精度指標有相關系數,標準差以及均方根誤差(RMSE)。一般而言,泰勒圖中的散點代表模型,輻射線代表相關系數,橫縱軸代表標準差,而虛線代表均方根誤差。泰勒圖一改以往用散點圖這種只能呈現兩個指標來表示模型精度…

Qt使用筆記1(智能指針,deleteLater,多屏)

1、Qt智能指針 1.1、QPointer :解決野指針問題,必須是QObject對象。 1.2、QScopedPoint:作用域指針,出作用域自動釋放。 1.3、QScopedArrayPoint:作用域數組指針,出作用域自動釋放數組。 1.4、QSharedP…

RedHat運維-Ansible自動化運維基礎20-從ansible-galaxy下載role

1. 社區管理的role倉庫:___________________________________; 2. 社區管理的role倉庫:___________________________________; 3. 社區管理的role倉庫:___________________________________; 4. 在ansible …

Python數據結構的庫之Fuk使用詳解

概要 fuk 是一個用于處理 Python 數據結構的庫,全稱為 "Fast and Uncomplicated Kit"。它提供了一系列高效、簡潔的數據結構實現,以及對 Python 內置數據結構的擴展。通過使用 fuk,開發者可以更加方便地處理列表、集合、字典等數據類型,提高代碼的執行效率和可讀…

vite+vue3拍照上傳到nodejs服務器

一:效果展示: 拍照效果 二:Nodejs后端接口代碼: 三:前端完整代碼:

Vue基礎--v-model/v-for/事件屬性/偵聽器

目錄 一 v-model表單元素 1.1 v-model綁定文本域的value 1.1.1 lazy屬性:光標離開再發請求 1.1.2 number屬性:如果能轉成number就會轉成numer類型 1.1.3 trim屬性:去文本域輸入的前后空格 1.2v-model綁定單選checkbox 1.3代碼展示 二 …