Java编程通过匹配合并数据实例解析(数据预处理)

本文研究的主要是Java编程通过匹配合并数据(数据预处理)的相关内容,具体如下。

数据描述

以下程序是对如下格式的数据进行合并处理。

这个表的每一行表示用户id及用户的特征。其中,一个用户只有一个特征向量,即第一列不会重复。

这张表的第一列,表示用户的id,第二列表示用户所看的电影,第三列表示用户对电影的打分(1-13分),第四列表示用户对电影的打分,但分值范围是1-5分。

问题描述

在做数据预处理时,如何将第二张表添加上用户特征呢?其实,方法很简单,将第二张表的用户id与第一张表的用户id进行匹配就行。合并结果如下图所示。

数据处理程序

package deal;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/*
 * author:合肥工业大学 管院学院 钱洋
 * email:1563178220@qq.com
*/
public class GetPUser {
	public static List<String> readDocs(String docsPath,String code) throws IOException{
		BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream( new File(docsPath)),code));
		String s=null;
		List<String> userproductscore=new ArrayList<String>();
		while ((s=reader.readLine())!=null) {
			userproductscore.add(s);
		}
		reader.close();
		return userproductscore;
	}
	public static HashMap<String, String> MAPread(String docsPath1,String code1) throws IOException{
		BufferedReader reader1 = new BufferedReader( new InputStreamReader( new FileInputStream( new File(docsPath1)),code1));
		String s1=null;
		HashMap<String,String> userfeaturemap=new HashMap<String,String>();
		while ((s1=reader1.readLine())!=null) {
			String arr[]=s1.split("\t");
			String feature="";
			for (int i = 1; i < arr.length; i++) {
				BigDecimal db = new BigDecimal(arr[i]);
				String ii = db.toPlainString();
				feature+=ii+" ";
			}
			userfeaturemap.put(s1.split("\t")[0], feature);
		}
		reader1.close();
		return userfeaturemap;
	}
	public static List<String> match(List<String> userproductscore,HashMap<String, String> userfeaturemap) throws IOException{
		List<String> userscoreandfeature=new ArrayList<>();
		for (int i = 0; i < userproductscore.size(); i++) {
			//获取用户id
			String user_id=userproductscore.get(i).split("\t")[0];
			//获取用户特征
			String userfeature = userfeaturemap.get(user_id);
			userscoreandfeature.add(userproductscore.get(i)+"\t"+userfeature);
			System.out.println(userproductscore.get(i)+"\t"+userfeature);
		}
		return userscoreandfeature;
	}
	public static void main(String[] args) throws IOException {
		//读取两个文本
		List<String> userproductscore=readDocs("data/train/ydata-ymovies-user-movie-ratings-train-v1_0.txt","gbk");
		HashMap<String, String> userfeaturemap=MAPread("data/fileofuser/yahoo.txt","utf-8");
		//匹配结果
		match(userproductscore,userfeaturemap);
	}
}

总结

以上就是本文关于Java编程通过匹配合并数据实例解析(数据预处理)的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

您可能感兴趣的文章:

  • Java实现把两个数组合并为一个的方法总结
  • Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】
  • Java实现多个文档合并输出到一个文档
  • Java编程实现递增排序链表的合并
  • java 流操作对文件的分割和合并的实例详解
  • Java实现合并两个有序序列算法示例
  • java 两个数组合并的几种方法
  • 合并有序数组的实现(java与C语言)
(0)

相关推荐

  • java 两个数组合并的几种方法

    本文介绍了java 两个数组合并的几种方法,分享给大家,也给自己留个笔记 需求:两个字符串合并(如果想去重复,参考下一篇--数组去重复及记录重复个数) //方法一 Arrays类 String[] a = {"A","B","C"}; String[] b = {"D","E"}; // List<String> list = Arrays.asList(a); --OK // List<

  • Java实现合并两个有序序列算法示例

    本文实例讲述了Java实现合并两个有序序列算法.分享给大家供大家参考,具体如下: 问题描述 输入:序列A<a0,a1,a2,...aq,aq+1,aq+2,...,ar>,其中a0<a1<...<aq,aq+1<aq+2<...<ar 输出:序列B<b0,b1,...,br>,其中b0<b1<...<br 算法思想 创建一个长度为r的数组R,将A中的序列看作是两个有序序列 B=A<a0,a1,a2,...,aq> C

  • Java实现的微信图片处理工具类【裁剪,合并,等比例缩放等】

    本文实例讲述了Java实现的微信图片处理工具类.分享给大家供大家参考,具体如下: 现在 外面核心,图片文章比较少,看了拷贝代码,而用不了,用相应jar包处理,很多等比例缩放,达不到 想要的给予的期望:本工具类,是之前做微信打印机写的 基于java自带的类,基于rgb. package com.zjpz.util; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt

  • Java实现多个文档合并输出到一个文档

    本文实例为大家分享了Java实现多个文档合并输出到一个文档的具体代码,供大家参考,具体内容如下 方法:Java NIO package First; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.channels.FileChannel; import java.nio.channels.WritableByteChannel; publi

  • Java实现把两个数组合并为一个的方法总结

    本文实例讲述了Java实现把两个数组合并为一个的方法.分享给大家供大家参考,具体如下: 在Java中,如何把两个String[]合并为一个? 看起来是一个很简单的问题.但是如何才能把代码写得高效简洁,却还是值得思考的.这里介绍四种方法,请参考选用. 一.apache-commons 这是最简单的办法.在apache-commons中,有一个ArrayUtils.addAll(Object[], Object[])方法,可以让我们一行搞定: String[] both = (String[]) A

  • Java编程实现递增排序链表的合并

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解答: /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null)

  • java 流操作对文件的分割和合并的实例详解

    java 流操作对文件的分割和合并的实例详解 学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并. 下面是代码: package com.dufy.file; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream; import java.ut

  • 合并有序数组的实现(java与C语言)

    合并有序数组的实现 java版本: 实例代码 public class Merge { //合并有序数组 public static void mergeSort(int a[], int b[], int c[]) { int n = a.length, m = b.length; int i, j, k; i = j = k = 0; while (i < n && j < m) { if (a[i] < b[j]) { c[k++] = a[i++]; } else

  • Java编程通过匹配合并数据实例解析(数据预处理)

    本文研究的主要是Java编程通过匹配合并数据(数据预处理)的相关内容,具体如下. 数据描述 以下程序是对如下格式的数据进行合并处理. 这个表的每一行表示用户id及用户的特征.其中,一个用户只有一个特征向量,即第一列不会重复. 这张表的第一列,表示用户的id,第二列表示用户所看的电影,第三列表示用户对电影的打分(1-13分),第四列表示用户对电影的打分,但分值范围是1-5分. 问题描述 在做数据预处理时,如何将第二张表添加上用户特征呢?其实,方法很简单,将第二张表的用户id与第一张表的用户id进行

  • Java编程探索之泛型擦除实例解析

    1.问题引出 源码: public static void main(String[] args) { List<Integer> a = new ArrayList<Integer>(); List<String> b = new ArrayList<String>(); System.out.println(a.getClass() == b.getClass());//结果true } 编译后L public static void main(Stri

  • Java原子变量类原理及实例解析

    这篇文章主要介绍了Java原子变量类原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.原子变量类简介 为何需要原子变量类 保证线程安全是 Java 并发编程必须要解决的重要问题.Java 从原子性.可见性.有序性这三大特性入手,确保多线程的数据一致性. 确保线程安全最常见的做法是利用锁机制(Lock.sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必然是原子性

  • Java编程思想对象的容纳实例详解

    Java提供了容纳对象(或者对象的句柄)的多种方式,接下来我们具体看看都有哪些方式. 有两方面的问题将数组与其他集合类型区分开来:效率和类型.对于Java来说,为保存和访问一系列对象(实际是对象的句柄)数组,最有效的方法莫过于数组.数组实际代表一个简单的线性序列,它使得元素的访问速度非常快,但我们却要为这种速度付出代价:创建一个数组对象时,它的大小是固定的,而且不可在那个数组对象的"存在时间"内发生改变.可创建特定大小的一个数组,然后假如用光了存储空间,就再创建一个新数组,将所有句柄从

  • Java编程实现springMVC简单登录实例

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等. 1.新建web项目:springmvc 2.导入springmvc需要的jar包 3.配置web.xml文件(核心代码)

  • Java内存模型原子性原理及实例解析

    这篇文章主要介绍了Java内存模型原子性原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 本文就具体来讲讲JMM是如何保证共享变量访问的原子性的. 原子性问题 原子性是指:一个或多个操作,要么全部执行且在执行过程中不被任何因素打断,要么全部不执行. 下面就是一段会出现原子性问题的代码: public class AtomicProblem { private static Logger logger = LoggerFactory.

  • java编程ThreadLocal上下传递源码解析

    目录 引导语 1.用法演示 2.类结构 2.1.类泛型 2.2.关键属性 2.2.1.ThreadLocalMap 3.ThreadLocal是如何做到线程之间数据隔离的 4.set方法 5.get方法 6.扩容 7.总结 引导语 ThreadLocal 提供了一种方式,让在多线程环境下,每个线程都可以拥有自己独特的数据,并且可以在整个线程执行过程中,从上而下的传递. 1.用法演示 可能很多同学没有使用过 ThreadLocal,我们先来演示下 ThreadLocal 的用法,demo 如下:

  • Java编程实现打印螺旋矩阵实例代码

    直接上代码吧. 昨晚腾讯在线测试遇到的题. 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环. import java.util.Scanner; public class mysnakematrix { private int n; // private int a[][]; // 声明一个矩阵 private int value = 1; // 矩阵里数字的值 public mysnakematrix(int i) { this.n

  • java阻塞队列实现原理及实例解析

    这篇文章主要介绍了java阻塞队列实现原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 阻塞队列与普通队列的不同在于.当队列是空的时候,从队列中获取元素的操作将会被阻塞,或者当队列满时,往队列里面添加元素将会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素.同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个元素,或者完

  • Java定义形式及可变参数实例解析

    这篇文章主要介绍了Java定义形式及可变参数实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java中的方法类似于面向过程程序设计中的函数,但与其不同的是,Java中的方法不能独立存在,它属于类或对象.既然方法属于类或对象,那么,方法的调用者就必须是类或对象.(当然,之后将会提到的同一个类中方法互相调用,实际上也是类或对象在作为调用者) 还是先上一段代码: package com.my.pac05; /** * @author Summ

随机推荐