python - 破折号返回't.split 不是函数'错误'
问题描述
我开始探索 dash 作为一种允许一些内部业务合作伙伴手动选择值的方法,以查看这些值将如何改变我训练过的模型的预测。下面是我的代码。
但是,当我尝试运行它时,我收到一个错误,即 t.split 不是函数。我试图在文档中查找错误,但没有成功。我知道这个错误是一个 Java 错误,但这是我所能得到的。我哪里错了?
#import sklearn.external.joblib as extjoblib
import joblib
#from sklearn.externals import joblib
import plotly.graph_objs as go
import pandas as pd
import plotly.express as px
import numpy as np
import dash
import dash_daq as daq
import dash_html_components as html
import dash_core_components as dcc
import dash_bootstrap_components as dbc
from dash.dependencies import Input, Output, State
app = dash.Dash()
input_columns = ['incoming_volume','handled_volume','call_handle_time','transfer_rate',
'call_to_suppt_rate','scheduled_hours','overtime_hours','phone_hours','off_phone_hours']
model = joblib.load("./beta_srv_lvl.pkl")
scaler = joblib.load("./beta_srv_lvl_scaler.pkl")
unscaled_train = pd.read_pickle("./unscaled_train.pkl")
pred_mean_data = pd.DataFrame([unscaled_train[input_columns].mean().tolist()], columns=input_columns)
fig = px.line(unscaled_train, x="rowdate", y="service_level")
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
server = app.server
#cache = Cache(
# app.server,
# config={"CACHE_TYPE": "redis", "CACHE_REDIS_URL": os.environ.get("REDIS_URL", "")},
#)
# Build component parts
svc_graph = dcc.Graph(id="svc_lvl_graph", figure=fig, style={"height": "500px"})
#div_alert = dbc.Spinner(html.Div(id="alert-msg"))
query_card = dbc.Card(
[
html.H4("Service Level Prediction", className="card-title"),
dcc.Markdown(id="svc_lvl_prediction"),
],
body=True,
)
controls = [
dbc.FormGroup(
[
dbc.Label('Incoming Volume'),
daq.Slider(id='incoming_volume_slider'
,min=unscaled_train.incoming_volume.min()
,max=unscaled_train.incoming_volume.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=np.round(unscaled_train.incoming_volume.mean(),0)
)]),
dbc.FormGroup(
[
dbc.Label('Handled Volume'),daq.Slider(id='handled_volume_slider'
,min=unscaled_train.handled_volume.min()
,max=unscaled_train.handled_volume.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=np.round(unscaled_train.handled_volume.mean(),0)
)]),
dbc.FormGroup(
[
dbc.Label('Call Handle Time'),daq.Slider(id='call_handle_time_slider'
,min=unscaled_train.call_handle_time.min()
,max=unscaled_train.call_handle_time.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=np.round(unscaled_train.call_handle_time.mean(),0)
)]),
dbc.FormGroup(
[
dbc.Label('Transfer Rate'),daq.Slider(id='transfer_rate_slider'
,min=unscaled_train.transfer_rate.min()
,max=unscaled_train.transfer_rate.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=unscaled_train.transfer_rate.mean()
)]),
dbc.FormGroup(
[
dbc.Label('Call to Support Rate'),daq.Slider(id='call_to_suppt_rate_slider'
,min=unscaled_train.call_to_suppt_rate.min()
,max=unscaled_train.call_to_suppt_rate.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=unscaled_train.call_to_suppt_rate.mean()
)]),
dbc.FormGroup(
[
dbc.Label('Scheduled Hours'),daq.Slider(id='scheduled_hours_slider'
,min=unscaled_train.scheduled_hours.min()
,max=unscaled_train.scheduled_hours.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=np.round(unscaled_train.scheduled_hours.mean(),0)
)]),
dbc.FormGroup(
[
dbc.Label('Overtime hours'),daq.Slider(id='overtime_hours_slider'
,min=unscaled_train.overtime_hours.min()
,max=unscaled_train.overtime_hours.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=np.round(unscaled_train.overtime_hours.mean(),0)
)]),
dbc.FormGroup(
[
dbc.Label('Phone Hours'),daq.Slider(id='phone_hours_slider'
,min=unscaled_train.phone_hours.min()
,max=unscaled_train.phone_hours.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=np.round(unscaled_train.phone_hours.mean(),0)
)]),
dbc.FormGroup(
[
dbc.Label('Off Phone Hours'),daq.Slider(id='off_phone_hours_slider'
,min=unscaled_train.off_phone_hours.min()
,max=unscaled_train.off_phone_hours.max()
#,marks={i: 'Label {}'.format(i) if i == 1 else str(i)
# for i in range(unscaled_train.incoming_volume.min(), unscaled_train.incoming_volume.max())}
,value=np.round(unscaled_train.off_phone_hours.mean(),0)
)]),
dbc.Button("Predict Service Level", color="primary", id="button-train"),
]
# Define Layout
app.layout = dbc.Container(
fluid=True,
children=[
html.H1("Service Level"),
html.Hr(),
dbc.Row(
[
dbc.Col([dbc.Card(controls, body=True)], md=3),
dbc.Col([svc_graph, query_card], md=6),
]
),
],
style={"margin": "auto"},
)
#Callbacks
@app.callback(
[
#Output("alert-msg", "children"),
Output("svc_lvl_prediction", "children")
#Output("svc_lvl_prediction", "children"),
],
[Input("button-train", "n_clicks")],
[
State('incoming_volume_slider', "value"),
State('handled_volume_slider', "value"),
State('call_handle_time_slider', "value"),
State('transfer_rate_slider', "value"),
State("call_to_suppt_rate_slider", "value"),
State("scheduled_hours_slider", "value"),
State("overtime_hours_slider", "value"),
State("phone_hours_slider", "value"),
State("off_phone_hours_slider", "value"),
],
)
def query_and_train(n_clicks, inc_volume, hand_volume, call_handle, transfer_rate, suppt_rate, scheduled_hour, overtime, phone_hour, off_phone):
pred_mean_data.loc[0,'incoming_volume'] = inc_volume
pred_mean_data.loc[0,'handled_volume'] = hand_volume
pred_mean_data.loc[0,'call_handle_time'] = call_handle
pred_mean_data.loc[0,'transfer_rate'] = transfer_rate
pred_mean_data.loc[0,'call_to_suppt_rate'] = suppt_rate
pred_mean_data.loc[0,'scheduled_hours'] = scheduled_hour
pred_mean_data.loc[0,'overtime_hours'] = overtime
pred_mean_data.loc[0,'phone_hours'] = phone_hour
pred_mean_data.loc[0,'off_phone_hours'] = off_phone
test_scaled = scaler.transform(pred_mean_data.values)
input_scale = pd.DataFrame(test_scaled, columns = input_columns)
svc_lvl_pred_value = model.predict(test_scaled)
return [svc_lvl_pred_value[0]]
if __name__ == '__main__':
app.run_server(debug=True)
#####
"""
Layout:
Title
Graph of training data service levels
Sliders of input data centered at mean of training data
Ouput cell
"""
解决方案
推荐阅读
- visual-studio-code - 将光标移动到下面的字符会跳转到下一行
- c# - 源表自定义外键列
- android - 我的应用程序太大而无法上传到 Google Play 商店?
- python - 为什么 django form action url product/addcomment 被重定向到 product/addcomment 两次?
- r - 使用 data.table 将值从一列传播到多个新列
- excel - 使用 DAX 计算连接的行数
- reactjs - 使用 react 和 react-redux 的以下代码中的状态值未更新
- docker - docker 守护进程日志中的可疑 ID
- java - 删除 Talend 中的无效值
- javascript - 在threejs中单击元素后使用动态文本渲染3D对象(来自Blender)