Example #1
0
def gmmEM(data, K, it,show=False,usekmeans=True):
    #data += finfo(float128).eps*100
    centroid = kmeans2(data, K)[0] if usekmeans else ((max(data) - min(data))*random_sample((K,data.shape[1])) + min(data))
    N = data.shape[0]
    gmm = GaussianMM(centroid)
    if show: gmm.draw(data)
    while it > 0:
        print it," iterations remaining"
        it = it - 1
        # e-step
        gausses = zeros((K, N), dtype = data.dtype)
        for k in range(0, K):
            gausses[k] = gmm.c[k]*mulnormpdf(data, gmm.mean[k], gmm.covm[k])
        sums = sum(gausses, axis=0)
        if count_nonzero(sums) != sums.size:
            raise "Divide by Zero"
        gausses /= sums
        # m step
        sg = sum(gausses, axis=1)
        if count_nonzero(sg) != sg.size:
            raise "Divide by Zero"
        gmm.c = ones(sg.shape) / N * sg
        for k in range(0, K):
            gmm.mean[k] = sum(data * gausses[k].reshape((-1,1)), axis=0) / sg[k]
            d = data - gmm.mean[k]
            d1 = d.transpose()*gausses[k]
            gmm.covm[k]=dot(d1,d)/sg[k]
        if show: gmm.draw(data)
    return gmm
def simulate_buy_and_hold(df_day_gain, df_analyzed):
    df_buy_and_hold = df_day_gain.copy()
    for row_index, row in df_buy_and_hold.iterrows():
        analyzed_row = df_analyzed.loc[row_index]
        number_of_invested = count_nonzero(analyzed_row)
        money_invested = previous_row.sum(
        ) if row_index != df_buy_and_hold.index[0] else 1
        for key, value in row.iteritems():
            if row_index == df_buy_and_hold.index[0]:
                row[key] = money_invested / \
                    number_of_invested if analyzed_row[key] else 0
            else:
                if previous_row_invested == number_of_invested:
                    row[key] = (1 + value) * \
                        previous_row[key] if analyzed_row[key] else 0
                else:
                    row[key] = (1 + value) * (
                        money_invested /
                        number_of_invested) if analyzed_row[key] else 0
        previous_row = row
        previous_row_invested = number_of_invested
    return df_buy_and_hold
Example #3
0
def calculateMisclassificationRate(ours, real):
    return 1.0 - count_nonzero(ours + real)*1.0 / ours.size
Example #4
0
 def checkClassification(self,binary):
     fp = count_nonzero(logical_and(self.notMask, binary))
     tp = count_nonzero(logical_and(self.mask,binary))
     return fp,tp
Example #5
0
 def __init__(self,fileName):
     self.mask = imread(fileName) > 0
     self.notMask = logical_not(self.mask)
     self.positives = count_nonzero(self.mask)*1.0
     self.negatives = (self.mask.size - self.positives)*1.0