機器學習 聚類 12

2021-10-11 02:10:39 字數 2450 閱讀 4954

聚類的概念:一種無監督的學習,事先不知道類別,自動將相似的物件歸到同乙個簇中。

應用場景:文件分類器、客戶分類、保險欺詐檢測、 乘車資料分析

其中p=1為曼哈頓距離

p=2為歐氏距離

使用vdm距離:

其中 mu,a,i表示在第i個樣本簇中屬性u上取值為a的樣本數

mu,a表示屬性u上取值為a的樣本數

k為樣本簇數

使用閔科夫斯基距離和vdm的混合

其中nc為有序屬性個數

根據不同屬性的重要性,可使用「加權」距離

①、kmeans演算法

主要思想:

在給定k值和k個初始類簇中心點的情況下,把每個點(亦即資料記錄)分到離其最近的類簇中心點所代表的類簇中,所有點分配完畢之後,根據乙個類簇內的所有點重新計算該類簇的中心點(取平均值),然後再迭代的進行分配點和更新類簇中心點的步驟,直至類簇中心點的變化很小,或者達到指定的迭代次數。

k值選取原則:評價效果好且結果可解釋

初始點的選取原則: 盡可能遠

優點:1、解決聚類問題的經典演算法,簡單

2、當處理大資料集時,該演算法保持可伸縮性和高效率

3、當簇近似為高斯分布時,它的效果較好

缺點:1、在簇的平均值可被定義的情況下才能使用,可能不適用於某些應用

2、必須實現給出k(要生成簇的數目),而且對初值敏感,即對於不同的初值,可能會導致不同結果

3、不適合非凸形狀的簇或者大小差別很大的簇

4、對雜訊和孤立點敏感

②、學習向量量化(lvq)

③、高斯混合聚類

亞洲足球隊實力聚類

import numpy as np

import pandas as pd

from pandas import series, dataframe

import matplotlib.pyplot as plt

import seaborn as sns

%matplotlib inline

from sklearn.cluster import kmeans

from mpl_toolkits.mplot3d import axes3d

# 匯入資料集

data = pd.read_csv('asiazoo.txt', header=none)

data.columns = ["國家","2006世界盃","2010世界盃","2007亞洲盃"]

x = data.iloc[:,1:]

km = kmeans(n_clusters=3)

y_ = km.fit_predict(x)

sns.set_style(style='white')

plt.rcparams['font.sans-serif'] = ['simhei']

plt.rcparams['axes.unicode_minus'] = false

# 繪製聚類後的散點圖

plt.figure(figsize=(10,6))

ax = plt.subplot(projection = '3d')

ax.scatter3d(data['2006世界盃'], data['2010世界盃'], data['2007亞洲盃'], s=200, c= y_, alpha=1)

ax.set_xlabel('2006世界盃')

ax.set_ylabel('2010世界盃')

ax.set_zlabel('2007亞洲盃')

plt.show()

# 檢視每個類的球隊

data['類別'] = y_

for _, indexes in data.groupby('類別').groups.items():

countrys = data.loc[indexes, '國家']

for country in countrys:

print(country, end=' ')

print()

資料集:

散點圖:

每個類別球隊:

機器學習筆記12 聚類

在 無監督學習 中,訓練樣本的標記資訊是未知的,目標是通過對無標記訓練樣本的學習來揭示資料的內在性質及規律。此類學習任務中研究最多的是聚類。此外,無監督學習還有密度估計 異常檢測等。常見的聚類包括原型聚類 密度聚類 層次聚類等。原型聚類 此類演算法假設聚類結果能通過一組原型刻畫。通常情形下,演算法先...

機器學習 聚類

聚類的過程是將樣本分類的過程,聚類屬於無監督學習,資料中沒有label,訓練之前並不知道樣本屬於哪乙個類別,需要借鑑經驗值。kmeans聚類 模型假設 資料的分布是k個 sigma 相同的高斯分布的,每個分布裡有 n 1,n 2,n k 個樣本,其均值分別是 mu 1,mu 2,mu k 那麼每個樣...

機器學習聚類

模型調參 from sklearn.cluster import dbscan 構建空列表,用於儲存不同引數組合下的結果 res 迭代不同的eps值 for eps in np.arange 0.001,1 0.05 迭代不同的min samples值 for min samples in rang...