03 非監督學習演算法k means原理及案例

2021-09-29 11:31:56 字數 1349 閱讀 3447

from sklearn.decomposition import pca

import pandas as pd

from sklearn.cluster import kmeans

from matplotlib import pyplot as plt

from sklearn.metrics import silhouette_score

# 讀取四張表的資料

prior = pd.read_csv("./data/instacart_data/order_products__prior.csv")

products = pd.read_csv("./data/instacart_data/products.csv")

orders = pd.read_csv("./data/instacart_data/orders.csv")

aisles = pd.read_csv("./data/instacart_data/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_id'])

# 主成分分析

pca = pca(n_components=0.9)

data = pca.fit_transform(cross)

print(data.shape)

km = kmeans(n_clusters=4)

# 縮小資料

x = data[:500]

km.fit(x)

predicted = km.predict(x)

# 顯示聚類的結果

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

colored = ['orange', 'green', 'blue', 'purple']

color = [colored[i] for i in predicted]

# 隨機選取第乙個特徵和第二十個特徵進行繪圖

plt.scatter(x[:,1], x[:, 20], color=color)

print("輪廓係數:", silhouette_score(x, predicted))

無監督學習 K means演算法

是指在未加標籤的資料中,根據資料之間本身的屬性特徵和關聯性對資料進行區分,相似相近或關聯性強的資料放在一起,而不相似不相近 關聯性不強的資料不放在一起。應用場景 降維,聚類演算法,關聯演算法 有監督學習和無監督學習的區別 分類問題,要求實現必須明確知道各個類別的訊息,建立的前提是待分類項都有乙個類別...

K means演算法 無監督學習

現實生活中常常會有這樣的問題 缺乏足夠的先驗知識,因此難以人工標註類別或進行人工類別標註的成本太高。很自然地,我們希望計算機能代我們完成這些工作,或至少提供一些幫助。根據類別未知 沒有被標記 的訓練樣本解決模式識別中的各種問題,稱之為無監督學習。我們可以怎樣最有用地對其進行歸納和分組?我們可以怎樣以...

無監督學習 K means演算法

聚類演算法是一種無監督學習演算法。k均值演算法是其中應用最為廣泛的一種,演算法接受乙個未標記的資料集,然後將資料聚類成不同的組。k均值是乙個迭代演算法,假設我們想要將資料聚類成k個組,其方法為 隨機選擇k個隨機的點 稱為聚類中心 對與資料集中的每個資料點,按照距離k個中心點的距離,將其與距離最近的中...