Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN实现二分类——DIY二分类数据集&预测新数据点

28 篇文章 10 订阅

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() 

 

 

以下是一个简单的DNN二分类模型的Python代码,以及混淆矩阵图的生成: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import confusion_matrix from keras.models import Sequential from keras.layers import Dense # 读取数据集 dataset = pd.read_csv('dataset.csv') # 提取特征与标签 X = dataset.iloc[:, :-1].values y = dataset.iloc[:, -1].values # 数据集划分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 特征缩放 sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) # 创建模型 model = Sequential() model.add(Dense(units=6, kernel_initializer='uniform', activation='relu', input_dim=X.shape[1])) model.add(Dense(units=6, kernel_initializer='uniform', activation='relu')) model.add(Dense(units=1, kernel_initializer='uniform', activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, batch_size=32, epochs=100) # 预测测试集结果 y_pred = model.predict(X_test) y_pred = (y_pred > 0.5) # 生成混淆矩阵图 cm = confusion_matrix(y_test, y_pred) plt.imshow(cm, cmap=plt.cm.Blues) plt.xticks([0, 1]) plt.yticks([0, 1]) plt.xlabel('Predicted Label') plt.ylabel('True Label') for i in range(2): for j in range(2): plt.text(j, i, format(cm[i, j]), horizontalalignment='center', verticalalignment='center') plt.show() ``` 在这个代码中,我们使用了Keras库来创建一个简单的DNN二分类模型,使用了一个包含两个隐藏层的模型结构。通过训练模型并预测测试集结果,我们可以生成一个混淆矩阵图来展示模型的分类效果。在这个混淆矩阵图中,横轴表示预测结果,纵轴表示真实结果,图中的数字表示每个类别的样本数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值