什麼叫做無監督學習?資料集只有特徵值但是缺少目標值。不知道自己做得**值是正確或不正確。
k-means如上圖,每個人的衣著作為每個人特徵,我們將相似的特徵作為乙個類別進行分析。簡稱:「物以類聚,人以群分」。
舉例k:把資料劃分為多少個類別。例:k=2,則劃分為2個類別;k=3,則劃分為3個類別;k=4,則劃分為4個類別…
一般情況下,我們需要提前知道類別的個數。若不知道類別個數時,則k就是乙個超引數。
當k=3時,
隨機在資料中抽取三個樣本,當作三個樣本的中心點(k1,k2,k3)。
計算其餘的點分別到這三個中心點的距離,每個樣本有三個距離(a,b,c),從中選出距離最近的乙個點作為自己的標記。形成三個族群。
分別計算這三個族群的平均值,把三個平均值與之前三個舊中心點進行比較。如果比較相同,結束聚類;如果不相同,把這三個平均值當作新的中心點。重複第2步。
知識儲備sklearn.cluster.kmeans(n_clusters=8,init=『k-means++』)
**演示:
import pandas as pd
from sklearn.decomposition import pca
from sklearn.cluster import kmeans
import matplotlib.pyplot as plt
from sklearn.metrics import silhouette_score
defmeans()
:# 讀取四張表的資料
prior = pd.read_csv(
"./data/instacart/order_products__prior.csv"
) products = pd.read_csv(
"./data/instacart/products.csv"
) orders = pd.read_csv(
"./data/instacart/orders.csv"
) aisles = pd.read_csv(
"./data/instacart/aisles.csv"
)# 合併四張表到一張表 (使用者-物品類別)
_mg = pd.merge(prior, products, on=
['product_id'
,'product_id'])
_mg = pd.merge(_mg, orders, on=
['order_id'
,'order_id'])
mt = pd.merge(_mg, aisles, on=
['aisle_id'
,'aisle_id'])
# 交叉表(特殊的分組工具)
cross = pd.crosstab(mt[
'user_id'
], mt[
'aisle'])
# 進行主成分分析
pca = pca(n_components=
0.9)
data = pca.fit_transform(cross)
# 把樣本數量減少
x = data[
:500
]# 假設使用者一共分為四個類別
km = kmeans(n_clusters=4)
km.fit(x)
predict = km.predict(x)
# 顯示聚類的結果
plt.figure(figsize=(10
,10))
# 建立四個顏色的列表
colored =
['orange'
,'green'
,'blue'
,'purple'
] colr =
[colored[i]
for i in predict]
plt.scatter(x[:,
1], x[:,
20], color=colr)
plt.xlabel(
"1")
plt.ylabel(
"20"
)
plt.show(
)# 評判聚類效果,輪廓係數
聚類評估標準
對於每乙個樣本
計算藍1到自身類別的點距離的平均值a_i
計算藍1分別到紅色類別,綠色類別所有的點的距離,求出平均值
藍1:輪廓係數[-1, 1]
通過極端情況考慮:
b1, b2,取其中最小的值當做b_ i
b_i>>a_i: 1 完美
a_i>>b_i:-1 最差
機器學習之無監督聚類問題
通過判斷彼此間的距離來實現聚類 無監督 資料沒有明確說明屬於哪一類,無需去訓練模型 import pandas as pd votes pd.read csv d test machinelearning 114 congress.csv print votes party value counts...
機器學習之無監督聚類問題
無監督 資料沒有明確說明屬於哪一類,無需去訓練模型 import pandas as pd votes pd.read csv d test machinelearning 114 congress.csv print votes party value counts print votes.mea...
機器學習個人筆記(三)之無監督學習
前言 宣告 本定義僅為個人理解,並非是官方專業定義 無監督學習即,讓機器通過某種演算法,自動的從一堆資料集裡區分開來不同屬性的資料,然後當機器具有區分類別的能力之後,再給他乙個他沒見過的樣本,讓他用他的能力來識別這個樣本屬於哪一類。這部分會給出幾個例子來幫助理解什麼是無監督學習。吳恩達的課程裡沒有貓...