def main():

    yr = 2015
    train_years = range(1995, 2015)
    clf, mean_norm, stdev_norm, sind, tind, train_labels, train_features = cpt.fit_model(train_years, False)
    train_measured = train_labels
    train_predicted = clf.predict(train_features)
    bfit = cpt.calc_bias_function(train_measured, train_predicted)
    
    # Predict crab population for left out year
    sdata, hdata, wdata, seddata, savdata, ldata = cpt.get_data()
    features, featureNames = cpt.get_features(-1, sdata, hdata, wdata, seddata, savdata, ldata, [yr])
    features = features[:, sind]
    featureNames = featureNames[sind]
    features = (features - mean_norm) / stdev_norm
    features = features[:, tind]
    featureNames = featureNames[tind]

    # Predict values for next year from that data
    predicted_t_per_area_corr = clf.predict(features)

    # Save individual results
    predicted = predicted_t_per_area_corr
    predicted = cpt.apply_bias_correction(predicted, bfit)


    # Calculate total number of crabs in the bay
    area_bay = 9812.0 # per square kilometer
    area_bay = area_bay*((1e3**2)) # per square meter
    total_crabs = np.mean(predicted)*area_bay

    fn = 'pickle-predictCrabs2015.pickle'
    with open(fn, 'wb') as f:
        pickle.dump([predicted, total_crabs, clf, features, featureNames, sind, tind, mean_norm, stdev_norm, bfit], f)
def main():

    yr = 2016

    # Get model that you trained for 2015
    fn = 'pickle-predictCrabs2015.pickle'
    with open(fn, 'rb') as f:
        predicted, total_crabs, clf, features, featureNames, sind, tind, mean_norm, stdev_norm, bfit = pickle.load(f)

    # Get features
    sdata, hdata, wdata, seddata, savdata, ldata = cpt.get_data()
    features, featureNames = cpt.get_features(-1, sdata, hdata, wdata, seddata, savdata, ldata, [2016])
    features = features[:, sind]
    featureNames = featureNames[sind]
    features = (features - mean_norm) / stdev_norm
    features = features[:, tind]
    featureNames = featureNames[tind]

    # Predict values for next year from that data
    predicted_t_per_area_corr = clf.predict(features)

    # Save individual results
    predicted = predicted_t_per_area_corr
    predicted = cpt.apply_bias_correction(predicted, bfit)

    # Calculate total number of crabs in the bay
    area_bay = 9812.0 # per square kilometer
    area_bay = area_bay*((1e3**2)) # per square meter
    total_crabs = np.mean(predicted)*area_bay

    fn = 'pickle-predictCrabs2016.pickle'
    with open(fn, 'wb') as f:
        pickle.dump([predicted, total_crabs, features, featureNames], f)
Esempio n. 3
0
def main():

    #
    # Get total number of crabs per year in bay from Dredge survey
    #
    db = MySQLdb.connect(host = "localhost", user="******", passwd="crabby", db="crabs")
    ddata = pd.read_sql('SELECT Year,Total_Crabs FROM DREDGE;', con=db)
    db.close()
    ddata['Predict'] = -1


    for yr in range(1995, 2015):
        train_years = range(1991, 2015)
        train_years = [yy for yy in train_years if yy < yr]
        #train_years = range(1995, 2015)
        #train_years.remove(yr)
        clf, mean_norm, stdev_norm, sind, tind, train_labels, train_features = cpt.fit_model(train_years, False)
        # Get bias correction
        train_measured = train_labels
        train_predicted = clf.predict(train_features)
        bfit = cpt.calc_bias_function(train_measured, train_predicted)
        
        # Predict crab population for left out year
        sdata, hdata, wdata, seddata, savdata, ldata = cpt.get_data()
    
        # Get features for this year
        labels, label_data = cpt.get_labels(sdata, [yr])
        features, featureNames = cpt.get_features(label_data, sdata, hdata, wdata, seddata, savdata, ldata, [yr])
        features = features[:, sind]
        featureNames = featureNames[sind]
        features = (features - mean_norm) / stdev_norm
        features = features[:, tind]
        featureNames = featureNames[tind]

        # Predict values for next year from that data
        predicted_t_per_area_corr = clf.predict(features)

        # Save individual results
        measured = labels
        predicted = predicted_t_per_area_corr
        predicted = cpt.apply_bias_correction(predicted, bfit)
        

        # Calculate total number of crabs in the bay
        area_bay = 9812.0 # per square kilometer
        area_bay = area_bay*((1e3**2)) # per square meter
        total_crabs = np.mean(predicted)*area_bay
        ddata.loc[ddata.Year == yr, 'Predict'] = total_crabs
        print(str(yr)+' '+str(ddata[ddata.Year == yr].Total_Crabs)+' '+str(total_crabs))

        fn = 'pickle-predictCrabs_'+str(yr)+'.pickle'
        with open(fn, 'wb') as f:
            pickle.dump([label_data, measured, predicted, clf, features, featureNames], f)


    fn = 'pickle-predictCrabs.pickle'
    with open(fn, 'wb') as f:
        pickle.dump([ddata], f)