Commit e1e942a3 authored by 高雅喆's avatar 高雅喆

Merge branch 'master' of git.wanmeizhensuo.com:ML/ffm-baseline

change , to ;
parents 5b274235 167ea8f6
...@@ -137,36 +137,48 @@ class multiFFMFormatPandas: ...@@ -137,36 +137,48 @@ class multiFFMFormatPandas:
def get_data(): def get_data():
db = pymysql.connect(host='10.66.157.22', port=4000, user='root', passwd='3SYz54LS9#^9sBvC', db='jerry_test') # db = pymysql.connect(host='10.66.157.22', port=4000, user='root', passwd='3SYz54LS9#^9sBvC', db='jerry_test')
sql = "select max(stat_date) from esmm_train_data" # sql = "select max(stat_date) from esmm_train_data"
validate_date = con_sql(db, sql)[0].values.tolist()[0] # validate_date = con_sql(db, sql)[0].values.tolist()[0]
validate_date = "2018-12-19"
print("validate_date:" + validate_date) print("validate_date:" + validate_date)
temp = datetime.datetime.strptime(validate_date, "%Y-%m-%d") # temp = datetime.datetime.strptime(validate_date, "%Y-%m-%d")
start = (temp - datetime.timedelta(days=6)).strftime("%Y-%m-%d") # start = (temp - datetime.timedelta(days=30)).strftime("%Y-%m-%d")
start = "2018-11-19"
print(start) print(start)
db = pymysql.connect(host='10.66.157.22', port=4000, user='root', passwd='3SYz54LS9#^9sBvC', db='jerry_test') # db = pymysql.connect(host='10.66.157.22', port=4000, user='root', passwd='3SYz54LS9#^9sBvC', db='jerry_test')
sql = "select e.y,e.z,e.stat_date,e.ucity_id,e.clevel1_id,e.ccity_name," \ # sql = "select e.y,e.z,e.stat_date,e.ucity_id,f.level2_ids,e.ccity_name," \
"u.device_type,u.manufacturer,u.channel,c.top,cid_time.time " \ # "u.device_type,u.manufacturer,u.channel,c.top,cid_time.time,s.hospital_id,s.doctor_id " \
"from esmm_train_data e left join user_feature u on e.device_id = u.device_id " \ # "from esmm_train_data e left join user_feature u on e.device_id = u.device_id " \
"left join cid_type_top c on e.device_id = c.device_id left join cid_time on e.cid_id = cid_time.cid_id " \ # "left join cid_type_top c on e.device_id = c.device_id left join cid_time on e.cid_id = cid_time.cid_id " \
# "left join service_hospital s on e.diary_service_id = s.id left join diary_feat f" \
# "where e.stat_date >= '{}'".format(start)
db = pymysql.connect(host='10.66.157.22', port=4000, user='root', passwd='3SYz54LS9#^9sBvC')
sql = "select e.y,e.z,e.stat_date,e.ucity_id,f.level2_ids " \
"from jerry_test.esmm_train_data e left join jerry_prod.diary_feat f " \
"where e.stat_date >= '{}'".format(start) "where e.stat_date >= '{}'".format(start)
df = con_sql(db, sql) df = con_sql(db, sql)
print(df.shape) print(df.shape)
df = df.rename(columns={0: "y", 1: "z", 2: "stat_date", 3: "ucity_id",4: "clevel1_id", 5: "ccity_name", df = df.rename(columns={0: "y", 1: "z", 2: "stat_date", 3: "ucity_id",4: "clevel1_id", 5: "ccity_name",
6:"device_type",7:"manufacturer",8:"channel",9:"top",10:"time"}) 6:"device_type",7:"manufacturer",8:"channel",9:"top",10:"time",
11:"hospital_id",12:"doctor_id"})
print("esmm data ok") print("esmm data ok")
print(df.head(2))
print(df.head(2))
features = 0
category = ["ucity_id","clevel1_id","ccity_name","device_type","manufacturer","channel","top","doctor_id",
"hospital_id"]
for i in category:
df[i] = df[i].fillna("na")
features = features + len(df[i].unique())
df["time"] = df["time"].fillna(0.0)
df["clevel1_id"] = df["clevel1_id"].astype("str") df["clevel1_id"] = df["clevel1_id"].astype("str")
df["y"] = df["y"].astype("str") df["y"] = df["y"].astype("str")
df["z"] = df["z"].astype("str") df["z"] = df["z"].astype("str")
df["top"] = df["top"].astype("str") df["top"] = df["top"].astype("str")
df["y"] = df["stat_date"].str.cat([df["y"].values.tolist(),df["z"].values.tolist()], sep=",") df["y"] = df["stat_date"].str.cat([df["y"].values.tolist(),df["z"].values.tolist()], sep=",")
df = df.drop(["z","stat_date"], axis=1).fillna(0.0) df = df.drop(["z","stat_date"], axis=1)
print(df.head(2)) print(df.head(2))
features = 0
for i in ["ucity_id","clevel1_id","ccity_name","device_type","manufacturer","channel","top"]:
features = features + len(df[i].unique())
print("fields:{}".format(df.shape[1]-1)) print("fields:{}".format(df.shape[1]-1))
print("features:{}".format(features)) print("features:{}".format(features))
ccity_name = list(set(df["ccity_name"].values.tolist())) ccity_name = list(set(df["ccity_name"].values.tolist()))
...@@ -217,6 +229,10 @@ def get_predict_set(ucity_id,model,ccity_name): ...@@ -217,6 +229,10 @@ def get_predict_set(ucity_id,model,ccity_name):
df = df[df["ccity_name"].isin(ccity_name)] df = df[df["ccity_name"].isin(ccity_name)]
print("after ccity_name filter:") print("after ccity_name filter:")
print(df.shape) print(df.shape)
category = ["ucity_id", "clevel1_id", "ccity_name", "device_type", "manufacturer", "channel", "top"]
for i in category:
df[i] = df[i].fillna("na")
df["time"] = df["time"].fillna(0.0)
df["cid_id"] = df["cid_id"].astype("str") df["cid_id"] = df["cid_id"].astype("str")
df["clevel1_id"] = df["clevel1_id"].astype("str") df["clevel1_id"] = df["clevel1_id"].astype("str")
df["top"] = df["top"].astype("str") df["top"] = df["top"].astype("str")
...@@ -226,7 +242,7 @@ def get_predict_set(ucity_id,model,ccity_name): ...@@ -226,7 +242,7 @@ def get_predict_set(ucity_id,model,ccity_name):
df["y"] = df["label"].str.cat( df["y"] = df["label"].str.cat(
[df["device_id"].values.tolist(), df["ucity_id"].values.tolist(), df["cid_id"].values.tolist(), [df["device_id"].values.tolist(), df["ucity_id"].values.tolist(), df["cid_id"].values.tolist(),
df["y"].values.tolist(), df["z"].values.tolist()], sep=",") df["y"].values.tolist(), df["z"].values.tolist()], sep=",")
df = df.drop(["z","label","device_id","cid_id"], axis=1).fillna(0.0) df = df.drop(["z","label","device_id","cid_id"], axis=1)
print(df.head(2)) print(df.head(2))
df = model.transform(df,n=160000, processes=22) df = model.transform(df,n=160000, processes=22)
df = pd.DataFrame(df) df = pd.DataFrame(df)
...@@ -262,6 +278,7 @@ if __name__ == "__main__": ...@@ -262,6 +278,7 @@ if __name__ == "__main__":
df, validate_date, ucity_id,ccity_name = get_data() df, validate_date, ucity_id,ccity_name = get_data()
model = transform(df, validate_date) model = transform(df, validate_date)
# get_predict_set(ucity_id,model,ccity_name) # get_predict_set(ucity_id,model,ccity_name)
b = time.time() b = time.time()
print("cost(分钟)") print("cost(分钟)")
print((b-a)/60) print((b-a)/60)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment