统计学习方法——第二章的c++实现
1、东西搞丢了,只写一部分
2、算法那收敛性
证明逻辑:
a、γ是yi*(wopt*Xi)最小值
b、R是Xi最小值
c、k<=(R/γ)^2
难打公式,直接说,Wk由Wk-1迭代而来,所以事实上,只需要找到迭代第三项就可以了,迭代第三项有R有eta,Wk的迭代公式有,通过放缩,得到k,eta,R的关系。
与此同时,得到Wk与Wopt的关系,这里,Wopt是最终结果的W,同样,将Wk拆分,与上面a配合,得到eta与R 关系,结合上面这条,得证。
下面是C++代码
感知机原始代码:
#include <iostream>
using namespace std; int main_2() {
double x1[] = {,,};
double x2[] = {,,};
double y[] = {,,-};
double w[] = {,};
double b[] = { };
int index = ;
double eta = ;
while ( index <= ) {
double temp = y[index] * (x1[index] * w[] + x2[index] *w[] + b[]);
if (temp <= ) {
w[] = w[] + eta * (x1[index])*y[index]; cout << w[] << endl;
w[] = w[] + eta * (x2[index])*y[index]; cout << w[] << endl;
b[] += y[index]; cout << b[] << endl;
index = ;//这一步很重要,实现了每当出现问题,全部重新开始 //cout << w[0] << " " << w[1];
//cout << b[0]; }
else
{
index = index+;
} };
cout << w[]<<" "<<w[]<<endl;
cout << b[];
system("pause");
return ;
}
感知机对偶代码:
#include<iostream> using namespace std;
int main()
{
int x1[] = { ,, };
int x2[] = { ,, };
int y[] = { ,,- }; int b = ;
int a[] = { ,, };
int G[][];
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
{
G[i][j] = x1[i] * x1[j] + x2[i] * x2[j];
cout << G[i][j] << "\t";
if (j == ) } int index = ;
int eta = ;
while (index < )
{
int temp = ;
for (int j = ; j < ; j++)
{
temp += a[j] * y[j] * G[j][index];
}
int all = y[index] * (temp + b);
if (all <= )
{
a[index] += eta;
b += y[index];
index = ; }
else
{
index++;
} }
cout << "a:" << a[] << " " << a[] << " " << a[] << endl;
cout << "b:" << b; int w[] = { , };
for (int i = ; i < ; i++)
{
w[] += a[i] * y[i] * x1[i];
w[] += a[i] * y[i] * x2[i];
}
b = ;
for (int i = ; i < ; i++)
{
b += a[i] * y[i];
}
cout << endl << "w:" << w[] << " " << w[] << endl;
cout << "b:" << b;
getchar();
return ;
}
统计学习方法——第二章的c++实现的更多相关文章
- 李航统计学习方法(第二版)(六):k 近邻算法实现(kd树(kd tree)方法)
1. kd树简介 构造kd树的方法如下:构造根结点,使根结点对应于k维空间中包含所有实例点的超矩形区域;通过下面的递归方法,不断地对k维空间进行切分,生成子结点.在超矩形区域(结点)上选择一个坐标轴和 ...
- 李航统计学习方法(第二版)(五):k 近邻算法简介
1 简介 k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类.k近邻法假设给定一个训练数据集,其中的实例类别已定.分类时,对新的实例,根据其k个最近邻的训练实例的类别,通 ...
- 李航统计学习方法(第二版)(十):决策树CART算法
1 简介 1.1 介绍 1.2 生成步骤 CART树算法由以下两步组成:(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;(2)决策树剪枝:用验证数据集对己生成的树进行剪枝并选择最优子 ...
- 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...
- Adaboost算法的一个简单实现——基于《统计学习方法(李航)》第八章
最近阅读了李航的<统计学习方法(第二版)>,对AdaBoost算法进行了学习. 在第八章的8.1.3小节中,举了一个具体的算法计算实例.美中不足的是书上只给出了数值解,这里用代码将它实现一 ...
- 统计学习导论:基于R应用——第二章习题
目前在看统计学习导论:基于R应用,觉得这本书非常适合入门,打算把课后习题全部做一遍,记录在此博客中. 第二章习题 1. (a) 当样本量n非常大,预测变量数p很小时,这样容易欠拟合,所以一个光滑度更高 ...
- 统计学习方法:KNN
作者:桂. 时间:2017-04-19 21:20:09 链接:http://www.cnblogs.com/xingshansi/p/6736385.html 声明:欢迎被转载,不过记得注明出处哦 ...
- 【NLP】基于统计学习方法角度谈谈CRF(四)
基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
随机推荐
- 【Python】学习笔记九:面向对象拓展
调用类的其他信息 在定义方法的时候,必须有self这一参数.这个参数表示某个对象,对象拥有类的所有性质.那么我们可以通过self,调用类属性 class people(object): action ...
- 探究重构代码(Code refactoring)
Code refactoring 是什么 在不改变软件的外部行为的条件下,通过修改代码改变软件内部结构,将效率低下和过于复杂的代码转换为更高效.更简单和更简单的代码. 怎样执行Code refacto ...
- vue 全局引用jq(打包后可能会遇到的问题)
问题描述:全局引用jquery打包到线上可能会不好使. 第一步: var path = require('path') var webpack = require('webpack') functio ...
- P1309 瑞士轮 (吸氧了)
P1309 瑞士轮 题解 1.这题可以模拟一下 2.sort吸氧可以过(可能是排序有点慢吧,不开会T) sort排序时注意: return 1 是满足条件,不交换 return 0是不满足,交换 代码 ...
- 你的第一个Quartz程序
package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org.slf ...
- EDM概念之A/B分类测试法
相信很多情况下大家都会看到A/B分类测试法这个专业术语,下面博主简要介绍下什么是A/B分类测试法. 这里的A和B主要是指两种不同版本的电子邮件.一般来说,可以将用户分为同等数量的两组,一组发送A版本, ...
- WPF WebBrowser 加载 html ,出现安全警告, 运行 脚本和 activeX 控件,
对于你的问题,只需要在你的HTML首行添加如下代码即可隐藏安全提示条: <!-- saved from url=(0014)about:internet --> 还有一个可选方案是使用Wi ...
- lnmp 安装 访问 配置 laravel
环境要求 Lnmp 一键安装包安装 php7.2+ Mysql 5.7 Innodb 开启 第一步 上传项目到 /home/wwwroot/default/ 或者composer命令行安装larave ...
- c# AES128 加解密算法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- RabbitMQ使用(上)
1. 说明 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方, ...