<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # K-Nearest Neighbors for Machine Learning > 原文: [https://machinelearningmastery.com/k-nearest-neighbors-for-machine-learning/](https://machinelearningmastery.com/k-nearest-neighbors-for-machine-learning/) 在這篇文章中,您將發現用于分類和回歸的k-Nearest Neighbors(KNN)算法。閱讀這篇文章后你會知道的。 * KNN使用的模型表示。 * 如何使用KNN學習模型(暗示,不是)。 * 如何使用KNN進行預測 * KNN的許多名稱包括不同的字段如何引用它。 * 如何準備您的數據以充分利用KNN。 * 在哪里可以了解有關KNN算法的更多信息。 這篇文章是為開發人員編寫的,并沒有統計或數學方面的背景。重點是算法如何工作以及如何將其用于預測建模問題。如果您有任何疑問,請發表評論,我會盡力回答。 讓我們開始吧。 ![K-Nearest Neighbors for Machine Learning](img/59dba4b611cf5b92ccc9d47703a27bb8.jpg) K-Nearest Neighbors for Machine Learning 照片由 [Valentin Ottone](https://www.flickr.com/photos/saneboy/3050001226/) 保留,保留一些權利。 ## KNN模型表示 KNN的模型表示是整個訓練數據集。 它是如此簡單。 除了存儲整個數據集之外,KNN沒有其他模型,因此無需學習。 有效的實現可以使用諸如 [k-d樹](https://en.wikipedia.org/wiki/K-d_tree)之類的復雜數據結構來存儲數據,以在預測期間有效地查找和匹配新模式。 由于存儲了整個訓練數據集,因此您可能需要仔細考慮訓練數據的一致性。策劃它可能是一個好主意,在新數據可用時經常更新并刪除錯誤和異常數據。 ## 獲取免費算法思維導圖 ![Machine Learning Algorithms Mind Map](img/2ce1275c2a1cac30a9f4eea6edd42d61.jpg) 方便的機器學習算法思維導圖的樣本。 我已經創建了一個由類型組織的60多種算法的方便思維導圖。 下載,打印并使用它。 ## 用KNN做出預測 KNN直接使用訓練數據集進行預測。 通過搜索K個最相似的實例(鄰居)的整個訓練集并總結那些K個實例的輸出變量,對新實例(x)進行預測。對于回歸,這可能是平均輸出變量,在分類中,這可能是模式(或最常見)類值。 為了確定訓練數據集中的哪個K實例與新輸入最相似,使用距離度量。對于實值輸入變量,最常用的距離測量是[歐幾里德距離](https://en.wikipedia.org/wiki/Euclidean_distance)。 歐幾里德距離被計算為跨所有輸入屬性j的新點(x)和現有點(xi)之間的平方差之和的平方根。 EuclideanDistance(x,xi)= sqrt(sum((xj - xij)^ 2)) 其他流行的距離措施包括: * **漢明距離**:計算二進制向量之間的距離([更多](https://en.wikipedia.org/wiki/Hamming_distance))。 * **曼哈頓距離**:使用它們的絕對差值之和計算實際向量之間的距離。也稱為城市街區距離([更多](https://en.wikipedia.org/wiki/Taxicab_geometry))。 * **Minkowski距離**:歐幾里德和曼哈頓距離的推廣([更多](https://en.wikipedia.org/wiki/Minkowski_distance))。 可以使用許多其他距離測量,例如Tanimoto, [Jaccard](https://en.wikipedia.org/wiki/Jaccard_index) , [Mahalanobis](https://en.wikipedia.org/wiki/Mahalanobis_distance) 和[余弦距離](https://en.wikipedia.org/wiki/Cosine_similarity)。您可以根據數據屬性選擇最佳距離指標。如果您不確定,可以嘗試不同的距離指標和不同的K值,并查看哪種混合產生最準確的模型。 如果輸入變量在類型上相似(例如,所有測量的寬度和高度),則歐幾里德是一種很好的距離測量。如果輸入變量在類型上不相似(例如年齡,性別,身高等),曼哈頓距離是一個很好的衡量標準。 可以通過算法調整找到K的值。嘗試K的許多不同值(例如1到21的值)并查看哪種值最適合您的問題是一個好主意。 KNN的計算復雜度隨著訓練數據集的大小而增加。對于非常大的訓練集,KNN可以通過從訓練數據集中取樣來制作隨機,從中計算K-最相似的實例。 KNN已經存在了很長時間,并且已經得到很好的研究。因此,不同的學科有不同的名稱,例如: * **基于實例的學習**:原始訓練實例用于進行預測。因此,KNN通常被稱為[基于實例的學習](https://en.wikipedia.org/wiki/Instance-based_learning)或基于案例的學習(其中每個訓練實例是來自問題域的案例)。 * **懶惰學習**:不需要學習模型,所有工作都在請求預測時進行。因此,KNN通常被稱為[懶惰學習](https://en.wikipedia.org/wiki/Lazy_learning)算法。 * **非參數**:KNN對正在解決的問題的功能形式沒有做出任何假設。因此,KNN被稱為[非參數](https://en.wikipedia.org/wiki/Nonparametric_statistics)機器學習算法。 KNN可用于回歸和分類問題。 ### KNN for Regression 當KNN用于回歸問題時,預測基于K-最相似實例的均值或中值。 ### KNN for Classification 當KNN用于分類時,輸出可以被計算為具有來自K-最相似實例的最高頻率的類。每個實例本質上都為他們的班級投票,而得票最多的班級則作為預測。 類概率可以被計算為屬于新數據實例的K個最相似實例的集合中的每個類的樣本的歸一化頻率。例如,在二元分類問題(類為0或1)中: p(class = 0)= count(class = 0)/(count(class = 0)+ count(class = 1)) 如果您使用K并且您具有偶數個類(例如2個),則最好選擇具有奇數的K值以避免出現平局。反之,當你有一個奇數的類時,使用偶數來表示K. 通過將K擴展1并查看訓練數據集中下一個最相似實例的類,可以一致地打破關系。 ## 維度的詛咒 KNN適用于少量輸入變量(p),但在輸入數量非常大時會遇到困難。 每個輸入變量可以被認為是p維輸入空間的維度。例如,如果您有兩個輸入變量x1和x2,則輸入空間將為2維。 隨著維數的增加,輸入空間的體積以指數速率增加。 在高維度中,可能相似的點可能具有非常大的距離。所有的點都會相互遠離,我們對簡單的2維和3維空間距離的直覺就會崩潰。這可能一開始感覺不直觀,但這個一般性問題被稱為“[維度詛咒](https://en.wikipedia.org/wiki/Curse_of_dimensionality)”。 ## 為KNN準備最佳數據 * **重新縮放數據**:如果所有數據具有相同的比例,KNN的表現要好得多。將數據規范化到[0,1]范圍是個好主意。如果數據具有高斯分布,則標準化數據也可能是個好主意。 * **地址缺失數據**:缺少數據意味著無法計算樣本之間的距離。可以排除這些樣本,也可以估算缺失值。 * **低維度**:KNN適用于低維數據。您可以在高維數據(數百或數千個輸入變量)上嘗試它,但要注意它可能不如其他技術那樣好。 KNN可以從減少輸入特征空間維度的特征選擇中受益。 ## 進一步閱讀 如果您有興趣從頭開始在Python中實現KNN,請查看帖子: * [教程從頭開始在Python中實現k-最近鄰](http://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/) 以下是從預測建模角度介紹KNN算法的一些優秀的機器學習文本。 1. [應用預測建模](http://www.amazon.com/dp/1461468485?tag=inspiredalgor-20),第7章用于回歸,第13章用于分類。 2. [數據挖掘:實用機器學習工具和技術](http://www.amazon.com/dp/0123748569?tag=inspiredalgor-20),第76和128頁 3. [做數據科學:從前線直接談話](http://www.amazon.com/dp/1449358659?tag=inspiredalgor-20),第71頁 4. [機器學習](http://www.amazon.com/dp/0070428077?tag=inspiredalgor-20),第8章 還可以在維基百科上查看 [K-Nearest Neighbors](https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm) 。 ## 摘要 在這篇文章中,您發現了KNN機器學習算法。你了解到: * KNN存儲它用作其表示的整個訓練數據集。 * KNN沒有學習任何模型。 * KNN通過計算輸入樣本和每個訓練實例之間的相似性來及時進行預測。 * 有許多距離度量可供選擇以匹配輸入數據的結構。 * 在使用KNN時,重新調整數據是一個好主意,例如使用規范化。 如果您對此帖子或KNN算法有任何疑問,請在評論中提出,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看