我是 StackOverflow 的新手,我的英語說得不好。但我希望你能幫助我。我的問題是我有一個使用 tensorflow/keras 的資料集創建的模型,但我不知道如何使用該模型來預測答案 (0/1)。這是我的代碼:
創建模型
import pandas as pd
from sklearn.model_selection import train_test_split
dataset = pd.read_csv("database2.csv")
x = dataset.drop(columns=["good/bad"])
y = dataset["good/bad"]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
from tensorflow.keras.models import Sequential, load_model
from tensorflow.keras.layers import Dense
from sklearn.metrics import accuracy_score
model = Sequential()
model.add(Dense(units=32, activation="relu", input_dim=len(x_train.columns)))
model.add(Dense(units=64, activation="relu"))
model.add(Dense(units=1, activation="sigmoid"))
model.compile(loss="binary_crossentropy", optimizer="sgd", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=200, batch_size=32)
y_hat = model.predict(x_test)
y_hat = [0 if val < 0.5 else 1 for val in y_hat]
print(accuracy_score(y_test, y_hat))
model.save("tfmodel2.model")
資料庫2.csv
good/bad,version,ihl,len_,id_,frag,ttl,dport,seq,ack,dataofs,reserved,window,urgptr
1,4,5,52,12811,0,128,80,3370329709,0,8,0,64240,0
1,4,5,52,0,0,64,59331,1464637201,3370329710,8,0,64240,0
1,4,5,52,12812,0,128,80,3129455413,0,8,0,64240,0
1,4,5,52,0,0,64,59332,619700928,3129455414,8,0,64240,0
1,4,5,52,12813,0,128,80,3501094825,0,8,0,64240,0
1,4,5,52,0,0,64,59333,2779039288,3501094826,8,0,64240,0
1,4,5,40,12814,0,128,80,3370329710,1464637202,5,0,256,0
1,4,5,40,12815,0,128,80,3129455414,619700929,5,0,256,0
1,4,5,60,12816,0,128,80,3129455414,619700929,5,0,256,0
1,4,5,40,60164,0,64,59332,619700929,3129455434,5,0,502,0
1,4,5,480,12817,0,128,80,3129455434,619700929,5,0,256,0
1,4,5,40,60165,0,64,59332,619700929,3129455874,5,0,501,0
1,4,5,60,12818,0,128,80,3129455874,619700929,5,0,256,0
1,4,5,40,60166,0,64,59332,619700929,3129455894,5,0,501,0
1,4,5,1500,12819,0,128,80,3129455894,619700929,5,0,256,0
1,4,5,40,60167,0,64,59332,619700929,3129457354,5,0,501,0
1,4,5,80,12820,0,128,80,3129457354,619700929,5,0,256,0
1,4,5,40,60168,0,64,59332,619700929,3129457394,5,0,501,0
1,4,5,720,12821,0,128,80,3129457394,619700929,5,0,256,0
1,4,5,40,60169,0,64,59332,619700929,3129458074,5,0,501,0
1,4,5,60,12822,0,128,80,3370329710,1464637202,5,0,256,0
1,4,5,40,57184,0,64,59331,1464637202,3370329730,5,0,502,0
1,4,5,1500,12823,0,128,80,3129458074,619700929,5,0,256,0
1,4,5,40,60170,0,64,59332,619700929,3129459534,5,0,501,0
1,4,5,1500,12824,0,128,80,3129459534,619700929,5,0,256,0
1,4,5,40,60171,0,64,59332,619700929,3129460994,5,0,494,0
1,4,5,1340,12825,0,128,80,3370329730,1464637202,5,0,256,0
1,4,5,40,57185,0,64,59331,1464637202,3370331030,5,0,501,0
1,4,5,40,12826,0,128,80,3501094826,2779039289,5,0,256,0
1,4,5,200,12827,0,128,80,3370331030,1464637202,5,0,256,0
1,4,5,40,57186,0,64,59331,1464637202,3370331190,5,0,501,0
1,4,5,140,12828,0,128,80,3129460994,619700929,5,0,256,0
1,4,5,40,60172,0,64,59332,619700929,3129461094,5,0,501,0
1,4,5,1500,12829,0,128,80,3370331190,1464637202,5,0,256,0
1,4,5,40,57187,0,64,59331,1464637202,3370332650,5,0,501,0
1,4,5,60,12830,0,128,80,3501094826,2779039289,5,0,256,0
1,4,5,40,5921,0,64,59333,2779039289,3501094846,5,0,502,0
我如何使用這個模型來預測類似的東西:4,5,40,60185,0,64,59332,619701397,3129468394,5,0,501,0
謝謝你支持我!
uj5u.com熱心網友回復:
但你已經在你的代碼中擁有它:
y_hat = model.predict(x_test)
可能會在它之后添加這樣的東西
對于范圍內的 i(len(y_hat)):列印(x_test[i], y_hat[i])
uj5u.com熱心網友回復:
您的資料集確實是微小的,你的超引數batch_size,learning_rate以及epochs需要進行調整。你的標簽good/bad總是 1,這很奇怪。但無論如何,要對您的模型進行預測(您實際上已經在做),只需輸出您的預測:
dataset = pd.read_csv("database2.csv")
x = dataset.drop(columns=["good/bad"])
y = dataset["good/bad"]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
from sklearn.metrics import accuracy_score
optimizer = SGD(learning_rate=0.0001)
model = Sequential()
model.add(Dense(units=32, activation="relu", input_dim=len(x_train.columns)))
model.add(Dense(units=64, activation="relu"))
model.add(Dense(units=1, activation="sigmoid"))
model.compile(loss="binary_crossentropy", optimizer=optimizer, metrics=["accuracy"])
model.fit(x_train, y_train, epochs=5, batch_size=32)
y_hat = model.predict(x_test)
print('Predictions \n', y_hat)
y_hat = [0 if val < 0.5 else 1 for val in y_hat]
print(accuracy_score(y_test, y_hat))
model.save("tfmodel2.model")
'''
Predictions
[[0.]
[1.]
[0.]
[1.]
[1.]
[1.]
[0.]
[1.]]
Accuracy: 0.625
'''
您的test資料集有 8 個條目,這就是為什么您會看到 8 個預測,它們要么是 0,要么是 1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/319233.html
