首页 > 编程知识 正文

pca用java实现(pca实例)

时间:2023-11-29 19:12:36 阅读:310327 作者:HEEQ

本文目录一览:

  • 1、用JAVA编写一个程序,要求如下:
  • 2、求pca(PricipalComponentAnalysis)的java代码
  • 3、java包之间的互相访问,课本习题。望高手解答
  • 4、java是实现什么功能

用JAVA编写一个程序,要求如下:

实现代码如下:

Student类:

public class Student {

private String name;

private String sex;

private int age;

private double chinese;

private double math;

private double english;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public double getChinese() {

return chinese;

}

public void setChinese(double chinese) {

this.chinese = chinese;

}

public double getMath() {

return math;

}

public void setMath(double math) {

this.math = math;

}

public double getEnglish() {

return english;

}

public void setEnglish(double english) {

this.english = english;

}

}

-----------------------------------------------------------------

StudentTest类:(测试类)

import java.util.Scanner;

public class StudentTest {

public static void main(String[] args) {

Student student = new Student();

Scanner sc = new Scanner(System.in);

System.out.println("请输入姓名:");

student.setName(sc.next());

System.out.println("请输入性别:");

student.setSex(sc.next());

System.out.println("请输入年龄:");

student.setAge(sc.nextInt());

System.out.println("请输入语文成绩、数学成绩、英语成绩:");

student.setChinese(sc.nextDouble());

student.setMath(sc.nextDouble());

student.setEnglish(sc.nextDouble());

Double count = student.getChinese()+ student.getMath()+student.getEnglish();

System.out.println("姓名:"+student.getName()+" 性别:"+student.getSex()+" 年龄:"+student.getAge());

System.out.println("总分:"+count+" 平均分:"+count/3);

}

}

运行结果为:

求pca(PricipalComponentAnalysis)的java代码

package PCA;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import org.jblas.ComplexDoubleMatrix;

import org.jblas.DoubleMatrix;

import org.jblas.Eigen;

public class PCA {

 /**

  * Reduce matrix dimension     减少矩阵维度

  * @param source   源矩阵

  * @param dimension  目标维度

  * @return Target matrix  返回目标矩阵

  */ 

public static void main(String[] args){

DoubleMatrix d = new DoubleMatrix(new double[][]{{-1,-1,0,2,0},

{-2,0,0,1,1}});

DoubleMatrix result = PCA.dimensionReduction(d, 2);

System.out.println(result);

}

public static DoubleMatrix dimensionReduction(DoubleMatrix source, int dimension) {

//C=X*X^t/m 矩阵*矩阵^异或/列数

DoubleMatrix covMatrix = source.mmul(source.transpose()).div(source.columns);

ComplexDoubleMatrix eigVal = Eigen.eigenvalues(covMatrix);

ComplexDoubleMatrix[] eigVectorsVal = Eigen.eigenvectors(covMatrix);

ComplexDoubleMatrix eigVectors = eigVectorsVal[0];

//通过特征值将符号向量从大到小排序

ListPCABean beans = new ArrayListPCA.PCABean();

for (int i = 0; i  eigVectors.columns; i++) {

beans.add(new PCABean(eigVal.get(i).real(), eigVectors.getColumn(i)));

}

Collections.sort(beans);

DoubleMatrix newVec = new DoubleMatrix(dimension, beans.get(0).vector.rows);

for (int i = 0; i  dimension; i++) {

ComplexDoubleMatrix dm = beans.get(i).vector;

DoubleMatrix real = dm.getReal();

newVec.putRow(i, real);

}

return newVec.mmul(source);

}

static class PCABean implements ComparablePCABean {

double eigenValue;

ComplexDoubleMatrix vector;

public PCABean(double eigenValue, ComplexDoubleMatrix vector) {

super();

this.eigenValue = eigenValue;

this.vector = vector;

}

@Override

public int compareTo(PCABean o) {

return Double.compare(o.eigenValue, eigenValue);

}

@Override

public String toString() {

return "PCABean [eigenValue=" + eigenValue + ", vector=" + vector + "]";

}

}

}

org.jblas的jar包去百度下一个,我不知道怎么上传文件

java包之间的互相访问,课本习题。望高手解答

01.X 父类中私有的方法和字段不会被继承

02.O java类只能单继承和多实现

03.O Exception为所有异常的父类,所以,他包含所有的异常

04.X Class1类的方法可以访问

05.X 抽象类有构造方法,因为抽象类中有非抽象方法,可以被继承。

06.X 如果父类中的构造方法没有要求参数,则可以省略super();

07.O 正确的概念

08.O 可以,不过个goto容易引起程序的不稳定性,故现在大都不用了

09.X 不同类型的多个参数如果顺序不一样也可以实现重载

10.O 本来基本参数类型就是一个类

四、

01. B

02. D

03. C

04. A

05. D

06. B

07. C

08. D

09. A

10. abstract

java是实现什么功能

Java是Sun公司推出的一种编程语言。它是一种通过解释方式来执行的语言,语法规则和C++类似。同时,Java也是一种跨平台的程序设计语言。用Java语言编写的程序叫做“Applet”(小应用程序),用编译器将它编译成类文件后,将它存在WWW页面中,并在HTML档上作好相应标记,用户端只要装上Java的客户软件就可以在网上直接运行“Applet”。 Java非常适合于企业网络和Internet环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。 Java有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。Java摈弃了C++中各种弊大于利的功能和许多很少用到的功能。 Jave可以运行与任何微处理器,用Java开发的程序可以在网络上传输,并运行于任何客户机上。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。