使用Scala编写CSV文件并使用它创建机器学习模型
确实,Scala很难学习,但是值得努力。Scala具有更简单的语法,并且更具表现力。Scala代码比Java的代码简洁得多,工程师可以编写简短而富有表现力的代码,同时使其成为类型安全且高性能的应用程序,这被认为是有价值的。
在我作为大学项目完成的这个项目中,我们将看到如何使用Scala在.csv文件中进行编写,然后将其用于创建基本的水果检测机器学习模型。
数据集
我们将使用的数据集可以在这里找到。
数据集包含4种水果-苹果,普通话,橘子和柠檬。我们将
仅根据给定的高度,宽度,质量和颜色得分对它们进行分类。
CSV Scala-数据
尽管我们的数据集已经清理过,但如果您希望使用其他数据集,请确保在训练模型时使用python或其他任何方式清理和预处理数据,以最大程度地利用数据。
写入CSV文件
为了编写CSV文件,我们将使用Scala的BufferedWriter,
FileWriter和csvWriter。
写入CSV文件
我们需要导入上述所有文件,然后再确定路径并为文件指定列标题。
导入以上文件
我们将几行数据作为训练数据集的输入,并用于编写CSV文件。
1. val out = new BufferedWriter(new FileWriter(“ D:/Academic/Assignments/Scala/Fruits.csv”))//此行将在上述目录中找到文件
2. val writer = new CSVWriter(out) / /这将为我们的文件
3创建一个csvWriter对象。val FruitSchema = Array(“ fruit_label”,“ fruit_name”,“ fruit_subtype”,“ mass”,“ width”,“ height”,“ color_score”) //这些是架构csv文件的/ headings
然后,根据架构计划,创建数据集的数组。
数据集数组
要将这些数据写入csv文件,我们需要添加以下代码段,
记录清单
1. var listOfRecords = List() //创建一个保存我们数据的列表
2. writer.writeAll(listOfRecords) //将我们的数据添加到csv文件中
3. out.close()//关闭文件
ew,我们说对了,
CSV Scala
使用随机数据创建文件
我们已经使用Scala创建了CSV文件。虽然,还有另一种方法可以执行此操作,即使用范围然后可以将其转换为列表来随机生成数据。
首先,我们导入所有必需的库。
CSV Scala
然后,我们现在将创建列表和范围,其中将包含我们在CSV文件中所需的数据。
CSV Scala
1. val widthList = Range.BigDecimal(5.8
2. val random = new Random() //此函数用于随机生成数据
现在,我们将所有这些数据放入CSV文件中
1. var listOfRecords = new ListBuffer [Array [String]]()//此缓冲区保存我们的所有数据
2. listOfRecords + = csvFields //这会添加我们的架构/标题
3. for(i <-1至50){ listOfRecords + = Array(i.toString,nameList(random.nextInt(nameList.length)),massList(random.nextInt(massList.length))。toString(),widthList(random.nextInt(widthList.length))。toString() ,heightList(random.nextInt(heightList.length))。toString(),colorList(random.nextInt(colorList.length))。toString())} / /将数据添加到缓冲区的循环
数据
我在excel中使用了Vlookup函数来添加水果标签。
这段代码纯粹是随机生成数据的,因此在使用它之前我们需要非常小心。
创建机器学习模型
为了构建模型,我们将使用python的Jupyter IDE。
我在第一个CSV文件中添加了几行数据,以获得更准确的结果。
让我们开始,通过导入所需的库。
CSV Scala-导入
现在,最好将所有CSV文件和python文件都放在同一个文件夹中,以便我们轻松编码和组织代码以及python查找文件。现在,我们将读取CSV文件。
导入-CSV Scala
我们还可以使用seaborn的python库可视化数据,以更好地理解数据。我暂时已经跳过了。
让我们将数据分为训练和测试数据,
CSV Scala-拆分数据
拆分数据后,让我们检查一下可以使用的模型,我首先尝试使用决策树,因为我们的数据相对较少
CSV Scala-决策树
但是,我们可以清楚地看到此模型过度拟合,因此我们拒绝了。现在,让我们检查一下K最近邻居,
CSV Scala-KNN分类器
我们可以看到训练和测试集的准确性都非常好,因此我们可以使用此模型,因为它既不会过度拟合,也不会拟合不足。
让我们将数据拟合到KNN模型中,并检查最佳邻居值。
CSV Scala-模型评估
找到理想值之后,让我们看看模型的预测得分,
模型评估
这不是最好的,但是因为我们为该项目获取了一个小的数据集,所以这非常好,现在,我们将最终绘制项目的决策边界。
Python代码
支持向量机
并且,我们完成了!
结论
现在,我们已经了解了如何使用Scala和机器学习的基础知识来创建CSV文件!
题库