本篇部落格只做個人對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...