2、分类从数据中提取出模型,并可以利用模型对未知的数据做出预测
(1)有监督学习
输入数据是由输入特征值和目标值所组成
–分类: 分类:输出是有限个离散值(eg:1,2,3,4)
回归:函数的输出可以是一个连续的值(eg:y=kx+b) 分类的算法: k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
回归的算法:线性回归、岭回归
(2)无监督学习(告诉你学生分2组,只需要结果2组就可以了,不管怎末分)
输入数据是由输入特征值所组成
算法:聚类(k-means)
对原始数据进行数据特征工程:就是将数据进行清洗,转化,归一化,转成机器可以识别的二进制数据(使用向量表示)
—数据使用向量表示之后,分成70%训练集数据用于建立模型,30%测试集数据用于测试产生的模型
—选择合适的算法,使用70%的数据进行建模(就是生成某一套的算法,用于预测)
—生成模型之后,使用30%的数据用于测试,(30%的数据中包含标准答案),测试后会返回一个预测的答案
—然后可以计算预测的准确率,看看模型是否可靠,不可靠可以重新训练,合格就可以预测更多数据了
(1)K-近邻算法(KNN)
如果一个样本在特征空间中的k个最相似(特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别(找距离哪个点最近)
(2)贝叶斯分类算法
条件概率、联合概率计算方式与特征独立的关系去预测(概率)
(3)决策树算法
通过多层特征,并且选择特征有优先级(多个层级的判断)
(4)随机森林算法
一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定(多个决策树,去一个概率众数)
(5)逻辑回归算法
逻辑回归就是解决二分类问题的利器(好不好看,下不下雨)
数据需要使用向量表示(稠密向量,稀疏向量)
导包:
org.apache.spark spark-mllib_2.11 2.4.5
—向量 :有方向,有值
—稠密向量:将全部的值全部写出来
—稀疏向量:就是将稠密向量中的0去除,0太多没有用,需要填入总的个数,原数据非0的索引位置和数据—稠密向量转成稀疏向量 toSparse
—稀疏向量转成稠密向量 toDense
object Demo01Vector {
def main(args: Array[String]): Unit = {
//稠密向量:将全部的值全部写出来
val dense_vec: linalg.Vector = Vectors.dense(Array(1.0, 0.0, 3.1, 0.0, 0.0, 0.0, 2.1, 0.0, 0.0, 4.5, 0.0))
println(dense_vec)
//稀疏向量:就是将稠密向量中的0去除,0太多没有用,需要填入总的个数,原数据非0的索引位置和数据
val parse_vec: linalg.Vector = Vectors.sparse(11, Array(0, 2, 6, 9), Array(1.0, 3.1, 2.1, 4.5))
println(parse_vec)
println("-" * 50)
//稠密向量转成稀疏向量
println(dense_vec.toSparse)
//稀疏向量转成稠密向量
println(parse_vec.toDense)
}
}



