<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      24.12.12

      實驗七:K均值聚類算法實現與測試

      一、實驗目的

      深入理解K均值聚類算法的算法原理,進而理解無監督學習的意義,能夠使用Python語言實現K均值聚類算法的訓練與測試,并且使用五折交叉驗證算法進行模型訓練與評估。

      二、實驗內容

      (1)從scikit-learn 庫中加載 iris 數據集,使用留出法留出 1/3 的樣本作為測試集(注 意同分布取樣);

      (2)使用訓練集訓練K均值聚類算法,類別數為3;

      (3)使用五折交叉驗證對模型性能(準確度、精度、召回率和 F1 值)進行評估和選 擇;

      (4)使用測試集,測試模型的性能,對測試結果進行分析,完成實驗報告中實驗七的 部分。

      三、算法步驟、代碼、及結果

         1. 算法偽代碼

       

      # 1. 加載數據集

      加載 Iris 數據集

      X, y = 加載數據集()

       

      # 2. 數據分割

      X_train, X_test, y_train, y_test = 劃分數據集(X, y, test_size=1/3, stratify=y)

       

      # 3. 初始化 K 均值聚類模型

      kmeans = KMeans(n_clusters=3, random_state=42)

       

      # 4. 在訓練集上訓練模型

      訓練模型(kmeans, X_train)

       

      # 5. 使用五折交叉驗證評估模型性能

      交叉驗證結果 = 五折交叉驗證(kmeans, X, y)

       

      # 計算準確度、精度、召回率和 F1 值

      準確度 = 計算準確度(交叉驗證結果)

      精度 = 計算精度(交叉驗證結果)

      召回率 = 計算召回率(交叉驗證結果)

      F1值 = 計算F1值(交叉驗證結果)

       

      輸出("五折交叉驗證結果:")

      輸出(準確度)

      輸出(精度)

      輸出(召回率)

      輸出(F1值)

       

      # 6. 使用測試集評估模型

      y_pred = 預測標簽(kmeans, X_test)

       

      # 將聚類標簽與真實標簽對齊,計算準確度、精度、召回率和 F1 值

      測試集準確度 = 計算準確度(y_test, y_pred)

      測試集精度 = 計算精度(y_test, y_pred)

      測試集召回率 = 計算召回率(y_test, y_pred)

      測試集F1值 = 計算F1值(y_test, y_pred)

       

      輸出("測試集性能:")

      輸出(測試集準確度)

      輸出(測試集精度)

      輸出(測試集召回率)

      輸出(測試集F1值)

       

         2. 算法主要代碼

      完整源代碼\調用庫方法(函數參數說明)

       

      import numpy as np
      import pandas as pd
      from sklearn.datasets import load_iris
      from sklearn.model_selection import train_test_split, cross_val_score
      from sklearn.cluster import KMeans
      from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
      from sklearn.metrics import adjusted_rand_score

      # 1. 加載 Iris 數據集
      iris = load_iris()
      X = iris.data  # 特征數據
      y = iris.target  # 真實標簽

      # 2. 留出法分割數據集,1/3 測試集,2/3 訓練集(使用 stratify 保證訓練集和測試集類別比例相同)
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, stratify=y, random_state=42)

      # 3. 初始化 KMeans 聚類模型
      kmeans = KMeans(n_clusters=3, random_state=42)

      # 4. 訓練模型
      kmeans.fit(X_train)

      # 5. 使用五折交叉驗證評估模型
      cross_val_scores = cross_val_score(kmeans, X, y, cv=5, scoring='accuracy')

      # 打印五折交叉驗證結果
      print(f"五折交叉驗證結果(準確度): {cross_val_scores}")
      print(f"平均準確度: {np.mean(cross_val_scores):.4f}")

      # 6. 使用測試集評估模型
      y_pred = kmeans.predict(X_test)

      # 由于 KMeans 是無監督的,聚類標簽與真實標簽不完全對齊,
      # 使用調整后的蘭德指數(Adjusted Rand Index)來評估聚類標簽與真實標簽的匹配度
      ari = adjusted_rand_score(y_test, y_pred)

      # 7. 計算準確度、精度、召回率和 F1 值(對聚類標簽與真實標簽對齊后的計算)
      accuracy = accuracy_score(y_test, y_pred)
      precision = precision_score(y_test, y_pred, average='weighted')
      recall = recall_score(y_test, y_pred, average='weighted')
      f1 = f1_score(y_test, y_pred, average='weighted')

      # 輸出測試集性能評估
      print("\n測試集性能:")
      print(f"準確度: {accuracy:.4f}")
      print(f"精度: {precision:.4f}")
      print(f"召回率: {recall:.4f}")
      print(f"F1 值: {f1:.4f}")
      print(f"調整后的蘭德指數(ARI): {ari:.4f}")

       

       

      1. 數據分割

      使用 train_test_split(X, y, test_size=1/3, stratify=y) 來劃分數據集。

      X: 特征數據。

      y: 目標標簽(真實類別標簽)。

      test_size=1/3: 將 1/3 數據作為測試集,2/3 數據作為訓練集。

      stratify=y: 確保訓練集和測試集中的類別比例相同。

      2. K 均值聚類

      使用 KMeans 聚類算法對訓練數據進行訓練。指定 n_clusters=3 表示我們希望將數據分為 3 個簇(類別)。

      KMeans 的常用參數:

      n_clusters=3: 設定要分的簇的數量。

      random_state=42: 設置隨機種子,以確保結果的可復現性。

      3. 評估模型性能(交叉驗證)

      使用 cross_val_score 對模型進行五折交叉驗證。

      cv=5: 五折交叉驗證。

      scoring 評估指標:使用調整后的聚類標簽和真實標簽計算準確度、精度、召回率和 F1 值。

       

         3. 訓練結果截圖(包括:準確率、精度(查準率)、召回率(查全率)、F1)

       

       

       

      四、實驗結果分析

      1. 測試結果截圖(包括:準確率、精度(查準率)、召回率(查全率)、F1)

       

       

       

      2. 對比分析

             五折交叉驗證結果:結果表明該 KMeans 聚類模型對數據的學習效果不穩定,可能是由于數據本身的分布或聚類算法無法正確識別各類之間的差異。準確度大部分時間為 0,可能是因為聚類的標簽和真實標簽沒有有效對齊。

             測試集結果:在測試集上的表現也不理想,準確度和其他性能指標(如精度、召回率和 F1 值)都較低。表明模型沒有學到有效的類別劃分規則,聚類的結果與真實標簽相差較大。

            ARI:調整后的蘭德指數(ARI)為 0.3879,意味著聚類結果與真實標簽有一定的相似度,但相似度較低。ARI 值接近 0 時,說明聚類結果和真實標簽之間幾乎沒有關聯。

       

      可能的原因:

      KMeans 算法本身的限制:KMeans 是一個基于距離的無監督學習算法,它可能無法很好地適應 Iris 數據集的特征,尤其是當數據集中類之間的邊界不是簡單的圓形或球形時,KMeans 可能會表現不佳。

      數據的離散性:KMeans 聚類假設每個類的樣本分布是均勻的,如果數據的分布不符合這一假設,模型性能就會較差。

      K 值的選擇:KMeans 聚類算法需要預先指定聚類的數量 K。如果 K 的選擇不合理,聚類效果也會受到影響。對于 Iris 數據集,盡管我們知道數據有 3 個類,但 KMeans 可能沒有很好地識別出這些類的邊界

      posted on 2024-12-12 15:33  Daniel350  閱讀(37)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 综合色在线| 男女xx00上下抽搐动态图| 国产成人精品午夜在线观看| 日韩中文字幕人妻精品| 国产中文99视频在线观看| 成全我在线观看免费第二季| 黑人猛精品一区二区三区| 91亚洲人成手机在线观看| 青草成人精品视频在线看| 色综合视频一区二区三区| 美女黄网站人色视频免费国产| 天堂久久天堂av色综合| 久久精品国产字幕高潮| 亚洲最大av资源站无码av网址| 午夜男女爽爽影院在线| 国产精品老熟女一区二区| 国产成人精品1024免费下载| 日韩精品一区二区三区中文无码 | 99在线精品视频观看免费| 姐姐6电视剧在线观看| 亚洲欧美自偷自拍视频图片| 亚洲国产综合一区二区精品| 日韩精品福利一区二区三区| 亚洲一区二区日韩综合久久| 亚洲 日本 欧洲 欧美 视频| 四虎国产成人永久精品免费| 无码人妻斩一区二区三区| 精品国产一区二区三区四区阿崩| 夜夜影院未满十八勿进| 亚洲最大日韩精品一区| 无码精品一区二区三区在线| 亚洲精品精华液一区二区| 亚洲日韩久热中文字幕| 久久99国产精品尤物| 亚洲国产精品毛片av不卡在线| 国产91精品一区二区亚洲| 噜噜噜亚洲色成人网站∨| 国产一二三五区不在卡| 一区二区三区日本久久九| 国产免费久久精品99reswag| 欧美老少配性行为|