mirror of
https://github.com/Tencent/Metis.git
synced 2025-12-25 19:52:49 +00:00
commit
5bd6f8e7ef
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
|
||||
<component name="PyCharmProfessionalAdvertiser">
|
||||
<option name="shown" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,562 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="158442e4-d283-42b8-a593-a6e34f918125" name="Default Changelist" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/app/config/common.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/config/common.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/config/database.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/config/database.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/config/errorcode.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/config/errorcode.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/controller/api/views.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/controller/api/views.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/controller/manage.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/controller/manage.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/dao/time_series_detector/anomaly_op.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/dao/time_series_detector/anomaly_op.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/dao/time_series_detector/sample_op.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/dao/time_series_detector/sample_op.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/dao/time_series_detector/train_op.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/dao/time_series_detector/train_op.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/ewma_and_polynomial.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/ewma_and_polynomial.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/gbdt.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/gbdt.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/isolation_forest.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/isolation_forest.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/polynomial_interpolation.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/polynomial_interpolation.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/xgboosting.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/algorithm/xgboosting.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/anomaly_service.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/anomaly_service.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/detect_service.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/detect_service.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/feature/classification_features.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/feature/classification_features.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/feature/feature_service.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/feature/feature_service.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/feature/fitting_features.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/feature/fitting_features.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/feature/statistical_features.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/feature/statistical_features.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/sample_service.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/sample_service.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/service/time_series_detector/task_service.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/service/time_series_detector/task_service.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/utils/utils.py" beforeDir="false" afterPath="$PROJECT_DIR$/app/utils/utils.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/docker/start.sh" beforeDir="false" afterPath="$PROJECT_DIR$/docker/start.sh" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FUSProjectUsageTrigger">
|
||||
<session id="1535547038">
|
||||
<usages-collector id="statistics.lifecycle.project">
|
||||
<counts>
|
||||
<entry key="project.open.time.1" value="1" />
|
||||
<entry key="project.opened" value="1" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.extensions.open">
|
||||
<counts>
|
||||
<entry key="gbdt_default_model" value="1" />
|
||||
<entry key="py" value="61" />
|
||||
<entry key="sql" value="1" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.types.open">
|
||||
<counts>
|
||||
<entry key="PLAIN_TEXT" value="1" />
|
||||
<entry key="Python" value="61" />
|
||||
<entry key="SQL" value="1" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.extensions.edit">
|
||||
<counts>
|
||||
<entry key="py" value="9" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
<usages-collector id="statistics.file.types.edit">
|
||||
<counts>
|
||||
<entry key="Python" value="9" />
|
||||
</counts>
|
||||
</usages-collector>
|
||||
</session>
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/sample_service.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/task_service.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/utils/utils.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/config/common.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/config/database.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/config/errorcode.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/dao/time_series_detector/sample_op.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="616">
|
||||
<caret line="264" column="37" selection-start-line="264" selection-start-column="37" selection-end-line="264" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/controller/api/views.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="95">
|
||||
<caret line="20" column="13" selection-start-line="20" selection-start-column="13" selection-end-line="20" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#24#63#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/feature/fitting_features.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="228">
|
||||
<caret line="13" column="1" selection-start-line="13" selection-start-column="1" selection-end-line="13" selection-end-column="1" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/app/utils/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>18</find>
|
||||
<find>180</find>
|
||||
<find>delete</find>
|
||||
</findStrings>
|
||||
<dirStrings>
|
||||
<dir>E:\Metis\app</dir>
|
||||
<dir>E:\Metis\app\dao</dir>
|
||||
<dir>E:\Metis\app\service</dir>
|
||||
</dirStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/app/config/common.py" />
|
||||
<option value="$PROJECT_DIR$/app/config/database.py" />
|
||||
<option value="$PROJECT_DIR$/app/config/errorcode.py" />
|
||||
<option value="$PROJECT_DIR$/app/dao/time_series_detector/anomaly_op.py" />
|
||||
<option value="$PROJECT_DIR$/app/dao/time_series_detector/train_op.py" />
|
||||
<option value="$PROJECT_DIR$/app/service/time_series_detector/feature/classification_features.py" />
|
||||
<option value="$PROJECT_DIR$/app/service/time_series_detector/feature/feature_service.py" />
|
||||
<option value="$PROJECT_DIR$/app/service/time_series_detector/feature/statistical_features.py" />
|
||||
<option value="$PROJECT_DIR$/app/service/time_series_detector/anomaly_service.py" />
|
||||
<option value="$PROJECT_DIR$/app/service/time_series_detector/sample_service.py" />
|
||||
<option value="$PROJECT_DIR$/app/service/time_series_detector/task_service.py" />
|
||||
<option value="$PROJECT_DIR$/app/utils/utils.py" />
|
||||
<option value="$PROJECT_DIR$/app/dao/time_series_detector/sample_op.py" />
|
||||
<option value="$PROJECT_DIR$/app/service/time_series_detector/feature/fitting_features.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="7">
|
||||
<option name="x" value="-90" />
|
||||
<option name="y" value="119" />
|
||||
<option name="width" value="1400" />
|
||||
<option name="height" value="996" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="config" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="controller" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="controller" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="api" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="controller" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="api" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="migrations" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="dao" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="dao" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="time_series_detector" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="model" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="model" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="time_series_detector" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="service" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="service" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="time_series_detector" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="service" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="time_series_detector" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="algorithm" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="service" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="time_series_detector" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="feature" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="sql" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="sql" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="time_series_detector" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Metis" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="Metis" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="utils" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="last_opened_file_path" value="D:/ProgramData/Anaconda3/Scripts/pylint.exe" />
|
||||
<property name="settings.editor.selected.configurable" value="preferences.externalTools" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="158442e4-d283-42b8-a593-a6e34f918125" name="Default Changelist" comment="" />
|
||||
<created>1541053168778</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1541053168778</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TodoView" selected-index="2">
|
||||
<todo-panel id="selected-file">
|
||||
<is-autoscroll-to-source value="true" />
|
||||
</todo-panel>
|
||||
<todo-panel id="all">
|
||||
<are-packages-shown value="true" />
|
||||
<is-autoscroll-to-source value="true" />
|
||||
</todo-panel>
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Favorites" side_tool="true" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24973656" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Version Control" />
|
||||
<window_info anchor="bottom" id="Python Console" weight="0.32899022" />
|
||||
<window_info anchor="bottom" id="Terminal" />
|
||||
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" visible="true" weight="0.32899022" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/app/sql/time_series_detector/anomaly.sql">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="418">
|
||||
<caret line="22" column="82" selection-start-line="22" selection-start-column="82" selection-end-line="22" selection-end-column="82" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/controller/manage.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/tests/test_feature.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/tests/fixtures.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/dao/time_series_detector/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/dao/time_series_detector/anomaly_op.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/dao/time_series_detector/train_op.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/model/time_series_detector/gbdt_default_model">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/algorithm/ewma.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/algorithm/ewma_and_polynomial.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/algorithm/gbdt.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/algorithm/isolation_forest.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/algorithm/statistic.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/algorithm/xgboosting.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/algorithm/polynomial_interpolation.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/feature/classification_features.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="247">
|
||||
<caret line="14" column="35" lean-forward="true" selection-start-line="14" selection-start-column="35" selection-end-line="14" selection-end-column="35" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/feature/feature_service.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/feature/statistical_features.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/anomaly_service.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/detect_service.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/sample_service.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/task_service.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/utils/__init__.py">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/utils/utils.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/config/common.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/config/database.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/config/errorcode.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="21" selection-start-column="21" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/dao/time_series_detector/sample_op.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="616">
|
||||
<caret line="264" column="37" selection-start-line="264" selection-start-column="37" selection-end-line="264" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/controller/api/views.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="95">
|
||||
<caret line="20" column="13" selection-start-line="20" selection-start-column="13" selection-end-line="20" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#24#63#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/service/time_series_detector/feature/fitting_features.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="228">
|
||||
<caret line="13" column="1" selection-start-line="13" selection-start-column="1" selection-end-line="13" selection-end-column="1" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -13,6 +14,6 @@ INPUT_LEN_CH_MAX = 64
|
|||
INPUT_ITEM_PER_PAGE_MAX = 100
|
||||
INPUT_LIST_LEN_MAX = 5
|
||||
VALUE_LEN_MAX = 50000
|
||||
UPLOAD_PATH = '/tmp/tmpfile_%s.csv'
|
||||
UPLOAD_FILE = '/tmp/tmpfile_%s.csv'
|
||||
MARK_POSITIVE = 1
|
||||
MARK_NEGATIVE = 2
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -7,8 +8,8 @@ https://opensource.org/licenses/BSD-3-Clause
|
|||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
"""
|
||||
|
||||
db = 'metis'
|
||||
user = 'metis'
|
||||
passwd = 'metis@123'
|
||||
host = '127.0.0.1'
|
||||
port = 3306
|
||||
DB = 'metis'
|
||||
USER = 'metis'
|
||||
PASSWD = 'metis@123'
|
||||
HOST = '127.0.0.1'
|
||||
PORT = 3306
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -20,15 +21,15 @@ TRAIN_ERR = 2003
|
|||
LACK_SAMPLE = 2004
|
||||
|
||||
ERR_CODE = {
|
||||
0: "操作成功",
|
||||
1000: "抛出异常",
|
||||
1001: "数据库操作失败",
|
||||
1002: "参数检查失败",
|
||||
1003: "文件格式有误",
|
||||
1004: "非post请求",
|
||||
1005: "非get请求",
|
||||
2001: "特征计算出错",
|
||||
2002: "读取特征数据失败",
|
||||
2003: "训练出错",
|
||||
2004: "缺少正样本或负样本"
|
||||
OP_SUCCESS: "操作成功",
|
||||
THROW_EXP: "抛出异常",
|
||||
OP_DB_FAILED: "数据库操作失败",
|
||||
CHECK_PARAM_FAILED: "参数检查失败",
|
||||
FILE_FORMAT_ERR: "文件格式有误",
|
||||
NOT_POST: "非post请求",
|
||||
NOT_GET: "非get请求",
|
||||
CAL_FEATURE_ERR: "特征计算出错",
|
||||
READ_FEATURE_FAILED: "读取特征数据失败",
|
||||
TRAIN_ERR: "训练出错",
|
||||
LACK_SAMPLE: "缺少正样本或负样本"
|
||||
}
|
||||
|
|
@ -23,7 +23,7 @@ def check_post(func):
|
|||
return render_json(return_dict)
|
||||
return f
|
||||
|
||||
|
||||
|
||||
@check_post
|
||||
def search_anomaly(request):
|
||||
anomaly_service = AnomalyService()
|
||||
|
|
|
|||
|
|
@ -1,30 +1,9 @@
|
|||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
import signal
|
||||
import errno
|
||||
|
||||
|
||||
def wait_child(signum, frame):
|
||||
print('receive SIGCHLD')
|
||||
try:
|
||||
while True:
|
||||
cpid, status = os.waitpid(-1, os.WNOHANG)
|
||||
if cpid == 0:
|
||||
print('no child process was immediately available')
|
||||
break
|
||||
exitcode = status >> 8
|
||||
print('child process %s exit with exitcode %s', cpid, exitcode)
|
||||
except OSError as e:
|
||||
if e.errno == errno.ECHILD:
|
||||
print ('current process has no existing unwaited-for child processes.')
|
||||
else:
|
||||
raise
|
||||
print('handle SIGCHLD end')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
signal.signal(signal.SIGCHLD, wait_child)
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.settings")
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -19,7 +20,7 @@ from app.config.errorcode import *
|
|||
class AbnormalOperation(object):
|
||||
|
||||
def __init__(self):
|
||||
self.__conn = MySQLdb.connect(host=database.host, port=database.port, user=database.user, passwd=database.passwd, db=database.db)
|
||||
self.__conn = MySQLdb.connect(host=database.HOST, port=database.PORT, user=database.USER, passwd=database.PASSWD, db=database.DB)
|
||||
self.__cur = self.__conn.cursor()
|
||||
self.__cur.execute("SET NAMES UTF8")
|
||||
self.__sample = SampleOperation()
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -20,7 +21,7 @@ from app.config.errorcode import *
|
|||
class SampleOperation(object):
|
||||
|
||||
def __init__(self):
|
||||
self.__conn = MySQLdb.connect(host=database.host, port=database.port, user=database.user, passwd=database.passwd, db=database.db)
|
||||
self.__conn = MySQLdb.connect(host=database.HOST, port=database.PORT, user=database.USER, passwd=database.PASSWD, db=database.DB)
|
||||
self.__cur = self.__conn.cursor()
|
||||
self.__cur.execute("SET NAMES UTF8")
|
||||
|
||||
|
|
@ -179,7 +180,7 @@ class SampleOperation(object):
|
|||
])
|
||||
head = ['指标集名称', '指标集id', '指标名称', '指标id', '样本来源', '训练集_测试集', '正样本_负样本', '样本窗口', 'dataC', 'dataB', 'dataA', '数据时间戳']
|
||||
uuid_str = uuid.uuid4().hex[:8]
|
||||
download_file_path = UPLOAD_PATH % uuid_str
|
||||
download_file_path = UPLOAD_FILE % uuid_str
|
||||
with open(download_file_path, 'w') as pfile:
|
||||
pfile.write(codecs.BOM_UTF8)
|
||||
writer = csv.writer(pfile)
|
||||
|
|
@ -261,7 +262,7 @@ class SampleOperation(object):
|
|||
command = "delete from sample_dataset where id = %s "
|
||||
num = self.__cur.execute(command, id_num)
|
||||
self.__conn.commit()
|
||||
return OP_SUCCESS, {"count":num}
|
||||
return OP_SUCCESS, {"count": num}
|
||||
|
||||
def delete_sample_by_anomaly_id(self, data):
|
||||
id_num = data['id']
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -16,7 +17,7 @@ from app.config.errorcode import *
|
|||
class TrainOperation(object):
|
||||
|
||||
def __init__(self):
|
||||
self.__conn = MySQLdb.connect(host=database.host, port=database.port, user=database.user, passwd=database.passwd, db=database.db)
|
||||
self.__conn = MySQLdb.connect(host=database.HOST, port=database.PORT, user=database.USER, passwd=database.PASSWD, db=database.DB)
|
||||
self.__cur = self.__conn.cursor()
|
||||
self.__cur.execute("SET NAMES UTF8")
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ Unless required by applicable law or agreed to in writing, software distributed
|
|||
|
||||
from app.service.time_series_detector.algorithm import ewma
|
||||
from app.service.time_series_detector.algorithm import polynomial_interpolation
|
||||
from app.config.common import *
|
||||
|
||||
|
||||
class EwmaAndPolynomialInterpolation(object):
|
||||
|
|
@ -26,7 +27,7 @@ class EwmaAndPolynomialInterpolation(object):
|
|||
self.degree = degree
|
||||
self.threshold = threshold
|
||||
|
||||
def predict(self, X, window=180):
|
||||
def predict(self, X, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Predict if a particular sample is an outlier or not.
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ from sklearn.externals import joblib
|
|||
from app.service.time_series_detector.feature import feature_service
|
||||
from app.utils.utils import *
|
||||
from app.config.errorcode import *
|
||||
from app.config.common import *
|
||||
|
||||
|
||||
MODEL_PATH = os.path.join(os.path.dirname(__file__), '../../../model/time_series_detector/')
|
||||
DEFAULT_MODEL = MODEL_PATH + "gbdt_default_model"
|
||||
|
|
@ -43,7 +45,7 @@ class Gbdt(object):
|
|||
self.max_depth = max_depth
|
||||
self.learning_rate = learning_rate
|
||||
|
||||
def __calculate_features(self, data, window=180):
|
||||
def __calculate_features(self, data, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Caculate time features.
|
||||
|
||||
|
|
@ -59,7 +61,7 @@ class Gbdt(object):
|
|||
features.append(temp)
|
||||
return features
|
||||
|
||||
def gbdt_train(self, data, task_id, window=180):
|
||||
def gbdt_train(self, data, task_id, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Train a gbdt model.
|
||||
|
||||
|
|
@ -86,7 +88,7 @@ class Gbdt(object):
|
|||
return TRAIN_ERR, str(ex)
|
||||
return OP_SUCCESS, ""
|
||||
|
||||
def predict(self, X, window=180, model_name=DEFAULT_MODEL):
|
||||
def predict(self, X, window=DEFAULT_WINDOW, model_name=DEFAULT_MODEL):
|
||||
"""
|
||||
Predict if a particular sample is an outlier or not.
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ Unless required by applicable law or agreed to in writing, software distributed
|
|||
"""
|
||||
|
||||
from sklearn.ensemble import IsolationForest
|
||||
from app.config.common import *
|
||||
|
||||
|
||||
class IForest(object):
|
||||
|
|
@ -48,7 +49,7 @@ class IForest(object):
|
|||
self.random_state = random_state
|
||||
self.verbose = verbose
|
||||
|
||||
def predict(self, X, window=180):
|
||||
def predict(self, X, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Predict if a particular sample is an outlier or not.
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import numpy as np
|
|||
from sklearn.linear_model import Ridge
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.pipeline import make_pipeline
|
||||
from app.config.common import *
|
||||
|
||||
|
||||
class PolynomialInterpolation(object):
|
||||
|
|
@ -30,7 +31,7 @@ class PolynomialInterpolation(object):
|
|||
self.degree = degree
|
||||
self.threshold = threshold
|
||||
|
||||
def predict(self, X, window=180):
|
||||
def predict(self, X, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Predict if a particular sample is an outlier or not.
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import xgboost as xgb
|
|||
from app.service.time_series_detector.feature import feature_service
|
||||
from app.utils.utils import *
|
||||
from app.config.errorcode import *
|
||||
from app.config.common import *
|
||||
MODEL_PATH = os.path.join(os.path.dirname(__file__), '../../../model/time_series_detector/')
|
||||
DEFAULT_MODEL = MODEL_PATH + "xgb_default_model"
|
||||
|
||||
|
|
@ -87,7 +88,7 @@ class XGBoosting(object):
|
|||
times = times + 1
|
||||
return OP_SUCCESS, ""
|
||||
|
||||
def __calculate_features(self, data, feature_file_name, window=180):
|
||||
def __calculate_features(self, data, feature_file_name, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Caculate time features and save as libsvm format.
|
||||
|
||||
|
|
@ -145,7 +146,7 @@ class XGBoosting(object):
|
|||
return TRAIN_ERR, str(ex)
|
||||
return OP_SUCCESS, ""
|
||||
|
||||
def predict(self, X, window=180, model_name=DEFAULT_MODEL):
|
||||
def predict(self, X, window=DEFAULT_WINDOW, model_name=DEFAULT_MODEL):
|
||||
"""
|
||||
:param X: the time series to detect of
|
||||
:type X: pandas.Series
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ from app.dao.time_series_detector import train_op
|
|||
from app.utils.utils import *
|
||||
from app.service.time_series_detector.algorithm import isolation_forest, ewma, polynomial_interpolation, statistic, xgboosting
|
||||
from app.config.errorcode import *
|
||||
from app.config.common import *
|
||||
MODEL_PATH = os.path.join(os.path.dirname(__file__), '../../model/time_series_detector/')
|
||||
|
||||
|
||||
|
|
@ -139,7 +140,7 @@ class DetectService(object):
|
|||
if "window" in data:
|
||||
window = data["window"]
|
||||
else:
|
||||
window = 180
|
||||
window = DEFAULT_WINDOW
|
||||
if len(data['dataC'].split(',')) != (2 * window + 1):
|
||||
return CHECK_PARAM_FAILED, "dataC is not long enough"
|
||||
if len(data['dataB'].split(',')) != (2 * window + 1):
|
||||
|
|
@ -166,7 +167,7 @@ class DetectService(object):
|
|||
if "window" in data:
|
||||
window = data["window"]
|
||||
else:
|
||||
window = 180
|
||||
window = DEFAULT_WINDOW
|
||||
statistic_result = self.statistic_obj.predict(time_series)
|
||||
ewma_result = self.ewma_obj.predict(time_series)
|
||||
polynomial_result = self.polynomial_obj.predict(time_series, window)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -9,8 +9,9 @@ Unless required by applicable law or agreed to in writing, software distributed
|
|||
"""
|
||||
|
||||
import numpy as np
|
||||
from app.config.common import *
|
||||
|
||||
|
||||
`
|
||||
def time_series_moving_average(x):
|
||||
"""
|
||||
Returns the difference between the last element of x and the smoothed value after Moving Average Algorithm
|
||||
|
|
@ -25,7 +26,7 @@ def time_series_moving_average(x):
|
|||
:return type: list with float
|
||||
"""
|
||||
temp_list = []
|
||||
for w in range(1, 50, 5):
|
||||
for w in range(1, min(50, DEFAULT_WINDOW), 5):
|
||||
temp = np.mean(x[-w:])
|
||||
temp_list.append(temp)
|
||||
return list(np.array(temp_list) - x[-1])
|
||||
|
|
@ -45,7 +46,7 @@ def time_series_weighted_moving_average(x):
|
|||
:return type: list with float
|
||||
"""
|
||||
temp_list = []
|
||||
for w in range(1, 50, 5):
|
||||
for w in range(1, min(50, DEFAULT_WINDOW), 5):
|
||||
w = min(len(x), w) # avoid the case len(value_list) < w
|
||||
coefficient = np.array(range(1, w + 1))
|
||||
temp_list.append((np.dot(coefficient, x[-w:])) / (w * (w + 1) / 2))
|
||||
|
|
@ -167,7 +168,7 @@ def time_series_periodic_features(data_c_left, data_c_right, data_b_left, data_b
|
|||
Others are similar.
|
||||
'''
|
||||
|
||||
for w in range(1, 180, 30):
|
||||
for w in range(1, DEFAULT_WINDOW, DEFAULT_WINDOW / 6):
|
||||
periodic_features.append(min(max(data_c_left[-w:]) - data_a[-1], 0))
|
||||
periodic_features.append(min(max(data_c_right[:w]) - data_a[-1], 0))
|
||||
periodic_features.append(min(max(data_b_left[-w:]) - data_a[-1], 0))
|
||||
|
|
@ -181,7 +182,7 @@ def time_series_periodic_features(data_c_left, data_c_right, data_b_left, data_b
|
|||
Add the difference of mean values between two subsequences
|
||||
'''
|
||||
|
||||
for w in range(1, 180, 20):
|
||||
for w in range(1, DEFAULT_WINDOW, DEFAULT_WINDOW / 9):
|
||||
temp_value = np.mean(data_c_left[-w:]) - np.mean(data_a[-w:])
|
||||
periodic_features.append(abs(temp_value))
|
||||
if temp_value < 0:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -22,7 +22,7 @@ class SampleService(object):
|
|||
def __init__(self):
|
||||
self.__sample = SampleOperation()
|
||||
uuid_str = uuid.uuid4().hex[:8]
|
||||
self.__upload_file_path = UPLOAD_PATH % uuid_str
|
||||
self.__upload_file_path = UPLOAD_FILE % uuid_str
|
||||
|
||||
@exce_service
|
||||
def import_sample(self, data):
|
||||
|
|
@ -82,7 +82,7 @@ class SampleService(object):
|
|||
return self.__sample.query_sample(json.loads(body))
|
||||
|
||||
def sample_download(self, body):
|
||||
ret_code = 1000
|
||||
ret_code = THROW_EXP
|
||||
try:
|
||||
if len(body) > VALUE_LEN_MAX:
|
||||
return ""
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/python
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
"""
|
||||
Tencent is pleased to support the open source community by making Metis available.
|
||||
|
|
@ -10,13 +10,12 @@ Unless required by applicable law or agreed to in writing, software distributed
|
|||
|
||||
import numpy as np
|
||||
import traceback
|
||||
import json
|
||||
from functools import wraps
|
||||
from app.config.errorcode import *
|
||||
from app.config.common import *
|
||||
|
||||
|
||||
def is_standard_time_series(time_series, window=180):
|
||||
def is_standard_time_series(time_series, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Check the length of time_series. If window = 180, then the length of time_series should be 903.
|
||||
The mean value of last window should be larger than 0.
|
||||
|
|
@ -30,7 +29,7 @@ def is_standard_time_series(time_series, window=180):
|
|||
return bool(len(time_series) == 5 * window + 3 and np.mean(time_series[(4 * window + 2):]) > 0)
|
||||
|
||||
|
||||
def split_time_series(time_series, window=180):
|
||||
def split_time_series(time_series, window=DEFAULT_WINDOW):
|
||||
"""
|
||||
Spilt the time_series into five parts. Each has a length of window + 1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
#!/bin/bash
|
||||
if [ $# == 0 ]
|
||||
then
|
||||
echo "Need at least 1 argument!"
|
||||
exit
|
||||
echo "Usage:$0 <IP Address>"
|
||||
exit 1
|
||||
fi
|
||||
ip=$1
|
||||
|
||||
|
|
@ -9,7 +10,7 @@ docker rm -f metis-db
|
|||
docker rm -f metis-svr
|
||||
docker rm -f metis-web
|
||||
|
||||
docker run --net=host --name=metis-db -i -t -d -p 3306:3306 -v /data/metis/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=metis@123 zhiyunmetis/metis-db
|
||||
docker run --net=host --name=metis-db -d -p 3306:3306 -v /data/metis/mysql/:/var/lib/mysql:Z -e MYSQL_ROOT_PASSWORD=metis@123 zhiyunmetis/metis-db
|
||||
sleep 6
|
||||
docker run --net=host --name=metis-svr -i -t -d -p 8080:8080 -v /data/metis/module/:/metis/app/model/time_series_detector zhiyunmetis/metis-svr /bin/sh /metis/init.sh
|
||||
docker run --net=host --name=metis-web -i -t -d -p 80:80 zhiyunmetis/metis-web /bin/sh /metis/init.sh ${ip}
|
||||
docker run --net=host --name=metis-svr -d -p 8080:8080 -v /data/metis/module/:/metis/app/model/time_series_detector:Z zhiyunmetis/metis-svr /bin/sh /metis/init.sh
|
||||
docker run --net=host --name=metis-web -d -p 80:80 zhiyunmetis/metis-web /bin/sh /metis/init.sh ${ip}
|
||||
Loading…
Reference in New Issue