欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python取讀csv文件做dbscan分析

 更新時(shí)間:2022年04月12日 18:48:15   作者:空中旋轉(zhuǎn)籃球  
這篇文章主要介紹了Python取讀csv文件做dbscan分析,讀取csv文件中相應(yīng)的列,然后進(jìn)行轉(zhuǎn)化,處理為本算法需要的格式,然后進(jìn)行dbscan運(yùn)算,下面文章的具體介紹需要的小伙伴可以參考一下

1.讀取csv數(shù)據(jù)做dbscan分析

讀取csv文件中相應(yīng)的列,然后進(jìn)行轉(zhuǎn)化,處理為本算法需要的格式,然后進(jìn)行dbscan運(yùn)算,目前公開的代碼也比較多,本文根據(jù)公開代碼修改,

具體代碼如下:

from sklearn import datasets
import numpy as np
import random
import matplotlib.pyplot as plt
import time
import copy
import pandas as pd
# from sklearn.datasets import load_iris
?
def find_neighbor(j, x, eps):
? ? N = list()
? ? for i in range(x.shape[0]):
? ? ? ? temp = np.sqrt(np.sum(np.square(x[j] - x[i]))) ?# 計(jì)算歐式距離
? ? ? ? if temp <= eps:
? ? ? ? ? ? N.append(i)
? ? return set(N)
?
?
def DBSCAN(X, eps, min_Pts):
? ? k = -1
? ? neighbor_list = [] ?# 用來保存每個(gè)數(shù)據(jù)的鄰域
? ? omega_list = [] ?# 核心對(duì)象集合
? ? gama = set([x for x in range(len(X))]) ?# 初始時(shí)將所有點(diǎn)標(biāo)記為未訪問
? ? cluster = [-1 for _ in range(len(X))] ?# 聚類
? ? for i in range(len(X)):
? ? ? ? neighbor_list.append(find_neighbor(i, X, eps))
? ? ? ? if len(neighbor_list[-1]) >= min_Pts:
? ? ? ? ? ? omega_list.append(i) ?# 將樣本加入核心對(duì)象集合
? ? omega_list = set(omega_list) ?# 轉(zhuǎn)化為集合便于操作
? ? while len(omega_list) > 0:
? ? ? ? gama_old = copy.deepcopy(gama)
? ? ? ? j = random.choice(list(omega_list)) ?# 隨機(jī)選取一個(gè)核心對(duì)象
? ? ? ? k = k + 1
? ? ? ? Q = list()
? ? ? ? Q.append(j)
? ? ? ? gama.remove(j)
? ? ? ? while len(Q) > 0:
? ? ? ? ? ? q = Q[0]
? ? ? ? ? ? Q.remove(q)
? ? ? ? ? ? if len(neighbor_list[q]) >= min_Pts:
? ? ? ? ? ? ? ? delta = neighbor_list[q] & gama
? ? ? ? ? ? ? ? deltalist = list(delta)
? ? ? ? ? ? ? ? for i in range(len(delta)):
? ? ? ? ? ? ? ? ? ? Q.append(deltalist[i])
? ? ? ? ? ? ? ? ? ? gama = gama - delta
? ? ? ? Ck = gama_old - gama
? ? ? ? Cklist = list(Ck)
? ? ? ? for i in range(len(Ck)):
? ? ? ? ? ? cluster[Cklist[i]] = k
? ? ? ? omega_list = omega_list - Ck
? ? return cluster
?
# X = load_iris().data
data = pd.read_csv("testdata.csv")
x,y=data['Time (sec)'],data['Height (m HAE)']
print(type(x))
n=len(x)
x=np.array(x)
x=x.reshape(n,1)
y=np.array(y)
y=y.reshape(n,1)
X = np.hstack((x, y))
cluster_std=[[.1]], random_state=9)
?
eps = 0.08
min_Pts = 5
begin = time.time()
C = DBSCAN(X, eps, min_Pts)
end = time.time()
plt.figure()
plt.scatter(X[:, 0], X[:, 1], c=C)
plt.show()

2.輸出結(jié)果顯示

修改參數(shù)顯示:

eps = 0.8
min_Pts = 5

3.計(jì)算效率

采用少量數(shù)據(jù)計(jì)算的時(shí)候效率問題不明顯,隨著數(shù)據(jù)量增大,計(jì)算效率問題就變得尤為明顯,難以滿足大量數(shù)據(jù)的計(jì)算需求了,后期將想辦法優(yōu)化計(jì)算方法或者收集C++代碼進(jìn)行優(yōu)化了。

到此這篇關(guān)于Python取讀csv文件做dbscan分析的文章就介紹到這了,更多相關(guān)Python  dbscan分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn安裝與基本使用教程

    Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn安裝與基本使用教程

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn安裝與基本使用,較為詳細(xì)的介紹了機(jī)器學(xué)習(xí)庫(kù)scikit-learn的功能、原理、基本安裝與簡(jiǎn)單使用方法,需要的朋友可以參考下
    2018-06-06
  • 一篇文章讓你快速掌握Pandas可視化圖表

    一篇文章讓你快速掌握Pandas可視化圖表

    大家都知道Pandas是基于Python平臺(tái)的大數(shù)據(jù)分析與處理的利器,它可以把十分復(fù)雜的可視化過程,變得簡(jiǎn)單一點(diǎn),這篇文章主要給大家介紹了關(guān)于Pandas可視化圖表的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)

    python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)

    這篇文章主要介紹了python實(shí)現(xiàn)將文件名批量命名為四位數(shù)or五位數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python+matplotlib實(shí)現(xiàn)量場(chǎng)圖的繪制

    Python+matplotlib實(shí)現(xiàn)量場(chǎng)圖的繪制

    matplotlib是基于Python語(yǔ)言的開源項(xiàng)目,pyplot提供一系列繪制2D圖形的方法。本文將帶大家學(xué)習(xí)matplotlib.pyplot.quiver()相關(guān)方法屬性并通過其繪制量場(chǎng)圖
    2021-12-12
  • python實(shí)現(xiàn)求純色彩圖像的邊框

    python實(shí)現(xiàn)求純色彩圖像的邊框

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)求純色彩圖像的邊框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Centos7 Python3下安裝scrapy的詳細(xì)步驟

    Centos7 Python3下安裝scrapy的詳細(xì)步驟

    這篇文章主要介紹了Centos7 Python3下安裝scrapy的詳細(xì)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 詳解讓Python性能起飛的15個(gè)技巧

    詳解讓Python性能起飛的15個(gè)技巧

    Python?一直以來被大家所詬病的一點(diǎn)就是執(zhí)行速度慢,但不可否認(rèn)的是?Python?依然是我們學(xué)習(xí)和工作中的一大利器。本文總結(jié)了15個(gè)tips有助于提升?Python?執(zhí)行速度、優(yōu)化性能,需要的可以參考一下
    2022-02-02
  • python socket多線程實(shí)現(xiàn)客戶端與服務(wù)器連接

    python socket多線程實(shí)現(xiàn)客戶端與服務(wù)器連接

    這篇文章主要為大家詳細(xì)介紹了python socket多線程實(shí)現(xiàn)客戶端與服務(wù)器連接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python裝飾器的定義和使用詳情

    Python裝飾器的定義和使用詳情

    這篇文章主要介紹了Python裝飾器的定義和使用詳情,裝飾器給已有函數(shù)增加額外的功能的函數(shù),本質(zhì)上是一個(gè)閉包函數(shù),下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04
  • sqlalchemy對(duì)象轉(zhuǎn)dict的示例

    sqlalchemy對(duì)象轉(zhuǎn)dict的示例

    這篇文章主要介紹了sqlalchemy對(duì)象轉(zhuǎn)dict的示例,需要的朋友可以參考下
    2014-04-04

最新評(píng)論