2014-09-29 10 views
0

Я пытаюсь построить и реализовать алгоритм дерева регрессии на некоторых растровых данных в python и не может найти лучшего способа сделать это. Я попытаюсь объяснить, что я пытаюсь сделать:метод реализации дерева регрессии по растровым данным - python

Мой желаемый результат - это растровое изображение, значения которого представляют глубину озера, назовите его depth.tif. У меня есть серия растровых изображений, каждая из которых отражает значения отражательной способности в разных диапазонах Landsat, например [B1.tif, B2.tif, ..., B7.tif], которые я хочу использовать в качестве своих независимых переменных для прогнозирования глубины озера.

Для моих данных обучения у меня есть шейп-файл из ~ 6000 точек известной глубины озера. Чтобы создать дерево, я выделил соответствующие значения отражательной способности для каждой из этих точек, а затем экспортировал их в таблицу. Затем я использовал эту таблицу в программном обеспечении машинного обучения weka, чтобы создать дерево регрессии с 600 ветвями, которое будет прогнозировать значения глубины на основе набора значений отражательной способности. Но поскольку дерево настолько велико, я не могу писать его в python вручную. Я столкнулся с модулем python-weka-wrapper, поэтому я могу использовать weka в python, но застрял со всей растровой частью. Поскольку мои данные имеют дополнительное измерение (если преобразовать в массив, каждая независимая переменная на самом деле представляет собой набор значений ncolumns x nrows, а не только строку значений, как во всех примерах), я не знаю, может ли это сделать что я хочу. Во всех примерах для weka-python-wrapper я не могу найти тот, который имеет дело с пространственными данными, и я думаю, что это то, что меня отбрасывает.

Чтобы уточнить, я хочу использовать данные тренировки (который является точечным шейп-файлом/таблицей прямо сейчас, но при необходимости - может быть преобразован в растре того же размера, что и растровые изображения, без данных во всех ячейках за исключением нескольких точек, которые я знал в данных глубины), чтобы построить дерево регрессии, которое будет использовать ракурсы отражения для прогнозирования глубины. Затем я хочу применить это дерево к одному и тому же набору рамановских отражателей, чтобы получить растровые значения предсказанных значений глубины везде.

Я понимаю, что это сбивает с толку, и я не могу лучше объяснять. Я открыт для других вариантов, кроме того, что просто пытаюсь реализовать weka в python, например sklearn, если они являются open source. Мой вопрос в том, может ли я описать это? Я уверен, что это возможно, так как это очень похоже на классификацию изображений, за исключением того, что целевые значения (глубина) являются непрерывными, а не дискретными классами, но до сих пор я потерпел неудачу. Если да, то какой метод наилучшего/наиболее прямого метода и/или есть ли какие-либо примеры, которые могут помочь?

Благодаря

ответ

0

Я имел некоторый опыт работы с использованием Landsat данных для прогнозирования экологических свойств почвы, которая, кажется, несколько связанных с проблемой, что вы описали выше. Хотя в то время я разработал свои собственные модели, я мог бы описать общий процесс, который я прошел, чтобы сопоставить предсказанные данные.

Для учебных данных мне удалось извлечь значения LandSat (помимо других свойств) для пространственных точек, где были взяты известные образцы почвы. Таким образом, я мог бы использовать данные LandSat в качестве исходных данных для прогнозирования экологических данных. Часть этих данных также будет зарезервирована для тестирования, чтобы подтвердить, что обученные модели не перерабатывают данные обучения и что он хорошо прогнозирует результаты.

Как только этот процесс будет завершен, можно будет отобразить желаемую область, получив пространственную информацию в каждой точке нужной области (соответствующей разрешению желаемого изображения). Оттуда вы должны будете ввести эти факторы LandSat в модель для прогнозирования и выход, используемый для сопоставления прогнозируемой глубины. Вероятно, вы просто можете использовать Weka в этом случае, чтобы предсказать все случаи, а затем использовать другой инструмент для построения карты из ваших оценок.

Я считаю, что давно выработал какой-то код, чтобы извлечь каждый из моих необходимых факторов в ArcGIS, но прошло какое-то время с тех пор, как я это сделал. Там должны быть хорошие учебные пособия, которые могут помочь вам в этом направлении.

Надеюсь, это поможет в вашей конкретной ситуации.

0

Похоже, что вы не используете какую-либо пространственную информацию для построения своего дерева (например, информация о соседних пикселях), просто отражающая способность. Итак, вы можете применить свое дерево решений к пикселям, как если бы все пиксели находились в одномерном списке или массиве .

Дерево 600-ветка для файла данных тренировки 6000 точек похоже, что это может быть наряд. Подумайте о том, чтобы вставить опцию, которая требует, чтобы дерево прекратило разделение , когда на узле меньше чем N точек или что-то подобное. Может быть быть фактором отсечения, который также может быть установлен. Вы можете проверить различные настройки , пока не найдете тот, который дает вам лучшую статистику перекрестной проверки или проверочный комплект.