DBScan+iris數據集實現+參數調節
關於DBScan的理論就不再黏貼了,這裡記錄一個講的比較詳細的網站 : https://www.cnblogs.com/pinard/p/6208966.html
下午嘗試著用iris數據集去測試一下, 但發現效果不太理想,後面又用比較簡單的參數調節方法去調參數,似乎也不理想,這裡把記錄下來以供後面繼續研究。
Load data from iris.csv
import pandas as pd
import numpy as np
import math
import operator
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
data = pd.read_csv("iris.csv")
data = np.mat(data)
1
2
3
4
5
6
7
8
9
Use sklearn.DBSCAN to do the clustering
y_pred = DBSCAN(eps=0.5, min_samples=5).fit_predict(data[:, 1:5])
1
2
Show the result
colors = "gbycm"
y_pred_color = []
category = []
for pred in y_pred:
if pred == -1:
color = "r"
else:
color = colors[pred]
y_pred_color.append(color)
for type in data[:, 5]:
if type == "setosa":
category.append(0)
elif type == "versicolor":
category.append(1)
elif type == "virginica":
category.append(2)
plt.scatter(data[:, 0].tolist(), category, c=y_pred_color)
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
打開今日頭條,查看更多圖片原始數據里是分成三個類別的,但是做了聚類以後只分出了兩個類別,考慮可能是eps=0.5, min_samples=5這兩個參數選的不好,於是嘗試其他參數,但也沒有得到3個分類的目標
於是找了一些參數調節的方法,下面這個是說的比較多的演算法:
計算每個點與其他所有點之間的歐幾里德距離 計算每個點的k-距離值,並對所有點的k-距離集合進行升序排序,輸出的排序後的k-距離值
將所有點的k-距離值,在Excel中用散點圖顯示k-距離變化趨勢 根據散點圖確定半徑Eps的值
根據給定MinPts=4,以及半徑Eps的值,計算所有核心點,並建立核心點與到核心點距離小於半徑Eps的點的映射
根據得到的核心點集合,以及半徑Eps的值,計算能夠連通的核心點,並得到離群點
將能夠連通的每一組核心點,以及到核心點距離小於半徑Eps的點,都放到一起,形成一個簇
嘗試實現一下 :
data = pd.read_csv("iris.csv")
data = np.mat(data)
k = 4
distances = {}
for x in range(len(data)):
distancesForRow = []
for y in range(len(data)):
if x != y:
dist = euclideanDistance(data[x, 1:5], data[y, 1:5])
distancesForRow.append(dist)
distancesForRow.sort(reverse = True)
distances[x] = distancesForRow[k-1]
newDistances = sorted(distances.items(), key = operator.itemgetter(1))
for x in range(len(newDistances)):
plt.scatter(x, newDistances[x][1])
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
結果:也沒找到什麼明顯的拐點。。。能給什麼幫助,先記錄在這裡,等有空再研究吧
---------------------
作者:OldBibi
原文:https://blog.csdn.net/weixin_43909872/article/details/85342540
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
※Tensorflow_08A_Keras 助攻下的 Sequential 模型
※Spring 中的事務操作、註解、以及 XML 配置
TAG:程序員小新人學習 |