机器学习
1.监督学习
有训练数据集。规范数据。合规数据。产生推断函数.然后对新数据应用函数。
director actor edit Label
2.非监督学习
没有训练数据。
分组。
3.推荐
协同过滤.
猜测你喜欢.
电商。
Spark机器学习库
[Estimator]
运行在包含了feature和label(结果)的dataFrame之上,对数据进行训练创建model。
该模型用于以后的预测。
[Transformer]
将包含feature的Dataframe变换成了包含了预测的dataframe.
由Estimator创建的model就是Transformer。
[Parameter]
Estimator和Transformer使用的数据,通常和机器学习的算法相关。
Spark API给出了一致性API针对算法。
[Pipeline]
将Estimators和Transformers组合在一起,形成机器学习工作流.
机器学习应用步骤
1.读取数据文件形成训练数据框
2.创建LinearRegression并设置参数
3.对训练数据进行模型拟合,完成评估管线.
4.创建包含测试数据的DataFrame,典型包含feature和label,可以通过比较预测标签和测试标签确认model是ok,
5.使用模型,对测试数据进行变换(应用模型),抽取feature ,label,predication.
scala 机器学习使用:
1.引入pom
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.1.0</version>
</dependency>
2.scala类:
package com.mao.scala.scala
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.ml.regression.LinearRegression
import org.apache.spark.sql.SparkSession
object SparkMLDemo1 {
def main(args: Array[String]): Unit = {
val sess = SparkSession.builder().appName("ml").master("local[4]").getOrCreate();
val sc = sess.sparkContext;
//数据目录
val dataDir = "file:///D:/downloads/bigdata/ml/winequality-white.csv"
//定义样例类
case class Wine(FixedAcidity: Double, VolatileAcidity: Double,
CitricAcid: Double, ResidualSugar: Double, Chlorides: Double,
FreeSulfurDioxide: Double, TotalSulfurDioxide: Double, Density: Double, PH:
Double, Sulphates: Double, Alcohol: Double, Quality: Double)
//变换
val wineDataRDD = sc.textFile(dataDir).map(_.split(";")).map(w => Wine(w(0).toDouble, w(1).toDouble,
w(2).toDouble, w(3).toDouble, w(4).toDouble, w(5).toDouble, w(6).toDouble, w(7).toDouble, w(8).toDouble
, w(9).toDouble, w(10).toDouble, w(11).toDouble))
import sess.implicits._
//转换RDD成DataFrame
val trainingDF = wineDataRDD.map(w => (w.Quality,
Vectors.dense(w.FixedAcidity, w.VolatileAcidity,