Exemple #1
0
def printError(my_dpi, data):
    """
    All data contanining the stock price info are retrieved from the database given the stock name
    :param my_dpi: dpi screen
    :param data: data to be plot
    :param max_error: maximum error allowed
    """

    try:
        stockFile = []
        try:
            for eachLine in data:
                splitLine = eachLine.split(',')
                if len(splitLine) == 2:
                    if 'values' not in eachLine:
                        stockFile.append(eachLine)
        except Exception as e:
            print(str(e), 'failed to organize pulled data.')
    except Exception as e:
        print(str(e), 'failed to pull pricing data')

    try:
        date, closep_raw = np.loadtxt(
            stockFile,
            delimiter=',',
            unpack=True,
            converters={0: mdates.bytespdate2num('%Y%m%d')})
        closep = closep_raw[::-1]

        max_error = 0.1
        while max_error < float(2 * max(closep)):
            segments1 = segment.slidingwindowsegment(closep, fit.interpolate,
                                                     fit.sumsquared_error,
                                                     max_error)
            segments2 = segment.slidingwindowsegment(closep, fit.regression,
                                                     fit.sumsquared_error,
                                                     max_error)
            err1 = str(evaluate_MSE(closep, segments1))
            err4 = str(evaluate_MSE(closep, segments2))
            segments1 = segment.topdownsegment(closep, fit.interpolate,
                                               fit.sumsquared_error, max_error)
            segments2 = segment.topdownsegment(closep, fit.regression,
                                               fit.sumsquared_error, max_error)
            err2 = str(evaluate_MSE(closep, segments1))
            err5 = str(evaluate_MSE(closep, segments2))
            segments1 = segment.bottomupsegment(closep, fit.interpolate,
                                                fit.sumsquared_error,
                                                max_error)
            segments2 = segment.bottomupsegment(closep, fit.regression,
                                                fit.sumsquared_error,
                                                max_error)
            err3 = str(evaluate_MSE(closep, segments1))
            err6 = str(evaluate_MSE(closep, segments2))
            print(
                str(max_error) + " " + err1 + " " + err2 + " " + err3 + " " +
                err4 + " " + err5 + " " + err6)
            max_error += 0.1

    except e:
        print("Error")
def draw_window_API(my_dpi, max_error, stockToFetch):
    """
    All data contanining the stock price info are retrieved from the database given the stock name
    :param my_dpi: dpi screen
    :param data: data to be plot
    :param max_error: maximum error allowed
    """

    fig = plt.figure(figsize=(1000 / my_dpi, 700 / my_dpi),
                     dpi=96,
                     edgecolor='k',
                     facecolor='black')
    fig.suptitle("PIECEWISE SEGMENTATION INTERPOLATION",
                 fontsize="15",
                 color="white",
                 fontweight='bold',
                 bbox={
                     'facecolor': 'red',
                     'alpha': 0.5,
                     'pad': 10
                 })

    try:
        print('Currently Pulling', stockToFetch)
        urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/' + stockToFetch + '/chartdata;type=quote;range=5y/csv'
        stockFile = []
        try:
            sourceCode = urllib.request.urlopen(urlToVisit).read().decode()
            splitSource = sourceCode.split('\n')
            for eachLine in splitSource:
                splitLine = eachLine.split(',')
                if len(splitLine) == 6:
                    if 'values' not in eachLine:
                        stockFile.append(eachLine)
        except Exception as e:
            print(str(e), 'failed to organize pulled data.')
    except Exception as e:
        print(str(e), 'failed to pull pricing data')

    try:
        date, closep, highp, lowp, openp, volume = np.loadtxt(
            stockFile,
            delimiter=',',
            unpack=True,
            converters={0: mdates.bytespdate2num('%Y%m%d')})
        SP = len(date)
        # First subplot
        ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
        segments = segment.slidingwindowsegment(closep, fit.interpolate,
                                                fit.sumsquared_error,
                                                max_error)
        draw_plot(closep, plt, ax1, "Sliding window with interpolation")
        draw_segments(segments, 'red')
        plt.ylabel('Stock Price')
        plt.title("Sliding window", color='w')

        # Second subplot
        ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=3)
        segments = segment.topdownsegment(closep, fit.interpolate,
                                          fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax2, "Sliding window with interpolation")
        draw_segments(segments, 'green')
        plt.ylabel('Stock Price')
        plt.title("Top down", color='w')

        # Third subplot
        ax3 = plt.subplot2grid((3, 3), (2, 0), colspan=3)
        segments = segment.bottomupsegment(closep, fit.interpolate,
                                           fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax3, "Sliding window with interpolation")
        draw_segments(segments, 'blue')
        plt.ylabel('Stock Price')
        plt.title("Bottom up", color='w')

        plt.subplots_adjust(hspace=0.3)
        plt.show()

    except e:
        print("Error")
def draw_window(my_dpi, data, max_error):
    """
    All data contanining the stock price info are retrieved from the database given the stock name
    :param my_dpi: dpi screen
    :param data: data to be plot
    :param max_error: maximum error allowed
    """

    fig = plt.figure(figsize=(1000 / my_dpi, 700 / my_dpi),
                     dpi=96,
                     facecolor='black')
    fig.suptitle("PIECEWISE SEGMENTATION INTERPOLATION",
                 fontsize="15",
                 color="white",
                 fontweight='bold',
                 bbox={
                     'facecolor': 'red',
                     'alpha': 0.5,
                     'pad': 10
                 })

    try:
        stockFile = []
        try:
            for eachLine in data:
                splitLine = eachLine.split(',')
                if len(splitLine) == 2:
                    if 'values' not in eachLine:
                        stockFile.append(eachLine)
        except Exception as e:
            print(str(e), 'failed to organize pulled data.')
    except Exception as e:
        print(str(e), 'failed to pull pricing data')

    try:
        date, closep_raw = np.loadtxt(
            stockFile,
            delimiter=',',
            unpack=True,
            converters={0: mdates.bytespdate2num('%Y%m%d')})
        closep = closep_raw[::-1]

        print(max(closep))

        max_error = max(closep) * 2.5

        # First subplot
        ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
        segments = segment.slidingwindowsegment(closep, fit.interpolate,
                                                fit.sumsquared_error,
                                                max_error)
        draw_plot(closep, plt, ax1, "Sliding window with interpolation")
        draw_segments(segments, 'red')
        plt.ylabel('Stock Price')
        plt.title("SLIDING WINDOW - ERROR " +
                  str(evaluate_global_error(closep, segments)),
                  color='Yellow',
                  fontweight='bold')

        # Second subplot
        ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=3)
        segments = segment.topdownsegment(closep, fit.interpolate,
                                          fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax2, "Sliding window with interpolation")
        draw_segments(segments, 'green')
        plt.ylabel('Stock Price')
        plt.title("TOP DOWN - ERROR " +
                  str(evaluate_global_error(closep, segments)),
                  color='Yellow',
                  fontweight='bold')

        # Third subplot
        ax3 = plt.subplot2grid((3, 3), (2, 0), colspan=3)
        segments = segment.bottomupsegment(closep, fit.interpolate,
                                           fit.sumsquared_error, max_error)
        segments = segment.bottomupsegment(closep, fit.interpolate,
                                           fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax3, "Sliding window with interpolation")
        draw_segments(segments, 'blue')
        plt.ylabel('Stock Price')
        plt.title("BOTTOM UP - ERROR " +
                  str(evaluate_global_error(closep, segments)),
                  color='Yellow',
                  fontweight='bold')

        plt.subplots_adjust(hspace=0.3)
        plt.show()

    except e:
        print("Error")
    ax = gca()
    for segment in segments:
        line = Line2D((segment[0], segment[2]), (segment[1], segment[3]))
        ax.add_line(line)


with open("example_data/16265-normalecg.txt") as f:
    file_lines = f.readlines()

data = [float(x.split("\t")[2].strip()) for x in file_lines[100:320]]

max_error = 0.005

# sliding window with regression
figure()
segments = segment.slidingwindowsegment(data, fit.regression, fit.sumsquared_error, max_error)
draw_plot(data, "Sliding window with regression")
draw_segments(segments)

# bottom-up with regression
figure()
segments = segment.bottomupsegment(data, fit.regression, fit.sumsquared_error, max_error)
draw_plot(data, "Bottom-up with regression")
draw_segments(segments)

# top-down with regression
figure()
segments = segment.topdownsegment(data, fit.regression, fit.sumsquared_error, max_error)
draw_plot(data, "Top-down with regression")
draw_segments(segments)
Exemple #5
0
    ax = gca()
    for segment in segments:
        line = Line2D((segment[0], segment[2]), (segment[1], segment[3]))
        ax.add_line(line)


with open("example_data/16265-normalecg.txt") as f:
    file_lines = f.readlines()

data = [float(x.split("\t")[2].strip()) for x in file_lines[100:320]]

max_error = 0.005

#sliding window with regression
figure()
segments = segment.slidingwindowsegment(data, fit.regression,
                                        fit.sumsquared_error, max_error)
draw_plot(data, "Sliding window with regression")
draw_segments(segments)

#bottom-up with regression
figure()
segments = segment.bottomupsegment(data, fit.regression, fit.sumsquared_error,
                                   max_error)
draw_plot(data, "Bottom-up with regression")
draw_segments(segments)

#top-down with regression
figure()
segments = segment.topdownsegment(data, fit.regression, fit.sumsquared_error,
                                  max_error)
draw_plot(data, "Top-down with regression")
def draw_window_API(my_dpi, max_error, stockToFetch):
    """
    All data contanining the stock price info are retrieved from the database given the stock name
    :param my_dpi: dpi screen
    :param data: data to be plot
    :param max_error: maximum error allowed
    """

    fig = plt.figure(figsize=(1000/my_dpi, 700/my_dpi), dpi=96, edgecolor='k', facecolor='black')
    fig.suptitle("PIECEWISE SEGMENTATION REGRESSION", fontsize="15", color="white", fontweight='bold', bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})

    try:
        print('Currently Pulling',stockToFetch)
        urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stockToFetch+'/chartdata;type=quote;range=5y/csv'
        stockFile =[]
        try:
            sourceCode = urllib.request.urlopen(urlToVisit).read().decode()
            splitSource = sourceCode.split('\n')
            for eachLine in splitSource:
                splitLine = eachLine.split(',')
                if len(splitLine) == 6:
                    if 'values' not in eachLine:
                        stockFile.append(eachLine)
        except Exception as e:
            print(str(e), 'failed to organize pulled data.')
    except Exception as e:
        print(str(e), 'failed to pull pricing data')

    try:
        date, closep, highp, lowp, openp, volume = np.loadtxt(stockFile, delimiter=',', unpack=True,
                                                              converters={0: mdates.bytespdate2num('%Y%m%d')})
        SP = len(date)
        # First subplot
        ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
        segments = segment.slidingwindowsegment(closep, fit.regression, fit.sumsquared_error, max_error)
        draw_plot(closep,plt,ax1,"Sliding window with regression")
        draw_segments(segments,'red')
        plt.ylabel('Stock Price')
        plt.title("Sliding window", color='w')

        # Second subplot
        ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=3)
        segments = segment.topdownsegment(closep, fit.regression, fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax2, "Sliding window with regression")
        draw_segments(segments,'green')
        plt.ylabel('Stock Price')
        plt.title("Top down", color='w')

        # Third subplot
        ax3 = plt.subplot2grid((3, 3), (2, 0), colspan=3)
        segments = segment.bottomupsegment(closep, fit.regression, fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax3, "Sliding window with regression")
        draw_segments(segments,'blue')
        plt.ylabel('Stock Price')
        plt.title("Bottom up", color='w')

        plt.subplots_adjust(hspace=0.3)
        plt.show()

    except e:
        print("Error")
def draw_window(my_dpi, data):
    """
    All data contanining the stock price info are retrieved from the database given the stock name
    :param my_dpi: dpi screen
    :param data: data to be plot
    :param max_error: maximum error allowed
    """

    fig = plt.figure(figsize=(1000/my_dpi, 700/my_dpi), dpi=96, facecolor='black')
    fig.suptitle("PIECEWISE SEGMENTATION REGRESSION", fontsize="15", color="white", fontweight='bold', bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})

    try:
        stockFile = []
        try:
            for eachLine in data:
                splitLine = eachLine.split(',')
                if len(splitLine) == 2:
                    if 'values' not in eachLine:
                        stockFile.append(eachLine)
        except Exception as e:
            print(str(e), 'failed to organize pulled data.')
    except Exception as e:
        print(str(e), 'failed to pull pricing data')

    try:
        date, closep_raw = np.loadtxt(stockFile, delimiter=',', unpack=True,
                                                              converters={0: mdates.bytespdate2num('%Y%m%d')})
        closep = closep_raw[::-1]
        max_closep = max(closep)

        if(max_closep > 2.0):
            max_error = max(closep)*2.7;
        else:
            max_error = max(closep)/2.5;

        print(max_error)

        # First subplot
        ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
        segments = segment.slidingwindowsegment(closep, fit.regression, fit.sumsquared_error, max_error)
        draw_plot(closep,plt,ax1,"Sliding window with regression")
        draw_segments(segments,'red')
        plt.ylabel('Stock Price')
        plt.title("SLIDING WINDOW - ERROR "+str(evaluate_global_error(closep, segments)), color='Yellow', fontweight='bold')

        # Second subplot
        ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=3)
        segments = segment.topdownsegment(closep, fit.regression, fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax2, "Sliding window with regression")
        draw_segments(segments,'green')
        plt.ylabel('Stock Price')
        plt.title("TOP DOWN - ERROR "+str(evaluate_global_error(closep, segments)), color='Yellow', fontweight='bold')

        # Third subplot
        ax3 = plt.subplot2grid((3, 3), (2, 0), colspan=3)
        segments = segment.bottomupsegment(closep, fit.regression, fit.sumsquared_error, max_error)
        draw_plot(closep, plt, ax3, "Sliding window with regression")
        draw_segments(segments,'blue')
        plt.ylabel('Stock Price')
        plt.title("BOTTOM UP - ERROR "+str(evaluate_global_error(closep, segments)), color='Yellow', fontweight='bold')

        plt.subplots_adjust(hspace=0.3)
        plt.show()

    except e:
        print("Error")