1. 機器學習的步驟
資料,模型選擇,訓練,測試,**
2. 安裝機器學習庫sklearn
pip list 檢視版本
python -m pip install --upgrade pip
pip install -u scikit-learn
pip uninstall sklearn
pip uninstall numpy
pip uninstall scipy
pip install scipy
pip install numpy
pip install sklearn
2. 匯入sklearn的資料集
from sklearn.datasets import load_iris
iris = load_iris()
iris.keys()
x = iris.data # 獲得其特徵向量
y = iris.target # 獲得樣本標籤
iris.feature_names # 特徵名稱
3.k均值演算法
k-means是乙個反覆迭代的過程,演算法分為四個步驟:
(x,k,y)
1) 選取資料空間中的k個物件作為初始中心,每個物件代表乙個聚類中心;
def initcenter(x, k): kc
2) 對於樣本中的資料物件,根據它們與這些聚類中心的歐氏距離,按距離最近的準則將它們分到距離它們最近的聚類中心(最相似)所對應的類;
def nearest(kc, x[i]): j
def xclassify(x, y, kc):y[i]=j
3) 更新聚類中心:將每個類別中所有物件所對應的均值作為該類別的聚類中心,計算目標函式的值;
def kcmean(x, y, kc, k):
4) 判斷聚類中心和目標函式的值是否發生改變,若不變,則輸出結果,若改變,則返回2)。
while flag:
y = xclassify(x, y, kc)
kc, flag = kcmean(x, y, kc, k)
參考官方文件:
4. 作業:
1). 撲克牌手動演練k均值聚類過程:>30張牌,3類
本人抽取了如上30張牌,一開始以3,4,5作為聚類中心,最終結果如上圖所示,最終中心為2,6,j(12)。
2). *自主編寫k-means演算法 ,以鳶尾花花瓣長度資料做聚類,並用散點圖顯示。(加分題)
importnumpy as np
from sklearn.datasets import
load_iris
import
random
import
matplotlib.pylab as plt
#(1)定義計算歐幾里得距離函式。
defjl(data1,data2):
return np.sqrt(sum((data1-data2)**2))
#(2)構建k個隨機質心。
defsjcenter(k,data):
sjksz=
newdata=
for i in
range(k):
sjk = random.randint(0, len(data)-1)
if sjk not
insjksz:
else
: i=i-1;
return
newdata
#(3)定義k-means函式實現演算法。
defkmeans(k,data,center):
n =len(data)
dist = np.zeros([n, k + 1])
newcenter = np.zeros([k, data.shape[1]])
while
true:
for i in
range(n):
for j in
range(k):
dist[i, j] =jl(data[i],center[j])
dist[i, k] =np.argmin(dist[i, :k])
for i in
range(k):
index = dist[:, k] ==i
newcenter[i, :] = data[index, :].mean(axis=0)
if (np.all(center ==newcenter)):
break
else
: center =newcenter
return
dist
#(4)主函式中呼叫上述4個函式實現k-means演算法,並繪製資料散點圖檢視聚類中心。
defmain(k,data):
center =sjcenter(k, data)
dist=kmeans(k,data,center)
plt.scatter(data[:, 0], data[:, 1], c=dist[:,k], s=50, cmap='
rainbow')
#類中心用黑點標出
3). 用sklearn.cluster.kmeans,鳶尾花花瓣長度資料做聚類,並用散點圖顯示.
#(1)直接呼叫sklearn庫實現對鳶尾花資料進行聚類分析。
2,3題都用了鳶尾花的花瓣資料做了聚類,效果圖也如上二圖所示,黑點為聚類中心,可以看出較好的吻合。
4). 鳶尾花完整資料做聚類並用散點圖顯示.
利用鳶尾花的完整資料進行聚類分析,與實際的分類做出比較後如上圖所示,第一第二聚模擬較好,第三個聚類較不準確。
5).想想k均值演算法中以用來做什麼?
1、給機器識別物種
2、**人習慣愛好
K 均值演算法
動態聚類方法是模式識別中一種普遍採用的方法,它具有以下3個要點 1 選定某種距離度量作為樣本間的相似性度量 2 確定某個評價聚類結果質量的準則函式 3 給定某個初始分類,然後用迭代演算法找出使準則函式取極值的最好的聚類結果 k means演算法 輸入 聚類個數k,以及包含 n個資料物件的資料庫。輸出...
K均值演算法
假設需要聚成k個類 演算法先會隨機從資料集中選取k個點,把他們當做k個聚類的中心點 依次計算資料集中的每乙個點與各個中心點的距離,離哪個中心點近,就劃分到那個中心點對應的聚類下 計算分到同一類簇下,所有點的均值,更新中心點,重複 直至達到迭代結束條件 import numpy as np impor...
k均值演算法
1 撲克牌手動演練k均值聚類過程 30張牌,3類 實驗總牌數為30,分三類進行三輪迭代。第一輪 抽取聚類中心為 3 4 7.聚類結果為 第二輪 經過求平均後,重新確定聚類中心為 2 4 10 第三輪 對上類再進行求平均,選定聚類中心為2 5 10 最終聚類中心穩定在2 5 10,以此為小中大劃分。2...