线性回归和逻辑回归的实现大体一致,将其抽象出一个抽象类Regression,包含整体流程,其中有三个抽象函数,将在线性回归和逻辑回归中重写。
将样本设为Sample类,其中采用数组作为特征的存储形式。
1. 样本类Sample
1 public classSample {2
3 double[] features;4 int feaNum; //the number of sample's features
5 double value; //value of sample in regression
6 int label; //class of sample
7
8 public Sample(intnumber) {9 feaNum =number;10 features = new double[feaNum];11 }12
13 public voidoutSample() {14 System.out.println("The sample's features are:");15 for(int i = 0; i < feaNum; i++) {16 System.out.print(features[i] + " ");17 }18 System.out.println();19 System.out.println("The label is: " +label);20 System.out.println("The value is: " +value);21 }22 }
2. 抽象类Regression
public abstract classRegression {double[] theta; //parameters
int paraNum; //the number of parameters
double rate; //learning rate
Sample[] sam; //samples
int samNum; //the number of samples
double th; //threshold value
/*** initialize the samples
*@params : training set
*@paramnum : the number of training samples*/
public void Initialize(Sample[] s, intnum) {
samNum=num;
sam= newSample[samNum];for(int i = 0; i < samNum; i++) {
sam[i]=s[i];
}
}/*** initialize all parameters
*@parampara : theta
*@paramlearning_rate
*@paramthreshold*/
public void setPara(double[] para, double learning_rate