edits of segmentation providers
This commit is contained in:
@@ -3,7 +3,11 @@ import plpy
|
|||||||
import pysal_utils as pu
|
import pysal_utils as pu
|
||||||
|
|
||||||
|
|
||||||
class AnalysisDataProvider:
|
class AnalysisDataProvider(object):
|
||||||
|
"""
|
||||||
|
Analysis data provider for crankshaft functions. These mostly rely on
|
||||||
|
plpy data sources.
|
||||||
|
"""
|
||||||
def get_getis(self, w_type, params):
|
def get_getis(self, w_type, params):
|
||||||
"""fetch data for getis ord's g"""
|
"""fetch data for getis ord's g"""
|
||||||
try:
|
try:
|
||||||
@@ -66,41 +70,59 @@ class AnalysisDataProvider:
|
|||||||
except plpy.SPIError, err:
|
except plpy.SPIError, err:
|
||||||
plpy.error('Analysis failed: %s' % err)
|
plpy.error('Analysis failed: %s' % err)
|
||||||
|
|
||||||
def get_model_data(self, params):
|
def get_segmentation_model_data(self, params):
|
||||||
"""fetch data for Segmentation"""
|
"""
|
||||||
columns = ','.join(['array_agg("{col}") As "{col}"'.format(col=col)
|
fetch data for Segmentation
|
||||||
|
params = {"subquery": query,
|
||||||
|
"target": variable,
|
||||||
|
"features": feature_columns}
|
||||||
|
"""
|
||||||
|
columns = ', '.join(['array_agg("{col}") As "{col}"'.format(col=col)
|
||||||
for col in params['feature_columns']])
|
for col in params['feature_columns']])
|
||||||
|
query = '''
|
||||||
query = ("SELECT"
|
SELECT
|
||||||
"array_agg({target}) As target,"
|
array_agg("{target}") As target,
|
||||||
"{columns} As feature",
|
{columns}
|
||||||
"FROM ({subquery}) As q").format(params['query'],
|
FROM ({subquery}) As q
|
||||||
['variable'])
|
'''.format(subquery=params['subquery'],
|
||||||
|
target=params['target'],
|
||||||
|
columns=columns)
|
||||||
try:
|
try:
|
||||||
data = plpy.execute(query)
|
data = plpy.execute(query)
|
||||||
return data
|
return data
|
||||||
except plpy.SPIError, err:
|
except plpy.SPIError, err:
|
||||||
plpy.error('Failed to build segmentation model: %s' % err)
|
plpy.error('Failed to build segmentation model: %s' % err)
|
||||||
|
|
||||||
def get_segment_data(self, params):
|
def get_segmentation_data(self, params):
|
||||||
"""fetch cartodb_ids"""
|
"""
|
||||||
query = ("SELECT"
|
params = {"subquery": target_query,
|
||||||
"array_agg({id_col} ORDER BY {id_col}) as ids,"
|
"id_col": id_col}
|
||||||
"FROM ({subquery}) as q").format(**params)
|
"""
|
||||||
|
query = '''
|
||||||
|
SELECT
|
||||||
|
array_agg("{id_col}" ORDER BY "{id_col}") as "ids"
|
||||||
|
FROM ({subquery}) as q
|
||||||
|
'''.format(**params)
|
||||||
try:
|
try:
|
||||||
data = plpy.execute(query)
|
data = plpy.execute(query)
|
||||||
return data
|
return data
|
||||||
except plpy.SPIError, err:
|
except plpy.SPIError, err:
|
||||||
plpy.error('Failed to build segmentation model: %s' % err)
|
plpy.error('Failed to build segmentation model: %s' % err)
|
||||||
|
|
||||||
def get_predict_data(self, params):
|
def get_segmentation_predict_data(self, params):
|
||||||
"""fetch data for Segmentation"""
|
"""
|
||||||
|
fetch data for Segmentation
|
||||||
joined_features = ','.join(['"{0}"::numeric'.format(a)
|
params = {"subquery": target_query,
|
||||||
for a in features_columns])
|
"feature_columns": feature_columns}
|
||||||
query = ("SELECT"
|
"""
|
||||||
"Array({joined_features}) As features,"
|
joined_features = ', '.join(['"{}"::numeric'.format(a)
|
||||||
"FROM ({subquery}) as q").format(**params)
|
for a in params['feature_columns']])
|
||||||
|
query = '''
|
||||||
|
SELECT
|
||||||
|
Array({joined_features}) As features
|
||||||
|
FROM ({subquery}) as q
|
||||||
|
'''.format(subquery=params['subquery'],
|
||||||
|
joined_features=joined_features)
|
||||||
try:
|
try:
|
||||||
cursor = plpy.cursor(query)
|
cursor = plpy.cursor(query)
|
||||||
return cursor
|
return cursor
|
||||||
|
|||||||
Reference in New Issue
Block a user