Smile机器学习库3.0.0导入报错及Scala代码适配咨询
Smile 3.0.0 适配指南(Scala 2.13.10)
关于Attribute、AttributeDataset、NumericAttribute的变化
Smile 3.0.0对核心数据模型做了重大重构,你提到的这几个类确实已被移除:
AttributeDataset被替换为smile.data.DataFrame(功能类似Pandas的DataFrame,是Smile 3.x的核心数据结构)Attribute、NumericAttribute的功能被整合到DataFrame的列类型处理逻辑中,不再以单独类的形式暴露
适配后的代码示例
import smile.clustering.KMeans import smile.data.DataFrame import smile.read import smile.util.Strings // 加载CSV数据为DataFrame val data: DataFrame = read.csv("data.csv", header = true) // 拆分数据为均等的两部分(按行随机拆分) val (data1, data2) = data.split(0.5, Strings.random()) // 将DataFrame转换为K-Means所需的数值矩阵 val matrix1 = data1.toArray(false) // false表示不包含标签列(无标签时可忽略该参数) val matrix2 = data2.toArray(false) // 训练K-Means聚类模型 val model1 = KMeans.fit(matrix1, 3) val model2 = KMeans.fit(matrix2, 3)
关键改动说明
- 数据载体:用
DataFrame替代旧版的AttributeDataset,所有数据读取、处理操作围绕DataFrame展开 - 数据拆分:新版
split方法需要传入随机数生成器实例,Strings.random()可生成默认随机种子保证拆分随机性 - 矩阵转换:通过
toArray()方法将DataFrame转为数值矩阵,参数false用于排除可能存在的标签列(纯特征数据时可省略)
内容的提问来源于stack exchange,提问作者PainPoints
相关产品推荐
相关产品推荐

