K Means演算法對點集進行分類

2021-08-24 23:21:47 字數 1224 閱讀 3460

k_means

什麼是聚類分析

聚類分析是在資料中發現資料物件之間的關係,將資料進行分組,組內的相似性越大,組間的差別越大,則聚類效果越好。

明顯分離的

可以看到(a)中不同組中任意兩點之間的距離都大於組內任意兩點之間的距離,明顯分離的簇不一定是球形的,可以具有任意的形狀。

演算法思想較為簡單如下所示:

選擇k個點作為初始質心

repeat

將每個點指派到最近的質心,形成k個簇

重新計算每個簇的質心

until 簇不發生變化或達到最大迭代次數

核心**:

//類方法:迭代一次

public void iterateonce()}}

//逐一計算每個簇的質心

for (int i = 0; i <= _clusterlist.count - 1; i++)

if (count != 0)

"x=" + _clusterlist[i]._x.tostring() + ";y=" + _clusterlist[i]._y.tostring());

}}

cluster 類

//簇質心座標

public double _x;

public double _y;

//質心顏色

public color _color;

public pointstyle _pointstyle;

//類構造方法

public cluster(double x, double y)

sample 類

//樣本座標

public double _x;

public double _y;

//樣本所屬簇的編號(編號從0開始)

public int _clusterid = -1;

//類構造方法1

public sample(double x, double y)

//類構造方法2

public sample(double x, double y, int clusterid)

用knn演算法對鳶尾花資料集進行分類

from sklearn.datasets import load iris from sklearn.model selection import train test split from sklearn.preprocessing import standardscaler from skle...

使用K近鄰對iris資料集進行分類

聽了好幾年的k近鄰演算法 今天終於接觸到了 原理很簡單 講樣本對映為多維空間中的點 無標籤新樣本 由空間中與其最近的k個點中數量最多的標籤來定義 以下為暴力實現 高效演算法留坑 from sklearn import datasets def cmp elem return elem 0 iris ...

使用k means聚類演算法對矩陣元素進行分類

實驗目的 實驗內容 假設把樣本集分為k個類別,演算法描述如下 import sklearn import numpy as np import pandas as pd from matplotlib import pyplot as plt randomdata.py a np.random.ra...