我不仅送100本纸质《统计学习方法》,连代码也都准备齐了

2019 年 7 月 22 日 七月在线实验室


各位同学,7月17日-23日为七月在线4周年庆典

将送出总价值远超6万的实物大奖!


并送出100本纸质技术书籍

你没有看错

送100本!

100本!

(上述书籍可任选1本)


想要吗?不过数量有限!

100本技术类纸质书,送完即止


↓立刻扫码进群,参与活动↓

↑扫他↑



李航的《统计学习方法》可以说是机器学习的入门宝典,许多互联网企业的面试、笔试题目,很多都参考这本书。

前段时间,黄海广博士在自己的 GitHub 上又更新了《统计学习方法》的 Python 代码,就迫不及待地分享给大家。


《统计学习方法》第一版还是 2012 年出版的,包含了众多主要的监督学习算法与模型。

2019 年 5 月 1 日,《统计学习方法》第二版正式发布,通过 6 年时间的努力,在第一版的基础上又增加了无监督学习的主要算法与模型。



第二版的目录为:


第1篇 监督掌习

第1章统计学习及监督学习概论
第2章感知机
第3章k近邻法
第4章朴素贝叶斯法
第5章决策树
第6章逻辑斯谛回归与优选熵模型
第7章支持向量机
第8章提升方法
第9章EM算法及其推广
第10章隐马尔可夫模型
第11章条件随机场
第12章监督学习方法总结
第2篇无监督学习
第13章无监督学习概论
第14章聚类方法
第15章奇异值分解
第16章主成分分析
第17章潜在语义分析
第18章概率潜在语义分析
第19章马尔可夫链蒙特卡罗法

第20章  潜在狄利克雷分配

第21章  PageRank算法

第22章  无监督学习方法总结

    附录A  梯度下降法

    附录B  牛顿法和拟牛顿法

    附录C  拉格朗日对偶性

    附录D  矩阵的基本子空间

    附录E  KL散度的定义和狄利克雷分布的性质


针对新增加的内容,黄海广博士对原有的 GitHub 源码进行新内容的更新,直接放上地址:


https://github.com/fengdu78/lihang-code


本次修改了部分错误,增加了每章概述,更新完前 12 章,今后将增加第二版的内容。


修改主要错误包括: 


  • 第3章 k近邻法的max_count错误 

  • 第10章 隐马尔可夫模型的viterbi索引错误 


增加的内容: 


  • 增加每章的概要


项目目前包含的内容截图如下:



目前,该项目已经收获 5000+ 的 star 了。


Python 代码


下面,以支持向量机为例,我们可以查阅 SVM 的完整示例代码:


class SVM:
def __init__(self, max_iter=100, kernel='linear'):
self.max_iter = max_iter
self._kernel = kernel

def init_args(self, features, labels):
self.m, self.n = features.shape
self.X = features
self.Y = labels
self.b = 0.0

# 将Ei保存在一个列表里
self.alpha = np.ones(self.m)
self.E = [self._E(i) for i in range(self.m)]
# 松弛变量
self.C = 1.0

def _KKT(self, i):
y_g = self._g(i) * self.Y[i]
if self.alpha[i] == 0:
return y_g >= 1
elif 0 < self.alpha[i] < self.C:
return y_g == 1
else:
return y_g <= 1

# g(x)预测值,输入xi(X[i])
def _g(self, i):
r = self.b
for j in range(self.m):
r += self.alpha[j] * self.Y[j] * self.kernel(self.X[i], self.X[j])
return r

# 核函数
def kernel(self, x1, x2):
if self._kernel == 'linear':
return sum([x1[k] * x2[k] for k in range(self.n)])
elif self._kernel == 'poly':
return (sum([x1[k] * x2[k] for k in range(self.n)]) + 1)**2

return 0

# E(x)为g(x)对输入x的预测值和y的差
def _E(self, i):
return self._g(i) - self.Y[i]

def _init_alpha(self):
# 外层循环首先遍历所有满足0<a<C的样本点,检验是否满足KKT
index_list = [i for i in range(self.m) if 0 < self.alpha[i] < self.C]
# 否则遍历整个训练集
non_satisfy_list = [i for i in range(self.m) if i not in index_list]
index_list.extend(non_satisfy_list)

for i in index_list:
if self._KKT(i):
continue

E1 = self.E[i]
# 如果E2是+,选择最小的;如果E2是负的,选择最大的
if E1 >= 0:
j = min(range(self.m), key=lambda x: self.E[x])
else:
j = max(range(self.m), key=lambda x: self.E[x])
return i, j

def _compare(self, _alpha, L, H):
if _alpha > H:
return H
elif _alpha < L:
return L
else:
return _alpha

def fit(self, features, labels):
self.init_args(features, labels)

for t in range(self.max_iter):
# train
i1, i2 = self._init_alpha()

# 边界
if self.Y[i1] == self.Y[i2]:
L = max(0, self.alpha[i1] + self.alpha[i2] - self.C)
H = min(self.C, self.alpha[i1] + self.alpha[i2])
else:
L = max(0, self.alpha[i2] - self.alpha[i1])
H = min(self.C, self.C + self.alpha[i2] - self.alpha[i1])

E1 = self.E[i1]
E2 = self.E[i2]
# eta=K11+K22-2K12
eta = self.kernel(self.X[i1], self.X[i1]) + self.kernel(
self.X[i2],
self.X[i2]) - 2 * self.kernel(self.X[i1], self.X[i2])
if eta <= 0:
# print('eta <= 0')
continue

alpha2_new_unc = self.alpha[i2] + self.Y[i2] * (
E1 - E2) / eta #此处有修改,根据书上应该是E1 - E2,书上130-131页
alpha2_new = self._compare(alpha2_new_unc, L, H)

alpha1_new = self.alpha[i1] + self.Y[i1] * self.Y[i2] * (
self.alpha[i2] - alpha2_new)

b1_new = -E1 - self.Y[i1] * self.kernel(self.X[i1], self.X[i1]) * (
alpha1_new - self.alpha[i1]) - self.Y[i2] * self.kernel(
self.X[i2],
self.X[i1]) * (alpha2_new - self.alpha[i2]) + self.b
b2_new = -E2 - self.Y[i1] * self.kernel(self.X[i1], self.X[i2]) * (
alpha1_new - self.alpha[i1]) - self.Y[i2] * self.kernel(
self.X[i2],
self.X[i2]) * (alpha2_new - self.alpha[i2]) + self.b

if 0 < alpha1_new < self.C:
b_new = b1_new
elif 0 < alpha2_new < self.C:
b_new = b2_new
else:
# 选择中点
b_new = (b1_new + b2_new) / 2

# 更新参数
self.alpha[i1] = alpha1_new
self.alpha[i2] = alpha2_new
self.b = b_new

self.E[i1] = self._E(i1)
self.E[i2] = self._E(i2)
return 'train done!'

def predict(self, data):
r = self.b
for i in range(self.m):
r += self.alpha[i] * self.Y[i] * self.kernel(data, self.X[i])

return 1 if r > 0 else -1

def score(self, X_test, y_test):
right_count = 0
for i in range(len(X_test)):
result = self.predict(X_test[i])
if result == y_test[i]:
right_count += 1
return right_count / len(X_test)

def _weight(self):
# linear model
yx = self.Y.reshape(-1, 1) * self.X
self.w = np.dot(yx.T, self.alpha)
return self.w


其实,我看了下,项目中不仅包含 SVM 的示例代码,同时也有对应的读书笔记和概括总结。


《统计学习方法》课件


作者袁春:清华大学深圳研究生院,提供了第一版全书 12 章的 PPT 课件。



课件链接:

https://pan.baidu.com/s/1_boHMIg6DqS7bgFuxlWF7Q 提取码:ffxy

↑立刻扫码参与↑

而且除了100本纸质书的活动以外

还有5大活动等你




01


重磅大奖,抽奖送!


7月17日-23日期间

每天都有机会拿走下列壕礼

 宠AI你,没商量




8000+元的iphoneXS Max



2800+元的Apple Watch 


2900+元的Apple iPad mini5


以及

价值2300+元的小米MIX3

价值1600+元的樱桃机械键盘

价值1500+元的小米扫地机器人

价值1200+元的AirPods

价值1200+元的VIVO Z3


价值1000+元的Kindle 8G电子书阅读器套装

价值近1000元的Bose无线耳机小米净化器

以及、樱桃键盘、iReader 青春版


动心了吗?小七还没说完哪

小米电饭锅、飞利浦电动牙刷、京东购物卡

苹果原装耳机、小爱同学音箱mini

.

.

.


奖品已经堆成小山了

你,准备好吗?

活动期间最低可免费抽84次

每买1个课程还可额外获得3次抽奖机会

(活动中有1元就可以购买的课程哦)


参与活动,及详细规则可进群查看

群内还将送100本纸质书哦!

↓数量有限,立刻进群↓



0 2

大奖花落谁家?


大家是不是每次参与活动,都会在心里想着:

“我运气太差,估计拿不到大奖;

要是有一个靠实力的活动该有多好。”


想不想靠实力拿一次大奖?


靠实力拿奖品的AI水平测试来了!


前三名将获得售价3299元VIP年会员

第一名额外拿到300元京东卡

第二名额外拿到200元京东卡


不清楚VIP年会员的价值的朋友

请往下看,保证你看完就动心


VIP年会员可免费学100+课程一整年

课程总价值近4万元



并且未来一年约20门

总价值近万元的课程也可以免费学




而且不仅包含课程

GPU&CPU双云平台也可以免费使用



VIP会员绝对是超级大奖,各类课程一步到位

并且这次活动可不光前三名有奖品哦

第4-6名可以任意挑选一门课程

第7-10名可以获得纸质书籍一本




03

海量课程,低于1折!


40门热销课程,低于1折

降价不降质!

悄悄的告诉大家

有6门课程支付1元定金后,到手价低至0元

大家可以扫码进群查看,没准就有你想要的

群内还有100本纸质技术书等你!


↓数量有限,立刻进群↓


下面是部分课程,不含0元课程。




05

两大特训营,学费全勤全返!


同学们,这可就是相当于0元学呀!

而且还有四大特权!


更有机器学习特训营,可以进群咨询

↓100本书,等你拿哦↓


AI如果耍起了心眼,人类就像个白痴......

面试官:“这10项都没准备好,你面试个啥?”


登录查看更多
0

相关内容

专知会员服务
137+阅读 · 2020年5月19日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
《深度学习》圣经花书的数学推导、原理与Python代码实现
资源 | 李航老师《统计学习方法》(第2版)课件下载
专知会员服务
248+阅读 · 2019年11月10日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
机器学习在材料科学中的应用综述,21页pdf
专知会员服务
47+阅读 · 2019年9月24日
统计学习方法第一版课程PPT
AINLP
13+阅读 · 2019年5月14日
Optimization for deep learning: theory and algorithms
Arxiv
102+阅读 · 2019年12月19日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关VIP内容
专知会员服务
137+阅读 · 2020年5月19日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
《深度学习》圣经花书的数学推导、原理与Python代码实现
资源 | 李航老师《统计学习方法》(第2版)课件下载
专知会员服务
248+阅读 · 2019年11月10日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
机器学习在材料科学中的应用综述,21页pdf
专知会员服务
47+阅读 · 2019年9月24日
相关论文
Optimization for deep learning: theory and algorithms
Arxiv
102+阅读 · 2019年12月19日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
6+阅读 · 2018年1月14日
Top
微信扫码咨询专知VIP会员