感知器 (c++描述)

2017-05-04  本文已影响0人  gibyeng

根据《统计学习方法》用C++实现的感知器模型。

#include <iostream>
using namespace std;
const int N = 3;/*样本数量*/
const int M = 2;/*输入数据的维数*/
double W[M]{};
double b = 0;
struct slp {
    double X[M];
    double Y;
};
slp trainData[N] = {
    { { 3,3 },1 },
    { { 4,3 },1 },
    { { 1,1 },-1 }
};

/*根据第i项数据更新一次*/
void update(int i) {
    for (int j = 0; j < M; j++) {
        W[j] += trainData[i].X[j] * trainData[i].Y;
    }
    b += trainData[i].Y;
    
}

/*判断当前解是否可行*/
int check() {
    for (int i = 0; i < N; i++) {
        double res = 0;
        for (int j = 0; j < M; j++) {
            res += trainData[i].X[j] * W[j];
        }
        res += b;
        if (res*trainData[i].Y<=0) {
            update(i);
            return -1;
        }
    }
    return 1;
}
void print_ans() {
    for (int j = 0; j < M; j++) {
        cout << W[j] << endl;
    }
    cout << b << endl;

}
int main()
{
    while (check() < 0) {
        
    }
    print_ans();
    system("pause");
}
上一篇下一篇

猜你喜欢

热点阅读