def feature_extract(dt):
    
    import tsfresh.feature_extraction.feature_calculators as fc
    
    ft = {
        'abs_energy': fc.abs_energy(dt),
        'sum_values': fc.sum_values(dt),
        'mean': fc.mean(dt),
        'maximum': fc.maximum(dt),
        'minimum': fc.minimum(dt),
        'median': fc.median(dt),
        'quantile_0.1': fc.quantile(dt, 0.1),
        'quantile_0.2': fc.quantile(dt, 0.2),
        'quantile_0.3': fc.quantile(dt, 0.3),
        'quantile_0.4': fc.quantile(dt, 0.4),
        'quantile_0.5': fc.quantile(dt, 0.5),
        'quantile_0.6': fc.quantile(dt, 0.6),
        'quantile_0.7': fc.quantile(dt, 0.7),
        'quantile_0.8': fc.quantile(dt, 0.8),
        'quantile_0.9': fc.quantile(dt, 0.9),
        #
        # TODO:
        # Below functions dont works well -> need to be checked!!
        #
        #'fft_coefficient__coeff_0__attr_real': fc.fft_coefficient(dt {"coeff": 0, "attr": "real"}),
        #'fft_coefficient__coeff_0__attr_imag': fc.fft_coefficient(dt {"coeff": 0, "attr": "imag"}),
        #'fft_coefficient__coeff_0__attr_abs': fc.fft_coefficient(dt {"coeff": 0, "attr": "abs"}),
        #'fft_coefficient__coeff_0__attr_angle': fc.fft_coefficient(dt {"coeff": 0, "attr": "angle"}),
        #
        #=> Mr. Huy just fix this issue with above function fft_ft !!
    }
    
    ft.update(fft_ft(dt))
    
    return ft
def TS_feature3(signal):
    max_ts = ts.maximum(signal)
    mean_rs = ts.mean(signal)
    mean_abs_change = ts.mean_abs_change(signal)
    mean_change = ts.mean_change(signal)
    median_ts = ts.median(signal)
    minimum_ts = ts.minimum(signal)
    return max_ts, mean_rs, mean_abs_change, mean_change, median_ts, minimum_ts
Beispiel #3
0
def time_series_median(x):
    """
    :param x: the time series to calculate the feature of
    :type x: pandas.Series
    :return: the value of this feature
    :return type: float
    """
    return ts_feature_calculators.median(x)
Beispiel #4
0
def scalar_feature_extraction(column):
    retval = np.zeros([1, 10], dtype=float)
    retval[0][0] = tffe.count_above_mean(column.values)
    retval[0][1] = tffe.mean(column.values)
    retval[0][2] = tffe.maximum(column.values)
    retval[0][3] = tffe.median(column.values)
    retval[0][4] = tffe.minimum(column.values)
    retval[0][5] = tffe.sample_entropy(column.values)
    if (isNaN(retval[0][5])):
        retval[0][5] = 0
    retval[0][6] = tffe.skewness(column.values)
    retval[0][7] = tffe.variance(column.values)
    retval[0][8] = tffe.longest_strike_above_mean(column.values)
    retval[0][9] = tffe.longest_strike_below_mean(column.values)
    return retval
Beispiel #5
0
def extract_features(data):
    day = 24 * 60

    return list(
        numpy.nan_to_num(
            numpy.array([
                feature.symmetry_looking(data, [{
                    'r': 0.3
                }])[0][1],
                feature.variance_larger_than_standard_deviation(data).bool(),
                feature.ratio_beyond_r_sigma(data, 2),
                feature.has_duplicate_max(data),
                feature.has_duplicate_min(data),
                feature.has_duplicate(data),
                feature.agg_autocorrelation(numpy.array(data.value),
                                            [{
                                                'f_agg': 'mean',
                                                'maxlag': day
                                            }])[0][1],
                feature.partial_autocorrelation(data, [{
                    'lag': day
                }])[0][1],
                feature.abs_energy(numpy.array(data.value)),
                feature.mean_change(data),
                feature.mean_second_derivative_central(data),
                feature.median(data),
                float(feature.mean(data)),
                float(feature.standard_deviation(data)),
                float(feature.longest_strike_below_mean(data)),
                float(feature.longest_strike_above_mean(data)),
                int(feature.number_peaks(data, 10)),
                feature.linear_trend(numpy.array(data.value), [{
                    'attr': 'rvalue'
                }])[0][1],
                feature.c3(data, day),
                float(feature.maximum(data)),
                float(feature.minimum(data))
            ])))
Beispiel #6
0
def MedianDeviation(fragment):
    return fc.median([val-fc.median(fragment) for val in fragment])
Beispiel #7
0
def MedianDifference(fragment):
    return fc.median(np.diff(fragment))
def main():
    dirname = os.path.realpath('.')
    excelF = dirname + '\\Summary.xlsx'
    myworkbook = openpyxl.load_workbook(excelF)
    worksheet = myworkbook['SummaryPatients']

    file = 1
    for filename in glob.glob(dirname + "\*.txt"):

        data = open(filename, 'r')

        totalData = {}

        time = []
        totalForceL = []
        totalForceR = []
        id = []
        for line in data:
            tempForce = line.split()
            id.append(1)
            time.append(float(tempForce[0]))
            totalForceL.append(float(tempForce[17]))
            totalForceR.append(float(tempForce[18]))

        totalData["id"] = id
        totalData["time"] = time
        totalData["totalForceL"] = totalForceL
        totalData["totalForceR"] = totalForceR

        dataPandas = pd.DataFrame.from_dict(totalData)

        extracted_features = {}
        #extract_featuresL = extract_features(dataPandas, column_id="id", column_kind=None, column_value=None)

        worksheet['A' + str(file + 1)] = file
        if 'Pt' in filename:
            worksheet['B' + str(file + 1)] = 1
        else:
            worksheet['B' + str(file + 1)] = 0

        worksheet['C' + str(file + 1)] = tf.abs_energy(
            totalData["totalForceL"])
        worksheet['D' + str(file + 1)] = tf.abs_energy(
            totalData["totalForceR"])
        worksheet['E' + str(file + 1)] = tf.kurtosis(totalData["totalForceL"])
        worksheet['F' + str(file + 1)] = tf.kurtosis(totalData["totalForceR"])
        worksheet['G' + str(file + 1)] = tf.skewness(totalData["totalForceL"])
        worksheet['H' + str(file + 1)] = tf.skewness(totalData["totalForceR"])
        worksheet['I' + str(file + 1)] = tf.median(totalData["totalForceL"])
        worksheet['J' + str(file + 1)] = tf.median(totalData["totalForceR"])
        worksheet['K' + str(file + 1)] = tf.mean(totalData["totalForceL"])
        worksheet['L' + str(file + 1)] = tf.mean(totalData["totalForceR"])
        worksheet['M' + str(file + 1)] = tf.variance(totalData["totalForceL"])
        worksheet['N' + str(file + 1)] = tf.variance(totalData["totalForceR"])

        temp = tf.fft_aggregated(totalData["totalForceL"],
                                 [{
                                     "aggtype": "centroid"
                                 }, {
                                     "aggtype": "variance"
                                 }, {
                                     "aggtype": "skew"
                                 }, {
                                     "aggtype": "kurtosis"
                                 }])
        int = 0
        for list in temp:
            if int == 0:
                worksheet['O' + str(file + 1)] = list[1]
            if int == 1:
                worksheet['P' + str(file + 1)] = list[1]
            if int == 2:
                worksheet['Q' + str(file + 1)] = list[1]
            if int == 3:
                worksheet['R' + str(file + 1)] = list[1]
            int += 1

        temp2 = tf.fft_aggregated(totalData["totalForceR"],
                                  [{
                                      "aggtype": "centroid"
                                  }, {
                                      "aggtype": "variance"
                                  }, {
                                      "aggtype": "skew"
                                  }, {
                                      "aggtype": "kurtosis"
                                  }])
        int = 0
        for list in temp2:
            if int == 0:
                worksheet['S' + str(file + 1)] = list[1]
            if int == 1:
                worksheet['T' + str(file + 1)] = list[1]
            if int == 2:
                worksheet['U' + str(file + 1)] = list[1]
            if int == 3:
                worksheet['V' + str(file + 1)] = list[1]
            int += 1

        file += 1

    myworkbook.save(excelF)
def get_median(arr):
    res = np.array([median(arr)])
    res = np.nan_to_num(res)
    return res
Beispiel #10
0
def main():
    dirname = os.path.realpath('.')
    filename = dirname + '\\GaPt07_01.txt'

    data = open(filename, 'r')

    totalData = {}

    time = []
    totalForceL = []
    totalForceR = []
    id = []
    for line in data:
        tempForce = line.split()
        id.append(1)
        time.append(float(tempForce[0]))
        totalForceL.append(float(tempForce[17]))
        totalForceR.append(float(tempForce[18]))

    totalData["id"] = id
    totalData["time"] = time
    totalData["totalForceL"] = totalForceL
    totalData["totalForceR"] = totalForceR

    dataPandas = pd.DataFrame.from_dict(totalData)

    extracted_features = {}

    #extract_featuresL = extract_features(dataPandas, column_id="id", column_kind=None, column_value=None)
    extracted_features["absEnergyL"] = tf.abs_energy(totalData["totalForceL"])
    extracted_features["absEnergyR"] = tf.abs_energy(totalData["totalForceR"])
    extracted_features["kurtosisL"] = tf.kurtosis(totalData["totalForceL"])
    extracted_features["kurtosisR"] = tf.kurtosis(totalData["totalForceR"])
    extracted_features["skewnessL"] = tf.skewness(totalData["totalForceL"])
    extracted_features["skewnessR"] = tf.skewness(totalData["totalForceR"])
    extracted_features["medianL"] = tf.median(totalData["totalForceL"])
    extracted_features["medianR"] = tf.median(totalData["totalForceR"])
    extracted_features["meanL"] = tf.mean(totalData["totalForceL"])
    extracted_features["meanR"] = tf.mean(totalData["totalForceR"])
    extracted_features["varianceL"] = tf.variance(totalData["totalForceL"])
    extracted_features["varianceR"] = tf.variance(totalData["totalForceR"])

    temp = tf.fft_aggregated(totalData["totalForceL"], [{
        "aggtype": "centroid"
    }, {
        "aggtype": "variance"
    }, {
        "aggtype": "skew"
    }, {
        "aggtype": "kurtosis"
    }])
    int = 0
    for list in temp:
        if int == 0:
            extracted_features["fftCentroidL"] = list
        if int == 1:
            extracted_features["fftVarianceL"] = list
        if int == 2:
            extracted_features["fftSkewL"] = list
        if int == 3:
            extracted_features["fftKurtosisL"] = list
        int += 1

    temp2 = tf.fft_aggregated(totalData["totalForceR"], [{
        "aggtype": "centroid"
    }, {
        "aggtype": "variance"
    }, {
        "aggtype": "skew"
    }, {
        "aggtype": "kurtosis"
    }])
    int = 0
    for list in temp2:
        if int == 0:
            extracted_features["fftCentroidR"] = list
        if int == 1:
            extracted_features["fftVarianceR"] = list
        if int == 2:
            extracted_features["fftSkewR"] = list
        if int == 3:
            extracted_features["fftKurtosisR"] = list
        int += 1