У мене досить великий набір даних (~ 20 Гб), який зберігаєтьсядиск як Pandas / PyTables HDFStore, і я хочу запустити випадкові ліси та підсилити дерева на ньому. Спроба зробити це в моїй місцевій системі триватиме назавжди, тому я думав про виведення його з іскрового кластера, я маю доступ, а замість цього використовую процедури MLLib.
Поки мені вдалося завантажити файловий пандуяк іскровий кадр даних, я трохи заплутався про те, як використовувати це в процедурах MLLib. Я не дуже знайомий з MLLib, і, схоже, що він приймає тільки типи даних LabeledPoint.
Буду вдячний за будь-які ідеї / покажчики / коди, які пояснюють, як використовувати (панди або іскрові) інформаційні кадри як вхідні дані для алгоритмів MLLib - прямо або побічно, шляхом перетворення на підтримувані типи.
Дякую.
Відповіді:
1 для відповіді № 1Вам потрібно перетворити DataFrame
до RDD[LabeledPoint]
. Примітка a LabeledPoint
це просто а (label: Double, features: Vector)
. Розглянемо процедуру відображення, яка захоплює значення з кожного рядка:
val rdd = df.map { row =>
new LabeledPoint(row(0), DenseVector(row.getDouble(1),..., row.getDouble(n)))
}
Це поверне а RDD[LabeledPoint]
який ви можете ввести в a RandomForest.trainRegressor(...)
, наприклад. Подивіться на DataFrame
API для подробиць.