python 공간 데이터 집합 실현 - DBSCAN

1456 단어 arcpy
주요 사상 은 좌표 값 을 읽 고 집합 하 는 것 이다. 좌표 출처 는 shp, txt, 데이터 베 이 스 를 포함한다.

# encoding: utf-8
import arcpy
import numpy as np
import pandas as pd
from sklearn.cluster import DBSCAN
outgdb=r"D:\84.gdb"
lsls=[]
with open(r"C:\Users\h\Desktop\d2.txt",'r')as df:
    for line in df:
        line=line.split(',')
        ls=[]
        for value in line:
            ls.append(value)
        lsls.append(ls)
data=pd.DataFrame(lsls,columns=[ "vehicle", "sj", "wj","x","y","wz","speed","dir","state","carstate","md"])

df1 = data.ix[:, 3:5]


convert = df1.values
print "  "
y_pred = DBSCAN(eps=5, min_samples=5).fit(convert)
lable = y_pred.labels_
lableC = lable.reshape(lable.size, 1)
uniqueValue=np.unique(lable)
res = np.hstack((convert , lableC))
arr_res=[]
arr_clu=[]
for lb in uniqueValue:
    if(lb!=-1):
        arr_new = res[res[:, res.shape[1]-1] ==lb, :res.shape[1]-1]
        lsls=[]
        for row in arr_new:
            ls=[]
            ls.append(float(row[0]))
            ls.append(float(row[1]))
            lsls.append(ls)
        arr_new=np.array(lsls)
        arr_mean=np.mean(arr_new, axis=0)
        arr_res.append(arr_mean)
        arr_clu.append(lb)
print "  "
if(len(arr_res)>-1):
    df=pd.DataFrame(arr_res,columns=["x","y"])
    df.to_excel("1.xls")



좋은 웹페이지 즐겨찾기