1.RFormula解释
使用RFormula选择特征列在Spark2.1.0版本只支持一部分R操作,包括:~’, ‘.’, ‘:’, ‘+’, and ‘-‘.
~ separate target and terms 分割标签与特征
+ concat terms, “+ 0” means removing intercept 将两个特征相加
- remove a term, “- 1” means removing intercept 减去一个特征
: interaction (multiplication for numeric values, or binarized categorical values) 将多个特征相乘变成一个特征
. all columns except target 选取所有特征
什么,,,我没听懂。。。
举个小例子,假设有a,b两列作为2个特征,y是应变量。
y ~ a + b 表示建立这样的线性模型:y ~ w0 + w1 * a + w2 * b ,其中w0是截距。
y ~ a + b + a:b - 1 表示线性模型:y ~ w1 * a + w2 * b + w3 * a * b
(-1表示去掉截距,所以模型中没有w0了,a:b表示将ab两个特征相乘生成新的特征)
也就是说,我们可以通过这些简单的符号去表示线性模型。
RFormula可以生成多组列向量来表示特征,和一组double或string类型的列来标签。
就像在R中使用公式来建立线性模型一样,字符串类型的特征会被One-hot编码,数值类型的特征会被转换成double类型。如果标签列是字符串类型,会先将它转换成双精度的字符串索引。
如果在dataframe中不存在标签列,将会根据公式中的自变量去生成标签应变量作为输出。
什么,,,还是没懂。。。
来看下面的例子,假设有一个4列的dataframe:
id |
---|