Exemple #1
0
def backstepwise(data, out, k):
    feature_num = len(data[0])
    index_array = [i for i in range(feature_num)]
    droper = feature_num - k
    
    for i in range(droper):
        beta = leastsquare.ls(data[:,np.array(index_array)], out)
        yhat = leastsquare.predict(data[:,np.array(index_array)], beta)
        theg2 = leastsquare.thegama2(yhat, out, len(index_array))
        z = leastsquare.z_score(beta, np.sqrt(theg2), data[:,np.array(index_array)])
        min_z = 999999999.
        min_idx = None
        for j in range(len(z)):
            if z[j] < min_z:
                min_z = z[j]
                min_idx = j
        index_array.remove(index_array[min_idx])
    
    beta = leastsquare.ls(data[:,np.array(index_array)], out)
    
    return beta, index_array
Exemple #2
0
def stepwise(data, out, k):
    feature_num = len(data[0])
    index_array = [0]
    indexs = [i for i in range(1,feature_num)]
    
    #beta = leastsquare.ls(data[:,np.array(index_array)], out)
    
    min_beta = None
    min_idx =None
    for i in range(1,k):
        min_rss = 999999999
        for idx in indexs:
            ia = index_array + [idx]
            beta = leastsquare.ls(data[:,ia], out)
            rss = RSS(data[:,ia], out, beta)
            if rss < min_rss:
                min_rss = rss
                min_beta = beta
                min_idx = idx
        index_array.append(min_idx)
        indexs.remove(min_idx)
    return min_beta, index_array