在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > KNN中不同距離度量對(duì)比和介紹(2)

            KNN中不同距離度量對(duì)比和介紹(2)

            發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2023-05-22 來源:工程師 發(fā)布文章
            距離度量對(duì)比


            我使用的數(shù)據(jù)集是乳腺癌數(shù)據(jù)集,可以在kaggle上直接下載
            這個(gè)數(shù)據(jù)集是機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘中廣泛使用的基準(zhǔn)數(shù)據(jù)集,用于二元分類任務(wù)。它是由威廉·h·沃爾伯格(William H. Wolberg)博士及其合作者在20世紀(jì)90年代從麥迪遜的威斯康星大學(xué)醫(yī)院收集的。該數(shù)據(jù)集可通過UCI機(jī)器學(xué)習(xí)存儲(chǔ)庫公開獲取。
            Breast Cancer Wisconsin數(shù)據(jù)集包含569個(gè)實(shí)例,每個(gè)實(shí)例有32個(gè)屬性。這些屬性是:
            ID number:每個(gè)樣本的唯一標(biāo)識(shí)符。Diagnosis:目標(biāo)變量有兩個(gè)可能的值——“M”(惡性)和“B”(良性)。
            剩下的是30個(gè)從乳腺腫塊的細(xì)針抽吸(FNA)的數(shù)字化圖像中計(jì)算出來的特征。它們描述了圖像中細(xì)胞核的特征。對(duì)每個(gè)細(xì)胞核計(jì)算每個(gè)特征,然后求平均值,得到10個(gè)實(shí)值特征:

            • Radius:從中心到周邊點(diǎn)的平均距離。
            • Texture:灰度值的標(biāo)準(zhǔn)偏差。
            • Perimeter:細(xì)胞核的周長。
            • Area:細(xì)胞核的面積。
            • Smoothness:半徑長度的局部變化。
            • Compactness:周長2/面積- 1.0。
            • Concavity:輪廓中凹部分的嚴(yán)重程度。
            • Concave points:輪廓的凹部分的數(shù)目。
            • Symmetry:細(xì)胞核的對(duì)稱性。
            • Fractal dimension:“Coastline approximation”- 1


            對(duì)每張圖像計(jì)算這十個(gè)特征的平均值、標(biāo)準(zhǔn)誤差和最小或最大值(三個(gè)最大值的平均值),總共得到30個(gè)特征。數(shù)據(jù)集不包含任何缺失的屬性值。
            由于數(shù)據(jù)集包含30個(gè)特征,我們需要對(duì)數(shù)據(jù)集進(jìn)行特征選擇。這種方法的主要目的是通過選擇與目標(biāo)變量具有強(qiáng)線性關(guān)系的較小的特征子集來降低數(shù)據(jù)集的維數(shù)。通過選擇高相關(guān)性的特征,目的是保持模型的預(yù)測(cè)能力,同時(shí)減少使用的特征數(shù)量,潛在地提高模型的性能和可解釋性。這里需要注意的是,該方法只考慮特征與目標(biāo)變量之間的線性關(guān)系,如果底層關(guān)系是非線性的,或者特征之間存在重要的交互作用,則該方法可能無效。
            讀取數(shù)據(jù)并計(jì)算相關(guān)系數(shù):



             df = pd.read_csv('/kaggle/input/breast-cancer-wisconsin-data/data.csv') corr = df.corr() corr_threshold = 0.6 selected_features = corr.index[np.abs(corr['diagnosis']) >= corr_threshold] new_cancer_data = df[selected_features]


            訓(xùn)練代碼:



























            X_train_np = np.array(X_train) X_test_np = np.array(X_test)
            # Convert y_train and y_test to numpy arrays y_train_np = np.array(y_train) y_test_np = np.array(y_test)
            k_values = list(range(1, 15)) accuracies = []
            for k in k_values:     y_pred = knn_euclidean_distance(X_train_np, y_train_np, X_test_np, k)     accuracy = accuracy_score(y_test_np, y_pred)     accuracies.append(accuracy)
            # Create a data frame to store k values and accuracies results_df = pd.DataFrame({'k': k_values, 'Accuracy': accuracies})
            # Create the interactive plot using Plotly fig = px.line(results_df, x='k', y='Accuracy', title='KNN Accuracy for Different k Values', labels={'k': 'k', 'Accuracy': 'Accuracy'}) fig.show()
            # Get the best k value best_k = k_values[accuracies.index(max(accuracies))] best_accuracy = max(accuracies) print("Best k value is:", best_k , "where accuracy is:" ,best_accuracy)

            圖片







































             # Run the KNN algorithm on the test set for different k and p values k_values = list(range(1, 15)) p_values = list(range(1, 6)) results = []
            for k in k_values:     for p in p_values:         y_pred = knn_minkowski_distance(X_train_np, y_train_np, X_test_np, k, p)         accuracy = accuracy_score(y_test_np, y_pred)         results.append((k, p, accuracy))
            # Create a data frame to store k, p values, and accuracies results_df = pd.DataFrame(results, columns=['k', 'p', 'Accuracy'])
            # Create the 3D plot using Plotly fig = go.Figure(data=[go.Scatter3d(     x=results_df['k'],     y=results_df['p'],     z=results_df['Accuracy'],     mode='markers',     marker=dict(         size=4,         color=results_df['Accuracy'],         colorscale='Viridis',         showscale=True,         opacity=0.8    ),     text=[f"k={k}, p={p}, Acc={acc:.2f}" for k, p, acc in results] )])
            fig.update_layout(scene=dict(     xaxis_title='k',     yaxis_title='p',     zaxis_title='Accuracy' ))
            fig.show()

            為了進(jìn)一步改善我們的結(jié)果,我們還可以數(shù)據(jù)集進(jìn)行縮放。應(yīng)用特征縮放的主要目的是確保所有特征具有相同的尺度,這有助于提高基于距離的算法(如KNN)的性能。在KNN算法中,數(shù)據(jù)點(diǎn)之間的距離對(duì)確定它們的相似度起著至關(guān)重要的作用。如果特征具有不同的尺度,則算法可能會(huì)更加重視尺度較大的特征,從而導(dǎo)致次優(yōu)預(yù)測(cè)。通過將特征縮放到均值和單位方差為零,算法可以平等地對(duì)待所有特征,從而獲得更好的模型性能。


            本文將使用StandardScaler()和MinMaxScaler()來擴(kuò)展我們的數(shù)據(jù)集。StandardScaler和MinMaxScaler是機(jī)器學(xué)習(xí)中兩種流行的特征縮放技術(shù)。這兩種技術(shù)都用于將特征轉(zhuǎn)換為公共尺度,這有助于提高許多機(jī)器學(xué)習(xí)算法的性能,特別是那些依賴于距離的算法,如KNN或支持向量機(jī)(SVM)。
            使用不同的尺度和不同的距離函數(shù)訓(xùn)練KNN,可以進(jìn)行比較并選擇最適合數(shù)據(jù)集的技術(shù)。我們得到了以下結(jié)果:
            圖片
            可以使用柱狀圖表示來更好地分析和理解這些結(jié)果。
            圖片


            總結(jié)


            根據(jù)上面的結(jié)果,我們可以得到以下的結(jié)論:
            在不進(jìn)行特征縮放時(shí),歐幾里得距離和閔可夫斯基距離都達(dá)到了0.982456的最高精度。
            曼哈頓離在所有情況下的精度都比較低,這表明歐幾里得或閔可夫斯基距離可能更適合這個(gè)問題。當(dāng)閔可夫斯基距離度量中的p值為2時(shí),它等于歐幾里得距離。在我們這個(gè)實(shí)驗(yàn)中這兩個(gè)指標(biāo)的結(jié)果是相同的,也證明了這是正確的。
            對(duì)于歐幾里得和閔可夫斯基距離度量,不應(yīng)用任何特征縮放就可以獲得最高的精度。而對(duì)于曼哈頓距離,與非縮放數(shù)據(jù)相比,StandardScaler和MinMaxScaler都提高了模型的性能。這表明特征縮放的影響取決于所使用的距離度量。
            最佳k值:最佳k值取決于距離度量和特征縮放技術(shù)。例如,k=11是不應(yīng)用縮放并且使用歐幾里得距離或閔可夫斯基距離時(shí)的最佳值,而k=9是使用曼哈頓距離時(shí)的最佳值。當(dāng)應(yīng)用特征縮放時(shí),最佳k值通常較低,范圍在3到11之間。
            最后,該問題的最佳KNN模型使用歐式距離度量,無需任何特征縮放,在k=11個(gè)鄰居時(shí)達(dá)到0.982456的精度。這應(yīng)該是我們這個(gè)數(shù)據(jù)集在使用KNN時(shí)的最佳解。
            如果你想自己實(shí)驗(yàn),完整代碼和數(shù)據(jù)都可以在這里找到:https://www.kaggle.com/code/kane6543/knn-with-euclidean-minkowski-manhattan-distance?scriptVersionId=128083261作者:Abdullah Siddique


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉