NameError 使用 LinearRegression() 和 python API
NameError using LinearRegression() with python API
我正在尝试 运行 使用 Cloud Datalab 在 Earth Engine 中进行一些回归。当我复制 this regression tutorial 中的代码(为 python 修改它)时,出现此错误:
NameErrorTraceback (most recent call last)
<ipython-input-45-21c9bd377408> in <module>()
14 linearRegression = collection.reduce(
15 ee.Reducer.linearRegression({
---> 16 numX: 2,
17 numY: 2
18 }))
NameError: name 'numX' is not defined
这似乎不是其他函数的问题,同样的代码在 Javascript API 中也有效。 LinearRegression 在 python API 中的使用方式不同吗?
您可以将参数作为 python 关键字参数传递,如下所示:
import ee
ee.Initialize()
# This function adds a time band to the image.
def createTimeBand(image):
# Scale milliseconds by a large constant.
return image.addBands(image.metadata('system:time_start').divide(1e18))
# This function adds a constant band to the image.
def createConstantBand(image):
return ee.Image(1).addBands(image)
# Load the input image collection: projected climate data.
collection = (ee.ImageCollection('NASA/NEX-DCP30_ENSEMBLE_STATS')
.filterDate(ee.Date('2006-01-01'), ee.Date('2099-01-01'))
.filter(ee.Filter.eq('scenario', 'rcp85'))
# Map the functions over the collection, to get constant and time bands.
.map(createTimeBand)
.map(createConstantBand)
# Select the predictors and the responses.
.select(['constant', 'system:time_start', 'pr_mean', 'tasmax_mean']))
# Compute ordinary least squares regression coefficients.
linearRegression = (collection.reduce(
ee.Reducer.linearRegression(
numX= 2,
numY= 2
)))
# Compute robust linear regression coefficients.
robustLinearRegression = (collection.reduce(
ee.Reducer.robustLinearRegression(
numX= 2,
numY= 2
)))
# The results are array images that must be flattened for display.
# These lists label the information along each axis of the arrays.
bandNames = [['constant', 'time'], # 0-axis variation.
['precip', 'temp']] # 1-axis variation.
# Flatten the array images to get multi-band images according to the labels.
lrImage = linearRegression.select(['coefficients']).arrayFlatten(bandNames)
rlrImage = robustLinearRegression.select(['coefficients']).arrayFlatten(bandNames)
# Print to check it works
print rlrImage.getInfo(), lrImage.getInfo()
我没有检查结果,但没有错误,图像已创建。
我正在尝试 运行 使用 Cloud Datalab 在 Earth Engine 中进行一些回归。当我复制 this regression tutorial 中的代码(为 python 修改它)时,出现此错误:
NameErrorTraceback (most recent call last)
<ipython-input-45-21c9bd377408> in <module>()
14 linearRegression = collection.reduce(
15 ee.Reducer.linearRegression({
---> 16 numX: 2,
17 numY: 2
18 }))
NameError: name 'numX' is not defined
这似乎不是其他函数的问题,同样的代码在 Javascript API 中也有效。 LinearRegression 在 python API 中的使用方式不同吗?
您可以将参数作为 python 关键字参数传递,如下所示:
import ee
ee.Initialize()
# This function adds a time band to the image.
def createTimeBand(image):
# Scale milliseconds by a large constant.
return image.addBands(image.metadata('system:time_start').divide(1e18))
# This function adds a constant band to the image.
def createConstantBand(image):
return ee.Image(1).addBands(image)
# Load the input image collection: projected climate data.
collection = (ee.ImageCollection('NASA/NEX-DCP30_ENSEMBLE_STATS')
.filterDate(ee.Date('2006-01-01'), ee.Date('2099-01-01'))
.filter(ee.Filter.eq('scenario', 'rcp85'))
# Map the functions over the collection, to get constant and time bands.
.map(createTimeBand)
.map(createConstantBand)
# Select the predictors and the responses.
.select(['constant', 'system:time_start', 'pr_mean', 'tasmax_mean']))
# Compute ordinary least squares regression coefficients.
linearRegression = (collection.reduce(
ee.Reducer.linearRegression(
numX= 2,
numY= 2
)))
# Compute robust linear regression coefficients.
robustLinearRegression = (collection.reduce(
ee.Reducer.robustLinearRegression(
numX= 2,
numY= 2
)))
# The results are array images that must be flattened for display.
# These lists label the information along each axis of the arrays.
bandNames = [['constant', 'time'], # 0-axis variation.
['precip', 'temp']] # 1-axis variation.
# Flatten the array images to get multi-band images according to the labels.
lrImage = linearRegression.select(['coefficients']).arrayFlatten(bandNames)
rlrImage = robustLinearRegression.select(['coefficients']).arrayFlatten(bandNames)
# Print to check it works
print rlrImage.getInfo(), lrImage.getInfo()
我没有检查结果,但没有错误,图像已创建。