scala - 微笑scala api:从数组创建数据框
问题描述
我正在尝试将微笑集成到我的 scala 代码库中。特别是,我想训练一个随机森林分类器。在FAQ中是这样写的:
大多数 Smile 算法都将简单的 double[] 作为输入。因此,只要样本在双数组中,您就可以使用您喜欢的方法或库来导入数据。
但 RandomForest 似乎并非如此,所有拟合方法似乎都以公式和数据框作为输入。就我而言,我有两个 Array[Array[Double]] 包含两个不同类的示例:例如,第一个应标记为 0,第二个应标记为 1。第一个数组具有形状 (n_samples_0, n_features) 和第二个 (n_samples_1, n_features)
据我所知,在此数据上训练微笑 randomForest 的唯一方法是首先将这两个数组转换为一个微笑数据帧,其中包含 n_features + 1 列(每个特征一个 + 标签一个)和 n_samples_0 + n_samples_1 行. 接着:
val formula: Formula = "class" ~
val rf = randomForest(formula, df)
因此我的问题是:有没有办法从 Scala API 中的数组创建数据框?我只能通过读取不同的文件格式来找到创建 Dataframe 的方法。
解决方案
我设法通过使用Smile DataFrames的方法解决了我的问题。
这是一个最小的示例:(X1 和 X0 是包含特征的双精度数组的数组,每个子数组的大小为 600,X1 包含正类示例的特征,X0 包含负类示例的特征)
val X1: List[Array[Double]] = ???
val X0: List[Array[Double]] = ???
val y1 = X1.map(_ => Array(1))
val y0 = X0.map(_ => Array(0))
val X = (X1 ++ X0).toArray
val y = (y1 ++ y0).toArray
val dfX = DataFrame.of(X)
val dfy = DataFrame.of(y, "class")
val df = dfX.merge(dfy)
val formula: Formula = "class" ~
val rf = randomForest(formula, df)
推荐阅读
- sql - 使用 CTE 在 Group by 之前或之后过滤
- python - Plotting complicated histograms side-by-side
- reactjs - 为什么我的 create-react-app 没有服务人员?
- android - Drag marker on on Single tap instead of LongClick
- shell - Proper syntax of commands in shell
- php - When I run composer on Windows, I get an error of 'php.exe' is not recognized as an internal or external command, operable program or batch file.'
- unity3d - 为什么手动设置变换位置时我的游戏对象会飘走?
- firebase - Access Firebase From Unity Editor without affected by Database Rules?
- machine-learning - ColumnTransformer 和 make_ColumnTransformer 有什么区别
- python - Comparison between datetime64[ns] and date