最近質心

来源:http://www.cnblogs.com/azheng333/archive/2016/09/17/5879870.html
-Advertisement-
Play Games

演算法很簡單,取訓練樣本每種類別的平均值當做聚類中心點,待分類的樣本離哪個中心點近就歸屬於哪個聚類 。 在《白話大數據與機器學習》里使用了sklearn里的NearestCentroid來處理數據: 訓練模型 clf = NearestCentroid().fit(x, y) 預測數據 clf.pre ...


演算法很簡單,取訓練樣本每種類別的平均值當做聚類中心點,待分類的樣本離哪個中心點近就歸屬於哪個聚類 。

 

在《白話大數據與機器學習》里使用了sklearn里的NearestCentroid來處理數據:

訓練模型 clf = NearestCentroid().fit(x, y)

預測數據 clf.predict(x)

 


 

這裡我們來實現一下最近的質心演算法,看看該演算法具體是如果實現的。

 

1 準備數據

首先我們需要一些訓練數據 這裡使用鳶尾花數據 https://en.wikipedia.org/wiki/Iris_flower_data_set

這裡x是一個(150, 4)2維數組,總共150條數據,列印其中的5條數據看一下:

[[5.1, 3.5, 1.4, 0.2],

 [4.9, 3.0, 1.4, 0.2],

 [4.7, 3.2, 1.3, 0.2],

 [4.6, 3.1, 1.5, 0.2],

 [5.0, 3.6, 1.4, 0.2],

 ... ...]

可以看到每條數據都有4個特征項分別是: 萼片的長度,萼片的寬度,花瓣的長度,花瓣的寬度

 

y是x里每條數據對應的分類:

[0, 0, 1, 1, 2, ...]

可以看到x里對應的分類總共有3種[0,1,2]。

 

2 訓練模型

求出了每種分類里的數據每個特性項的平均值:

{0: [[5.1, 3.5, 1.4, 0.2],

       [4.9, 3.0, 1.4, 0.2],

       ... ...],

 1: [[4.7, 3.2, 1.3, 0.2],

      [4.6, 3.1, 1.5, 0,2],

      ... ...],

 2: [[5.0, 3.6, 1.4, 0.2],

       ... ...]}

 

得到平均值結果集:

{0: [5.006, 3.418, 1.464, 0.244],

  1: [5.936, 2.770, 4.260, 1.326],

  2: [6.588, 2.974, 5.552, 2.026]}

 

3. 預測數據

求出待預測數據屬於哪種分類的概率更大,也就是離哪個聚類質心更近。

 

對每條記錄,計算其與每個聚類中點之間的距離並保存在一個數組裡,計算距離公式有很多,歐式距離,曼哈頓距離等:

[[8.512, 2.321, 4.576]]

可以看到待預測數據屬於分類0,1,2的距離被計算出來了。

 

完整代碼可以訪問github進行下載 https://github.com/azheng333/Ml_Algorithm.git。

 

(完)

 

                    關註大數據尖端技術發展,關註奇點大數據
                       


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們繼續之前的 Hypnosister 應用,當用戶開始觸摸的時候,圓形的顏色會改變。 首先,在 JXHypnosisView 頭文件中聲明一個屬性,用來表示圓形的顏色。 加入的三行代碼稱為 JXHypnosisView 的類擴展。類擴展中聲明一個顏色屬性。 在 JXHypnosisView 實現文 ...
  • 藉助View的OnTouchListener介面來監聽listView的滑動,通過比較與上次坐標的大小,判斷滑動方向,並通過滑動方向來判斷是否需顯示或者隱藏對應的佈局,並且帶有動畫效果。 1.自動顯示隱藏Toolbar 首先給listView增加一個HeaderView,避免第一個Item被Tool ...
  • 有段時間沒有認認真真研習過android了,android畢竟是我進這個軟體開發圈子接觸的第一門技術,android已經成了口頭禪之類的東西了.當初學習android的時候大都是草草了事浮於錶面,很多知識點沒有深入學習,導致現在基礎不是很牢靠.在遇到某些高度技術問題的時候思路容易斷,所以我決定用博客 ...
  • 感悟:ViewPager即模仿微信可以左右滑屏。。。 在src下建立4個Fragment ,分別標識Fragment 1,Fragment 2,Fragment 3,Fragment 4.併在AndroidManifest中申明且分別建立4個佈局文件View1,2 3 4.並引入到對應的Fragme ...
  • 當做一款APP,需要選擇本地圖片時,首先考慮的無疑是系統相冊,但是Android手機五花八門,再者手機像素的提升,大圖無法返回等異常因數,導致適配機型比較困難,微信、QQ都相繼的在自己的APP里集成了圖片選擇功能,放棄了系統提供的圖片選擇器,這裡仿造QQ做了一個本地圖片選擇器,PS:之前有人說"仿" ...
  • 1,縱表轉橫表 縱表結構 Table_A: 轉換後的結構: 縱表轉橫表的SQL示例: SELECT Name , SUM(CASE WHEN Course = N'語文' THEN Grade ELSE 0 END) AS Chinese , SUM(CASE WHEN Course = N'數學' ...
  • 前期: 準備: 1、centos6.5 /7 x86_64(後期會更改主機名稱) 2、jdk 1.6 3、hadoop 4、zookeerper-3.4.5 5、zeromq-2.1.7 6、jzmq 2.1.0 7、mdrill 0.20.9 開始:(root用戶) (-註:這裡的主機名和host ...
  • 鏈接概述在3.7.0以後,WAL(Write-Ahead Log)模式可以使用,是另一種實現事務原子性的方法。WAL的優點在大多數情況下更快並行性更高。因為讀操作和寫操作可以並行。文件IO更加有序化,串列化(more sequential)使用fsync()的次數更少,在fsync()調用時好時壞的... ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...