Мой главный вопрос - как сделать данные формы подходящими для данных разных временных рядов на модели.Мой текущий код выглядит примерно так:
def diff_stats_mod (X_train, X_test, y_train, y_test):
################init########################
score_dict = {}
n=0
################Create a list of models to evaluate################
models, names = list(), list()
models.append(LogisticRegression())
names.append('LR')
models.append(DecisionTreeClassifier())
names.append('DTC')
models.append(SVC())
names.append('SVM')
models.append(RandomForestClassifier())
names.append('RF')
models.append(GradientBoostingClassifier())
names.append('GBM')
################evaluate models################
for i in range(len(models)):
model = models[i]
model.fit(X_train, y_train)
pred = model.predict(X_test)
not_include = 0
###############Ensure that the prediction is not all positive or all neg###############
while len(set(pred)) == 1:
model = models[i]
model.fit(X_train, y_train)
pred = model.predict(X_test)
if n == 10:
not_include = 1
break
n+=1
###############Exclude all models whos predictions are off the same class only###############
if not_include != 1:
confu_mat = confusion_matrix(y_test, pred)
fb_score = fbeta_score(y_test, pred, 0.9) * 100
score_dict['{}'.format(names[i])] = fb_score
score_dict['{} confusion matrix'.format(names[i])] = confu_mat
else:
fb_score = NaN
score_dict['{}'.format(names[i])] = fb_score
################try a range of k values################
for k in range(1, 11):
################Load and evaluate knn models################
not_include = 0
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
pred = model.predict(X_test)
###############Ensure that the prediction is not all positive or all neg###############
while len(set(pred)) == 1:
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
pred = model.predict(X_test)
if n == 10:
not_include = 1
break
n += 1
###############Exclude all models whos predictions are off the same class only###############
if not_include != 1:
confu_mat = confusion_matrix(y_test, pred)
fb_score = fbeta_score(y_test, pred, 0.9) * 100
score_dict['KNN{}'.format(k)] = fb_score
score_dict['KNN{} confusion matrix'.format(k)] = confu_mat
else:
fb_score = NaN
score_dict['KNN{}'.format(k)] = fb_score
return score_dict
По сути, эта функция возвращает оценку fbeta каждой модели в наборе тестов.Он будет повторно обучать модели, которые дают прогноз для одного и того же класса (до десяти раз), и если после десяти раз эта конкретная модель по-прежнему выводит все прогнозы как один и тот же класс, она исключает его.
Это фрагмент моих данных:
time_stamp pxID act hr
2015-06-06 17:00:00 7983 8.466666666666667 97.46555633544922
2015-06-06 17:30:00 7983 10.413333333333332 99.16444473266601
2015-06-06 18:00:00 7983 5.400000000000001 94.62666702270508
2015-06-06 18:30:00 7983 14.759999999999998 95.76777776082356
2015-06-06 19:00:00 7983 17.026666666666667 100.43111089070638
2015-08-04 10:30:00 8005 4.774020720186061 18.555715289243377
2015-08-04 11:00:00 8005 7.1056325549244574 20.01443100917877
2015-08-04 11:30:00 8005 9.088101464843694 24.019171214407546
2015-08-04 12:00:00 8005 4.32230745513258 20.9444548661983
2015-08-04 12:30:00 8005 4.464612178539353 18.433279992371574
2015-08-16 19:00:00 8026 1.4452551387583383 9.943809217794078
2015-08-16 19:30:00 8026 2.7265866427381216 13.206866297538518
2015-08-16 20:00:00 8026 2.2795014957992974 9.11883132666883
2015-08-16 20:30:00 8026 1.536946186246722 10.04255596582319
2015-08-16 21:00:00 8026 2.0673098515634667 9.219173212211949
В основном, существует множество идентификаторов и замечаний.Когда я пытался передать эти данные в модели, произошла ошибка, связанная с измерением данных.Я знаю, что такие модели, как логистическая регрессия, могут принимать многомерные входные данные, но я не уверен, как отформатировать входные данные для этого, и я не уверен, какие аргументы мне нужно включить в LogisticRegression и другие модели, чтобы он мог обрабатывать многомерные данные,Для этой проблемы классификации я хотел бы использовать данные HR и Act.
Я не понимаю, как решить эту проблему, поскольку я привык работать с данными, где каждая строка отражает одно наблюдение.Однако эти данные показывают, что несколько строк отражают одно наблюдение.
Мой главный вопрос здесь: Как мне отформатировать мои данные, которые будут использоваться в качестве входных данных для моделей SKlearn?