机器学习基石第二次作业

Question 1   

这题挺简单   λμ+(1λ)(1μ)

Question 2  

上面的式子展开就知道是0.5了

Question 3~5

直接带入公式算出来吗?这三题我是带入公式算的,尝试了一下没有推导出来,不知道有没有人推导出来了。

Question 6

这题也蛮简单,即是二次函数且与y=0有两个交点

Question 7

一个很简单的例子,四个排序的值A,B,C,D。不可能存在一个
positive-and-negative intervals的分类方式把他们标记为+1,-1,+1,-1
因此最大的能shuffle(是这个单词吧- -!)的样本量是3.

Question 8

不难发现break point在3,然后根据公式就知道答案啦

Question 9

题目是我半个月之前做的了吧,讲道理的话这题肯定是我设D=2然后算出来的,不过我现在来想的话,这个就是一个D次的多项式,
他最多有D-1的极值,所以当资料为D+1的时候肯定不能shuffle了,可以参考 positive-and-negative intervals。

Question 10

S最多有2的d次方种情况,所以当超过这个值的时候就不能shuffle了

Question 11

无穷种吧

Question 12

很明显了



Question 13

分有break point 和没有两种情况,两种情况下排除就可以了



Question 14~15

理解一下题意就知道了

Question 16

稍微推导一下就出来了


Question 17~20

我把之前notebook上面几段代码都贴一下吧
函数定义
import numpy as np
import random
def generateData():
    x=[]
    y=[]
    for i in range(0,20):
        cx=random.uniform(-1,1)
        x.append(cx)
        cy=-1
        if cx>=0:
            cy=1
        p=random.randint(1,10)
        if p>8:
            cy=cy*-1
        y.append(cy)
    return x,y

def getErrOut(th,s):
    return 0.5+0.3*s*(abs(th)-1)

def runModel(x,y):
    crange=len(x)
    errIn=1
    curErr=0
    th=0
    s=0
    for mx in x:
        curErr=0
        curS=1
        for i in range(0,crange):
            if x[i]>mx:
                cy=1
            else:
                cy=-1
            if cy!=y[i]:
                curErr=curErr+1
        if curErr>crange/2:
            curErr=crange-curErr
            curS=-1
        curErr=curErr/crange
        if curErr

run 5000次

eim=0
eom=0
for i in range(0,5000):
   # print(i)
   # print("~~~~~~~~~~~~~~~~~~~~~~~~~~")
    x,y=generateData()
    #for i in range(0,20):
    #    print(x[i])
   # for i in range(0,20):
    #    print(y[i])
    errIn,th,s=runModel(x,y)
    #print("para~~~~~~~~~~~~~")
    #print(errIn)
    #print(th)
    #print(s)
    errOut=getErrOut(th,s)
    #print(errOut)
    eim=eim+errIn
    eom=eom+errOut
    #print(eim)
   # print(eom)
print(eim/5000)
print(eom/5000)
import numpy as np
testData=np.loadtxt('E:/ML/Taiwan_ML/base_2/hw2_test.dat')
trainData=np.loadtxt('E:/ML/Taiwan_ML/base_2/hw2_train.dat')
xTest=testData[:,0:testData.shape[1]-1]
yTest=testData[:,testData.shape[1]-1]
xTrain=trainData[:,0:trainData.shape[1]-1]
yTrain=trainData[:,trainData.shape[1]-1]

eim=1
cth=0
cs=0
den=0
for i in range(0,xTrain.shape[1]):
    errIn,th,s=runModel(xTrain[:,i].tolist(),yTrain.tolist())
    print(i,errIn,s,th)
    if errIncth:
        cy=1
    else:
        cy=-1
    cy=cy*cs
    if(cy!=y[i]):
        errNum=errNum+1
print(errNum/len(x))
import numpy as np
testData=np.loadtxt('E:/ML/Taiwan_ML/base_2/hw2_test.dat')
trainData=np.loadtxt('E:/ML/Taiwan_ML/base_2/hw2_train.dat')
xTest=testData[:,0:testData.shape[1]-1]
yTest=testData[:,testData.shape[1]-1]
xTrain=testData[:,0:trainData.shape[1]-1]
yTrain=testData[:,trainData.shape[1]-1]

errIn=1
curErr=0
th=0
s=0
x=xTrain[:,3].tolist()
for mx in x:
    print(mx)




你可能感兴趣的:(机器学习)