天天看點

Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN實作二分類——DIY二分類資料集&預測新資料點

輸出結果

Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN實作二分類——DIY二分類資料集&預測新資料點
Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN實作二分類——DIY二分類資料集&預測新資料點

實作代碼

# coding:utf-8

#Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN實作二分類——DIY二分類資料集&預測新資料點

# 生成二分類資料集

X, y = make_blobs(n_samples=100, centers=2, n_features=2, random_state=1)

print(X,y)

Xa=[]

Xb=[]

for i in range(0,len(X)):

   Xa.append(X[i][0])

   Xb.append(X[i][1])

print('a',Xa)

print('b',Xb)

plt.scatter(Xa,Xb,marker='o',c='',edgecolors='g')#edgecolors是控制圓圈的邊緣顔色,c是控制圓心的顔色,c=''就是空心

scalar = MinMaxScaler()

scalar.fit(X)

X = scalar.transform(X)

# 定義并拟合最終模型

model = Sequential()

model.add(Dense(4, input_dim=2, activation='relu'))

model.add(Dense(4, activation='relu'))

model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam')

model.fit(X, y, epochs=500, verbose=0)

# #T1、單個預測,新的未知資料執行個體

# Xnew = array([[0.89337759, 0.65864154]])

# # 作出預測

# ynew = model.predict_classes(Xnew)

# print(Xnew,ynew)

# plt.scatter(Xnew[0][0],Xnew[0][1],marker='^',c='',edgecolors='b')#edgecolors是控制圓圈的邊緣顔色,c是控制圓心的顔色,c=''就是空心

# plt.title('Keras-DNN—Single: Binary classification——Jason Niu')

# plt.show()

#T2、多個預測,新的未知資料執行個體

Xnew, _ = make_blobs(n_samples=3, centers=2, n_features=2, random_state=1)

Xnew = scalar.transform(Xnew)

print(Xnew)

# 作出預測

ynew = model.predict_classes(Xnew)

# 顯示輸入和輸出

Xnew_x=[]

Xnew_y=[]

for i in range(len(Xnew)):

   print("X=%s, Predicted=%s" % (Xnew[i], ynew[i]))

   Xnew_x.append(Xnew[i][0])

   Xnew_y.append(Xnew[i][1])  

plt.scatter(Xnew_x,Xnew_y,marker='.',c='',edgecolors='r')#edgecolors是控制圓圈的邊緣顔色,c是控制圓心的顔色,c=''就是空心

plt.title('Keras-DNN—Multiple: Binary classification——Jason Niu')

plt.show()

繼續閱讀