根据《统计学习方法》用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");
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。