Scikit Learn Реализация DBSCAN для 0,7 миллиона точек данных с двумя столбцами (широта и долгота) потребляет 128 ГБ + ОЗУ. Как исправить эту проблему с памятью? - PullRequest
0 голосов
/ 06 июня 2019

Мы сталкиваемся с проблемами памяти при реализации DBSCAN программы scikit learn для 0,7 миллиона точек данных с двумя столбцами (широта и долгота).

Мы также попытались изменить значения эпсилона на небольшие числа и уменьшить количество минимально необходимых точек для кластера.

import pandas as pd, numpy as np, matplotlib.pyplot as plt, time
from sklearn.cluster import DBSCAN
from sklearn import metrics
from geopy.distance import great_circle
from shapely.geometry import MultiPoint
%matplotlib inline

kms_per_radian = 6371.0088

df = pd.read_csv('data/xxxxxxxxx.csv', encoding='utf-8')

// represent points consistently as (lat, lon).

coords = df.as_matrix(columns=['lat', 'lon'])

// define epsilon as 1.5 kilometers, converted to radians for use by haversine.

epsilon = 1.5 / kms_per_radian



db = DBSCAN(eps=epsilon, min_samples=1, algorithm='ball_tree', metric='haversine').fit(np.radians(coords))

Ядро убито автоматически. Пожалуйста, предложите способы оптимизации кода.

...