第一天(10月9号):java语法

之前断断续续学过一些java的知识,但是学习时间都比较短,花一天时间熟悉最简单的java语法,包括:java基础语法、java对象和类、java基本数据类型、java变量类型、java修饰符、java运算符、java循环结构、java条件语句、java switch case、java number和math类、java character类。 学的比较浅,在写代码的过程中再不断深化。

第二天(10月10号):java实现感知机

import java.util.ArrayList;
import java.util.Arrays;

public class Percept {
/**
 * 设置参数
 */
private float eta;
private final int epoch;
private float b;  //阈值
private float [] w;
private float[] correctRate; //每次学习的正确率
ArrayList<Point> arrayList;
/**
 * 构造函数初始化学习率,学习次数,权值,阈值初始化为0
 * @param eta 学习率(取值范围0<eta<1)
 * @param epoch 学习次数
 */
public Percept(ArrayList<Point> arrayList, float eta, int epoch){
    this.eta = eta;
    this.epoch = epoch;
    this.arrayList = arrayList;
    this.b = 0;
    this.w = new float[arrayList.get(0).x.length];
    this.correctRate = new float[epoch];
}

/**
 * 学习函数,samples是一个包含输入数据和分类结果的二维数组
 * samples[][0]表示输入数据
 * samples[][1]表示正确分类的结果
 */
public int Predict(Point point){
    float y_pred = DotProduct(w, point.x) + b;
    //System.out.println(y_pred);
    return y_pred>0 ? 1 : 0;
}

public float DotProduct(float [] x1, float[] x2){
    int len = x1.length;
    float sum = 0;
    for (int i = 0; i < len; i++){
        sum += x1[i] * x2[i];
    }
    return sum;
}

public void Train(){
    for (int i = 0; i<=epoch; i++){
        Iteration();
    }
    return;
}

public void Iteration(){
    for(int i = 0; i<arrayList.size(); i++){
        Point point = arrayList.get(i);
        UpdateWeight(point, Predict(point));
    }
    //System.out.println(Arrays.toString(w));
    //System.out.println(b);
    return;
}

public void UpdateWeight(Point point, int Ypre){
    float delta = point.y - Ypre;
    for(int i = 0; i<w.length; i++){
        w[i] = w[i] + eta * delta * point.x[i];
        System.out.println(Arrays.toString(w));

    }
    b = b + eta * delta;
    //System.out.println(delta);
}

public void printCorrectRate(){
    for(int i = 0; i< epoch; i++)
        System.out.printf("第%d次学习的正确率 -> %.2f%%\n", i+1, correctRate[i] * 100);
}


public static void main(String[] args) {
    Point p1 = new Point(new float[] {0,0}, 0);
    Point p2 = new Point(new float[] {1,0}, 0);
    Point p3 = new Point(new float[] {0,1}, 0);
    Point p4 = new Point(new float[] {1,1}, 1);
    ArrayList<Point> list = new ArrayList<Point>();
    list.add(p1);
    list.add(p2);
    list.add(p3);
    list.add(p4);

    Percept model = new Percept(list, 0.1f, 20);
    model.Train();

    //Point p5 = new Point(new float[] {0,0}, 0);
    //ArrayList<Point> list1 = new ArrayList<Point>();
    //list1.add(p5);
    int y1 = model.Predict(list.get(2));
    //System.out.println(y1);

  }
}


class Point{
  float[] x = new float[2];
  float y = 0;
  Point(float[] x, float y){
      this.x = x;
      this.y = y;
  }
  public Point(){

  }
}

第三天(10月11号):Java实现LightGBM(1)