****************spark**************
一、样本数据转换处理
虽然是多余的话语,但是还是得提醒各位,mllib和ml的Vector类是不一样的!
(一)格式转换
对于原始数据中的字符变量,我们可以通过自定义装换方法或者导入HashTF()装换,后者方法具体操作如下:
import org.apache.spark.ml.feature.HashingTF
val tf = new HashingTF()
tf.setInputCol("str_arr")//这是string类型array列的col名
tf.setOutputCol("str2dou")//输出Vector类型col名字
tf.setNumFeatures(32)//设置生成维度值
val df2_1 = tf.transform(df1_1)//输入df名为df1_1生成新df名为df2_1
注意:ml和mllib的Vector的HashingTF是不一样的别导错~~~
(二)合并Vector(Array和Vector,Vector和Vector)
这有两个方法,一:把df转为rdd后把rdd中想合并Vector或Array变量转成seq后的使用Vectors生成新Vector,如下:
//本处合并Array和Vector,其他情况以此类推即可
val df2_2=df2_1.rdd.map(e=>{
val vector=e.getAs("vector").asInstanceOf[org.apache.spark.ml.linalg.Vector]
val vector_arr =vector.toArray
val array =e.getAs("arr").asInstanceOf[mutable.Seq[Double]]
val arr = ArrayBuffer[Double]()
val new_arr = ArrayBuffer[Double]()
for (i<-str_arr2){
new_arr .append(i)
}
val pp=e.getAs("dou_arr").asInstanceOf[mutable.Seq[Double]]//我用array不行,只能用seq来代替。
for(i<-arr){
new_arr .append(i)
}
val new_vector = Vectors.dense(new_arr.toArray)
(new_vector)
}
另一个方法是在直接对整体df进行操作,利用VectorAssembler把同一地方里两个Vector合并成一个新的Vector(原来的vector会保留)方法如下
import org.apache.spark.ml.feature.VectorAssembler
//合并两个向量
val assembler = new VectorAssembler()
assembler.setInputCols(Array("vector_1","vector_2"))//需要合并的vector列名array数组
assembler.setOutputCol("vector_new")//设置生成合并vector的列名
val df2 = assembler.transform(df1)//对df1对应col进行处理返回新df df2
二、常见算法
具体算法,请自行百度,我就不Ctrl+C和Ctrl+V了。以下只是本人调优方法。
(1)、分类模型
1.1逻辑回归(LogisticRegression)
逻辑回归.前期设置迭代次数越大,效果能有较明显上升。我们一般设置到100次就差不多可以达到较理想效果。
1.2决策树(DecisionTreeClassifier)
调高树的深度也可以提高但也是有限的,同时面对海量数据,树越深计算时长越长,对于速率和分类效果之间的取舍就得由当事人决定了。
1.3支持向量机(SVMWithSGD)
样本维度对该模型运算效率影响十分显著。故当维度过高时,对自变量参数降维是很有必要,降维常用方法有PCA等。
1.6朴素贝叶斯(NaiveBayes)
贝叶斯定理假设不同属性值之间是不相关联的,故自变量参数如果关联性较强就不适用该模型
1.5神经网络
1.5.1卷积神经网络
1.5.1.1激活函数(均为非线性激活函数)
Sigmoid、Leaky ReLU、tanh、Maxout、ReLu、ELU。
1.5.1.2卷积
P=边距(padding) S=步长(stride)
输出尺寸 = (n-p) / s + 1
参数数目 = kw * kh * Ci * Co (Ci :输入通道数,Co :输出通道数,(Kw,Kh):卷积核长宽)
1.5.1.3池化——最大值池化
待学中
(2)、聚类模型
1.1K均值(K-Means)
总结中
(3)、关联模型
(待补充)