gpt4 book ai didi

javascript - 如何将带有tinestamp等的CSV文件输入到mahout中实现相似度等功能?

转载 作者:可可西里 更新时间:2023-11-01 14:56:55 27 4
gpt4 key购买 nike

目前,我正在尝试输入我的数据以尝试机器学习目的,数据如下三列(第一列是时间,第二列是代码,第三列是数字):

2016-06-05 00:00:00      fd04:bd3:80e8:2:215:8d00:35:ca4b   0

2016-06-05 00:00:00 fd04:bd3:80e8:2:215:8d00:35:f2be 0.12549

2016-06-05 00:00:00 fd04:bd3:80e8:2:215:8d00:35:c8a1 0.14091

2016-06-05 00:00:01 fd04:bd3:80e8:2:215:8d00:35:ca4b 0

2016-06-05 00:00:01 fd04:bd3:80e8:2:215:8d00:35:f2be 0.25098

2016-06-05 00:00:01 fd04:bd3:80e8:2:215:8d00:35:c8a1 0

2016-06-05 00:00:02 fd04:bd3:80e8:2:215:8d00:35:ca4b 0

2016-06-05 00:00:02 fd04:bd3:80e8:2:215:8d00:35:f2be 0.25098

下面是将数据导入mahout的代码:

import java.util.List;
import java.io.File;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
/**
*/
public class RecommenderIntro {
public static void main(String[] args) throws Exception {

// TODO code application logic here
DataModel model = new FileDataModel (new File("/home/leo/csv_dump11.csv"));
UserSimilarity similarity = new PearsonCorrelationSimilarity (model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood (2, similarity, model);
Recommender recommender = new GenericUserBasedRecommender (model, neighborhood, similarity);
List<RecommendedItem> recommendations = recommender.recommend(1, 1);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}
}

如何实现分类等功能?请告诉我。非常感谢!

最佳答案

对于 FileDataModel,您的输入文件格式错误。如果您查看 source code你会看到它的期望:

用户ID,itemID,时间戳

这与您看到的 java.lang.NumberFormatException 错误一致。它需要一个 userID 作为一个 long 并且你有一个格式化的日期。

另请注意,时间戳 应该是一个long。源代码中的文档表明,如果您不想将所有日期都转换为毫秒,则可以提供自己的函数来解析日期,如果您覆盖 readTimestampFromString(String)

因此,您要么需要重新格式化数据以使用此类,要么扩展它并覆盖正确解析它所需的相关方法(如果可能)。

关于javascript - 如何将带有tinestamp等的CSV文件输入到mahout中实现相似度等功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com