The Elements of Statistical Learning 第六章figure6-6 python绘图

#生成0-1均匀分布的随机数
import numpy as np#调用numpy库,目的是使用矩阵,对数据矩阵进行操作
import matplotlib.pyplot as plt#调用matplotlib中的函数pyplot,为画图做准备
np.random.seed(12345)
uni_data=np.random.uniform(0,1,size=(100,1))
#在已知function构造相应的response value
values=np.sin(4*uni_data)+np.random.normal(0,1/3,size=(100,1))
input_x=np.arange(0,1,0.01)
#所需参数设置
onearray=np.ones((100,1))
uni_data2=uni_data**2
B=np.hstack((onearray,uni_data))#regression matrix
C=np.hstack((B,uni_data2))
#计算常量等价核
def getConstantEquivalentKernel(x0,lamb):
    K=np.zeros((1,100))
    for i in np.arange(100):
        if abs((uni_data[i,]-x0)/lamb)>1:
            K[0,i]=0 
        else:
            K[0,i]=(1-abs((uni_data[i,]-x0)/lamb)**3)**3
    sumK=np.sum(K)
    l=K/sumK
    return l
constantvalues=np.zeros((100,100))
for i in np.arange(100):
    constantvalues[i,:]=getConstantEquivalentKernel(input_x[i],0.2).reshape(1,100)
constantVariance=np.sum(constantvalues**2,axis=1)
plt.plot(input_x,constantVariance,c="orange",label="constant")         
 
#计算线性的等价核
def getLinearEquivalentKernel(x0,lamb):
    #设置kernel diagonal matrix
    b=np.array((1,x0))
    zeroarray=np.zeros((100,100))
    for i in np.arange(100):
        if abs((uni_data[i,]-x0)/lamb)>1:
            zeroarray[i,i]=0
        else:
            zeroarray[i,i]=(1-abs((uni_data[i,]-x0)/lamb)**3)**3
    #设置一堆虚拟参数,方便表示
    m=np.linalg.inv(B.T.dot(zeroarray).dot(B))
    f=b.dot(m).dot(B.T).dot(zeroarray)
    return f
allvalues=np.zeros((100,100))
for i in np.arange(100):
    allvalues[i,:]=getLinearEquivalentKernel(input_x[i],0.2).reshape(1,100)
linerVariance=np.sum(allvalues**2,axis=1)
plt.plot(input_x,linerVariance,c="blue",label="linear")
#计算二次的等价核
def getQuadraticEquivalentKernel(x0,lamb):
    b=np.array((1,x0,x0**2))
    zerosarray=np.zeros((100,100))
    for i in np.arange(100):
        if abs((uni_data[i,]-x0)/lamb)>1:
            zerosarray[i,i]=0
        else:
            zerosarray[i,i]=(1-abs((uni_data[i,]-x0)/lamb)**3)**3
    #设置一些局部参数方便表示
    m=np.linalg.inv(C.T.dot(zerosarray).dot(C))
    f=b.dot(m).dot(C.T).dot(zerosarray)
    return f
newvalues=np.zeros((100,100))

for i in np.arange(100):
    newvalues[i,:]=getQuadraticEquivalentKernel(input_x[i],0.2).reshape(1,100)
QuadraticVariance=np.sum(newvalues**2,axis=1)
plt.plot(input_x,QuadraticVariance,c="green",label="Quadratic")
   
plt.legend(loc="best")
plt.ylabel("variance")
plt.show()
图形如下


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《The Elements of Statistical Learning》是机器学习领域的经典教材,第四章介绍了线性方法的基本概念和应用。 第四章主要包括以下内容: 1. 线性回归:介绍了线性回归的基本概念和数学模型。通过最小二乘法可以获得最优的回归系数,同时还介绍了基于正则化的线性回归模型,如岭回归和Lasso回归。 2. 多项式回归:介绍了多项式回归的概念和方法。通过引入多项式特征,可以提高线性模型的拟合能力,同时也存在过拟合的问题。 3. 基函数回归:介绍了基函数回归的概念和方法。通过引入非线性基函数,可以将线性模型拓展到非线性模型,并提高模型的灵活性。 4. 局部回归:介绍了局部加权线性回归(Locally Weighted Regression)的方法。该方法通过赋予不同数据点不同权重,来进行局部拟合。局部回归可以克服全局模型造成的误差,并提供更精确的预测结果。 5. 逻辑回归:介绍了逻辑回归的概念和应用。逻辑回归常用于二分类问题的建模,在线性回归的基础上,通过引入逻辑函数将输出映射到概率空间。 6. 多分类问题:介绍了多分类问题的处理方法。通过引入一对多(One-vs-Rest)或一对一(One-vs-One)的策略,将多分类问题转化为一系列二分类问题。 以上是《The Elements of Statistical Learning》第四章的主要内容概述。通过学习这些内容,读者可以了解线性方法在机器学习中的基本原理和应用,并在实际问题中运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值