sklearn實戰之kmeans 聚類

2021-10-02 17:47:18 字數 2113 閱讀 7646

本篇部落格只做個人對kmeans演算法**的案例展示

# 常規的導包

from ipython.core.interactiveshell import interactiveshell

interactiveshell.ast_node_interactive='all'

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

plt.style.use('seaborn')

plt.rcparams['axes.unicode_minus']=false #設定顯示中文後,負號顯示受影響。解決座標軸上亂碼問題

plt.rcparams['font.family'] = ['arial unicode ms'] #mac用解決中文顯示問題

from sklearn.cluster import kmeans

from sklearn.datasets import make_blobs

#創造資料

x,y=make_blobs(n_samples=500,n_features=2,centers=4,random_state=42)

# 觀察資料的特點

data=pd.dataframe(x)

data['2']=y

data.columns=['特徵1','特徵2','標籤']

# 畫圖觀察資料特點

fp = plt.figure(figsize=(16, 6))

fp.add_subplot(1, 2, 1)

plt.scatter(data.特徵1, data.特徵2);

fp.add_subplot(1, 2, 2)

plt.scatter(data.特徵1, data.特徵2, color=data.標籤.map());

用輪廓係數方法調參

from sklearn.metrics import silhouette_score

from sklearn.metrics import silhouette_samples

l=for i in range(2,21):

k=ikmeans=kmeans(n_clusters=k,random_state=666)

kmeans.fit(x)

a=silhouette_score(x,kmeans.labels_)

lb=pd.dataframe(l)

b.columns=['k','s']

plt.figure(figsize=(8,6),dpi=100)

plt.plot(b.k,b.s,color='r')

plt.xticks(b.k)

plt.xlabel('k')

plt.ylabel('輪廓係數')

plt.title('kmeans輪廓係數學習曲線');

觀察輪廓學習曲線

得到當k=4時聚類效果最好

最後導包建模:

from sklearn.cluster import kmeans

km=kmeans(n_clusters=4,random_state=666)

km.fit(x)

km.labels_

km.fit_predict(x)

那麼, 我們什麼時候需要predict呢?當資料量太大的時候!其實我們不必使用所有的資料來尋找質心,少量的資料就 可以幫助我們確定質心了。當我們資料量非常大的時候,我們可以使用部分資料來幫助我們確認質心, 剩下的資料 的聚類結果,使用predict來呼叫。

機器學習實戰之KMean

kmeans演算法步驟 1.確定聚類個數k 2.隨機選擇k個質心 3.對於所有樣本點 根據樣本點到質心的距離分類 4.分類完成後,如果所有樣本點的類別沒有變化,演算法結束 如果有變化,重新計算質心 當前類中樣本的平均值 回到步驟3 幾個問題 1.聚類個數k的確定 2.初始時質心的選取 3.容易出現區...

sklearn機器學習 聚類演算法K Means

n init k均值演算法將在不同質心種子下執行的次數。就慣性而言,最終結果將是n init個連續執行的最佳輸出。max iter 單次執行的k均值演算法的最大迭代次數。tol 預設 1e 4,關於frobenius範數的相對容差,該範數表示兩個連續迭代的聚類中心的差異,以宣告收斂。precompu...

sklearn之樸素貝葉斯實戰

multinomialnb 實現了資料服從多項式分布時的貝葉斯演算法。import numpy as np 隨機產生0 4之間的整數,產六組,一組100個 x np.random randint 5,size 6,10 y np.array 1,2,3,4,5,6 from sklearn.baye...