Как реализовать PEWMA в Python? - PullRequest
0 голосов
/ 15 апреля 2019

Я новичок в программировании и Python, но я медленно учусь.Сейчас я немного разбираюсь с набором температурных данных и пытаюсь понять основы машинного обучения.Сначала это было довольно просто, когда делали линейную регрессию или что-то вроде классификатора соседей.Как только я начал изучать PEWMA, вероятностное экспоненциально-взвешенное скользящее среднее, я чувствую себя застрявшим.

Мне кажется, что основной принцип того, чего я пытаюсь достичь, это:

* Have a defined function for alpha calculation
* Declare variables 
* Read in dataset (this is done using pandas and I read the data from an excel file)

Поскольку у меня есть температуры из нескольких разных комнат, я разделил набор данных,1 числовой массив (X), содержащий 6 столбцов данных и 1 числовой массив (y), содержащий 1 столбец данных.у меня есть столбец, который я хочу проверить позже.При работе с другими моделями это было довольно просто и в форме:

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size=0.2, shuffle=False)

После разделения данных я просто:

numberOfNeighbours = 11
model = KNeighborsClassifier(numberOfNeighbours)
model.fit(x_train, encoded_ytrain)

Используя модель.score (y_test)Я мог легко получить оценку, которая показала эффективность модели.То же самое касается линейной регрессии, но не PEWMA.

Я попробовал на практике функцию pandas ewm, которую я вызвал, используя df.ewm(com=0.8).mean(), но это не совсем то, чего я хотел достичь.Я хочу использовать данные в надежде на то, что они узнают и реагируют на температуру и обнаруживают аномалии.Обучение и тестирование модели - это 4-й шаг, который я хочу написать.

Чтение из файла excel:

fullDataTemp = pd.read_excel('tempData.xlsx')
fullDataTemp = fullDataTemp[["TempLR","TempK", "TempNW", "TempSW", "TempW", "TempTV", "TempO"]]

# data_cols in lambda function
predictThisTemp = "TempK"
print(predictThisTemp + " Chosen for prediction")

X = np.array(fullDataTemp.drop([predictThisTemp], 1))
y = np.array(fullDataTemp[predictThisTemp])

Моя функция вычисления альфа:

def calc_alpha(newPewma, t, T, col, beta, alpha_calc):
    if t < T:
        alpha = 1-1.0/t
        print("EWMA calc in progress (initialization of MA) - " + col)
    else:
        alpha = (1 - beta*newPewma[col])*alpha_calc
        print("EWMA calc in progress - " + col)
    return alpha

Эти две строки предназначены для расчета PEWMA с использованием динамической альфа:

alpha =calc_alpha(y, t, T, predictThisTemp, beta, alpha_0
newPewma = beta*newPewma + (1-beta)*alpha_0

Это то, где я запутался, поскольку всю документацию, которую я прочитал, и даже используя функцию ewm панд, выНикогда не указывайте, какие данные предназначены для обучения, а какие для тестирования.Можно ли даже использовать все столбцы данных для обучения модели PEWMA или я ошибаюсь?

...