1
0
mirror of https://github.com/newnius/YAO-optimizer.git synced 2025-06-06 06:41:55 +00:00

robust, allow unseen features & labels

This commit is contained in:
Newnius 2020-07-10 15:21:27 +08:00
parent a178107abd
commit b16c14e08d
2 changed files with 45 additions and 31 deletions

View File

@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="0aedafd8-e57e-462a-beda-65af0b91f3df" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/serve.py" beforeDir="false" afterPath="$PROJECT_DIR$/serve.py" afterDir="false" />
</list>
<list default="true" id="0aedafd8-e57e-462a-beda-65af0b91f3df" name="Default Changelist" comment="" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
@ -27,7 +24,7 @@
<counts>
<entry key="Dockerfile" value="3" />
<entry key="csv" value="8" />
<entry key="gitignore" value="1" />
<entry key="gitignore" value="2" />
<entry key="iml" value="1" />
<entry key="md" value="3" />
<entry key="png" value="7" />
@ -43,7 +40,7 @@
<entry key="IDEA_MODULE" value="1" />
<entry key="Image" value="7" />
<entry key="Markdown" value="3" />
<entry key="PLAIN_TEXT" value="12" />
<entry key="PLAIN_TEXT" value="13" />
<entry key="Python" value="14" />
</counts>
</usages-collector>
@ -71,11 +68,11 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/serve.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-121">
<caret line="79" lean-forward="true" selection-start-line="79" selection-end-line="79" />
<state relative-caret-position="60">
<caret line="101" column="34" selection-start-line="101" selection-start-column="34" selection-end-line="101" selection-end-column="34" />
<folding>
<element signature="e#18#46#0" expanded="true" />
</folding>
@ -83,6 +80,15 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" selection-start-line="2" selection-end-line="2" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/compare.sh">
<provider selected="true" editor-type-id="text-editor">
@ -206,7 +212,7 @@
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1594305792246" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1594314717327" />
<property name="go.gopath.indexing.explicitly.defined" value="true" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
@ -251,12 +257,12 @@
<workItem from="1588319878551" duration="41219000" />
<workItem from="1588426002721" duration="336000" />
<workItem from="1588427782140" duration="326000" />
<workItem from="1592809729651" duration="32176000" />
<workItem from="1592809729651" duration="32466000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="91030000" />
<option name="totallyTimeSpent" value="91320000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1280" height="800" extended-state="0" />
@ -267,10 +273,10 @@
<window_info id="Capture Tool" order="2" />
<window_info id="Favorites" order="3" side_tool="true" />
<window_info id="Image Layers" order="4" />
<window_info content_ui="combo" id="Project" order="5" sideWeight="0.49898168" visible="true" weight="0.2657512" />
<window_info active="true" content_ui="combo" id="Project" order="5" sideWeight="0.49898168" visible="true" weight="0.2657512" />
<window_info id="Structure" order="6" sideWeight="0.50101835" side_tool="true" weight="0.24959612" />
<window_info anchor="bottom" id="Version Control" order="0" />
<window_info active="true" anchor="bottom" id="Terminal" order="1" visible="true" weight="0.32739726" />
<window_info anchor="bottom" id="Terminal" order="1" visible="true" weight="0.32739726" />
<window_info anchor="bottom" id="Event Log" order="2" side_tool="true" />
<window_info anchor="bottom" id="Database Changes" order="3" show_stripe_button="false" />
<window_info anchor="bottom" id="Docker" order="4" show_stripe_button="false" />
@ -321,13 +327,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" selection-start-line="2" selection-end-line="2" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/train.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="810">
@ -438,14 +437,21 @@
</entry>
<entry file="file://$PROJECT_DIR$/serve.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-121">
<caret line="79" lean-forward="true" selection-start-line="79" selection-end-line="79" />
<state relative-caret-position="60">
<caret line="101" column="34" selection-start-line="101" selection-start-column="34" selection-end-line="101" selection-end-column="34" />
<folding>
<element signature="e#18#46#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" selection-start-line="2" selection-end-line="2" />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>

View File

@ -41,7 +41,7 @@ def train_models(job):
feature_data = traindata.iloc[:, 1:-1]
label_data = traindata.iloc[:, -1]
X_train, X_test, y_train, y_test = train_test_split(feature_data, label_data, test_size=0.01)
x_train, x_test, y_train, y_test = train_test_split(feature_data, label_data, test_size=0.01)
params = {
'n_estimators': 70,
'max_depth': 13,
@ -51,14 +51,14 @@ def train_models(job):
}
# print(params)
model = RandomForestRegressor(**params)
model.fit(X_train, y_train)
model.fit(x_train, y_train)
# save the model to disk
modelname = './data/' + job + '_' + label + '.sav'
pickle.dump(model, open(modelname, 'wb'))
# 对测试集进行预测
y_pred = model.predict(X_test)
y_pred = model.predict(x_test)
# 计算准确率
MSE = mean_squared_error(y_test, y_pred)
RMSE = np.sqrt(MSE)
@ -76,7 +76,10 @@ def predict(job, features):
values = [job]
for feature in models[job]['features']:
if feature in features:
values.append(features[feature])
else:
values.append(0)
testfile = './data/' + job + '.' + str(random.randint(1000, 9999)) + '.csv'
t = ['job']
@ -131,8 +134,6 @@ class MyHandler(BaseHTTPRequestHandler):
try:
job = query.get('job')[0]
features = json.loads(query.get('features')[0])
msg = {'code': 0, 'error': ""}
pred, success = predict(job, features)
if not success:
@ -170,8 +171,15 @@ class MyHandler(BaseHTTPRequestHandler):
for label in models[job]['labels']:
values = [job]
for feature in models[job]['features']:
if feature in features:
values.append(features[feature])
else:
values.append(0)
if label in labels:
values.append(labels[label])
else:
values.append(0)
if flag:
t = ['job']
t.extend(models[job]['features'])