當前位置:
首頁 > 知識 > DBScan+iris數據集實現+參數調節

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

DBScan+iris數據集實現+參數調節

打開今日頭條,查看更多圖片

原始數據里是分成三個類別的,但是做了聚類以後只分出了兩個類別,考慮可能是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

結果:也沒找到什麼明顯的拐點。。。能給什麼幫助,先記錄在這裡,等有空再研究吧

DBScan+iris數據集實現+參數調節

---------------------

作者:OldBibi

原文:https://blog.csdn.net/weixin_43909872/article/details/85342540

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

Tensorflow_08A_Keras 助攻下的 Sequential 模型
Spring 中的事務操作、註解、以及 XML 配置

TAG:程序員小新人學習 |