非監督學習

2021-10-08 15:36:25 字數 2376 閱讀 1137

主要方法:k-means

k-means步驟

1.隨機設定k個特徵空間內的點作為初始的聚類中心

2.對於其他每個點計算到k個中心的距離,未知的點選擇最近的乙個聚類中心點作為標記類別

3.對著標記的聚類中心之後,重新計算出每個聚類的新中心點(平均值)

4.如果計算得出的新中心點與原中心點一樣,那麼結束,否則重新進行第二步過程(以新中心點作為聚類中心)

k-means api:sklearn.cluster.kmeans

語法:

sklearn.cluster.kmeans(n_clusters=8,init=『k-means++』)----k-means聚類

n_clusters:開始的聚類中心數量

init:初始化方法,預設為』k-means ++』

labels_:預設標記的型別,可以和真實值比較(不是值比較)

kmeans效能評估指標

kmeans效能評估指標api:sklearn.metrics.silhouette_score

語法:

sklearn.metrics.silhouette_score(x, labels)計算所有樣本的平均輪廓係數

x:特徵值

labels:被聚類標記的目標值

kmeans總結

特點分析:

採用迭代式演算法,直觀易懂並且非常實用

缺點:

容易收斂到區域性最優解(多次聚類)

需要預先設定簇的數量(k-means++解決)

案例:k-means對instacart market使用者聚類

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

# 讀取四張表的資料----資料與.py檔案在同一目錄下

prior = pd.read_csv("order_products__prior.csv")

products = pd.read_csv("products.csv")

orders = pd.read_csv("orders.csv")

aisles = pd.read_csv("aisles.csv")

# 合併為一張表

mt = pd.merge(prior,products,on=['product_id','product_id'])

mt = pd.merge(mt,orders,on=['order_id','order_id'])

mt = pd.merge(mt,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]

# 假設使用者一共分為4個類別

km = kmeans(n_clusters=4)

km.fit(x)

predict = km.predict(x)

# 顯示結果

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

colr = [colored[i] for i in predict]

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

plt.show()

# 評判聚類效果--輪廓係數

print(silhouette_score(x,predict))

結果為:

監督學習和非監督學習

重新看一遍ng的機器學習課程,第一次寫讀書筆記,希望能夠堅持下來!對於監督學習,首先來看乙個例子,如下圖.圖中的資料來自r語言中的boston資料集,其中lstat軸表示地位較低的人口比重,medv軸表示median value of owner occupied homes in 1000s。如果...

監督學習和非監督學習

監督學習 監督學習就是分類,把人們已經處理好的訓練樣本 即已知資料和對應輸出 給計算機,計算機通過規律訓練出乙個最佳模型,再用這個模型對輸入的資料進行分類,得出對應的輸出。從而使計算機具有對未知資料進行分類的功能。特點 目標明確 需要帶標籤的訓練樣本 分類效果很容易評估 非監督學習 非監督學習沒有訓...

監督學習和無監督學習 監督學習與非監督學習

監督學習 supervised learning 的任務是學習乙個模型,使模型能夠對任意給定的輸入,對其相應的輸出做出乙個好的 即 利用訓練資料集學習乙個模型,再用模型對測試樣本集進行 例如kaggle上的鐵達尼號比賽。官方提供旅客資料 資料集1 姓名,年齡,性別,社會經濟階層,是否生存等 要求參賽...