利用無標籤的資料學習資料的分布或資料與資料之間的關係被稱作無監督學習。
有監督學習與無監督學習的最大去區別在於資料是否有標籤。
無監督學習最常見的應用場景是聚類和降維。
聚類
sklearn聚類演算法包含在sklearn.cluster這個模組中,k-means,近鄰傳播演算法,dbscan等。不同演算法和資料,演算法的耗時和結果不同。
函式呼叫資料的輸入格式:
標準資料輸入格式:[樣本個數,特徵個數]定義的矩陣形式;
相似性矩陣輸入格式:[樣本數目]定義的矩陣形式,矩陣中每個元素為兩個樣本的相似度,如dbscan,affinitypropagation(近鄰傳播演算法),如果以余弦相似度為例,則對角線元素全為1。矩陣中每個元素的取值範圍為[0,1]。
klearn.cluster模組代表函式
sklearn.cluster模組代表函式
演算法名稱
引數可擴充套件性
相似性度量
k-means
聚類個數
大規模資料
點距離dbscan
鄰域大小
大規模資料
點距離gaussion.mixtures
聚類個數即其他超參
複雜度高,不適合大規模資料
馬氏距離
birch
分子因子,閾值等其他超參
大規模資料
兩點間歐氏距離
降維就是在保證資料所具有的代表性特徵或者分布的情況下,將高維資料轉化為低維度資料的過程。
可以實現資料的視覺化。
精簡資料。
高位資料的分類通過降維處理可以得到分類,如分類演算法k-means與降維演算法nmf之間存在等價性。
降維,其實可以理解為對資料的組成成分進行分解(decomposition) 。
sklearn.decomposition
演算法名稱
引數可擴充套件性
使用任務
pca所降維度及其他超引數
大規模資料
訊號處理
fastica
所降維度及其他超引數
超大規模資料
圖形影象特徵提取
nmf所降維度及其他超引數
大規模資料
圖形影象特徵提取
lda所降維度及其他超引數
大規模資料
文字資料,主題挖掘
k-means聚類演算法:
演算法以k為引數,把物件分為k簇,簇內相似度高,簇間相似度低。
隨機選擇k個點作為初始聚類中心。
然後根據距離公式計算其他點。
import numpy as np
from sklearn.cluster import kmeans
def loaddata(filepath):
fr=open(filepath,'r+')
lines=fr.readlines() #讀取整個檔案
retdata= #城市各項消費資訊
retcityname= #城市名稱
print(lines)
for line in lines:
items=line.strip().split(",") #返回城市名稱,各項消費資訊
print(items)
for item in items:
it=item.strip().split(",")
return retdata,retcityname
if __name__=="__main__":
data,cityname=loaddata("e:\\python\data.txt")
'''所需引數:
n_clusters:指定聚類中心的個數
init:初始聚類中心的初始化方法
max_iter: 最大迭代次數
'''km=kmeans(n_clusters=4,max_iter=1000)
label=km.fit_predict(data) #計算簇中心,以及為簇分配序號
expenses=np.sum(km.cluster_centers_,axis=1) #每個簇求和
print(expenses)
citycluster=(,,,) #將城市按label分成設定的簇
for i in range(len(cityname)):
for j in range(len(citycluster)):
print("第%d類:"%(j+1))
print(citycluster[j])
print("平均花費expenses:%.2f\n"%expenses[j]) #每個簇的平均花費輸出
'''expense:聚類中心點的數值加和,即平均消費水平
拓展和改進
計算兩條資料相似性時,skleande k-means預設用的歐式距離。雖然還有余弦距離,
馬氏距離等多種方法,但沒有設定距離方法的引數。
可以更改源**:
建議使用scipy.apatial.distance.cdist
scipy.apatial.distance.cdist(a,b,metric="cosine")使用余弦距離
'''
讀出的資料:
拆分資料:
聚類結果:
實踐思考:
loaddata("e:\\python\data.txt"),程式中需要讀入資料,注意路徑格式的寫法。
readlines()載入了所有資料,['北京,2959.19,730.79,749.41,513.34,467.87,1141.82,478.42,457.64','...'...],第一次採用items=line.strip().split(",") 拆分為出''北京,2959.19,730.79,749.41,513.34,467.87,1141.82,478.42,457.64'', 第二次it=item.strip().split(",")拆分出城市名稱和相關資料。
有監督學習和無監督學習 無監督學習
一.無監督學習包含的演算法 聚類 kmeans聚類演算法 降維 pca 之所以叫無監督學習 是因為模型是從無標籤的資料開始學習,沒有目標值。二.kmeans聚類 1.聚類演算法步驟 定義 將高維資料轉化為低維資料的過程,在此過程中可能會捨棄原有資料,創造新的變數 作用 降低原始資料的維數 複雜度 損...
無監督學習與監督學習
1.無監督和有監督的理解方法有很多,主要可以從以下幾方面來理解 1 無監督與監督學習的區別在於乙個無教學值,乙個有教學值。但是,個人認為他們的區別在於無監督學習一般是採用聚簇等演算法來分類不同樣本。而監督學習一般是利用教學值與實際輸出值產生的誤差,進行誤差反向傳播修改權值來完成網路修正的。但是無監督...
監督學習和無監督學習
機器學習要解決的第一類問題是分類問題。機器學習的另一項任務是回歸,它主要用於 數值型資料。大多數人可能都見過回歸的例子 資料擬合曲線 通過給定資料點的最優擬合曲線。分類和回歸都屬於監督學習,之所以稱之為監督學習,是因為這類演算法必須知道 什麼,即目標變數的分類資訊。與監督學習對應的是無監督學習,此時...