IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 画混淆矩阵 -> 正文阅读

[人工智能]画混淆矩阵

作者:more-toolbox-new

import matplotlib.pyplot as plt
from tensorflow import confusion_matrix
import numpy as np
from tensorflow.keras.utils import to_categorical
from tensorflow.keras import models
import scipy.io as scio
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import itertools
from tensorflow.keras import backend as K,Model # ????
import os ?# ????

import tensorflow as tf ?# ????

# -*- coding: utf-8 -*-
"""
Created on Thu Jul 30 16:47:47 2020

@author: Noah
"""

import os ?# ????

import tensorflow as tf ?# ????

from keras import backend as K, Input, Model ?# ????

os.environ['CUDA_VISIBLE_DEVICES'] = '0' ?# ????

config = tf.ConfigProto() ?# ????

config.gpu_options.allow_growth = True ?# ????

K.set_session(tf.Session(config=config)) ?# ????

from keras import models
from keras.layers import Flatten, Dense, BatchNormalization, Dropout, Conv1D, SeparableConv1D, Lambda, Concatenate, \
?? ?GlobalAveragePooling1D, Activation
input_shape = (128, 2)
inputs = Input(shape=input_shape)
stride = 1

def _group_conv(x, filters, kernel, stride, groups):

? ? channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
? ? in_channels = K.int_shape(x)[channel_axis]

? ? # number of input channels per group
? ? nb_ig = in_channels // groups
? ? # number of output channels per group
? ? nb_og = filters // groups

? ? gc_list = []
? ? # Determine whether the number of filters is divisible by the number of groups
? ? assert filters % groups == 0

? ? for i in range(groups):
? ? ? ? if channel_axis == -1:
? ? ? ? ? ? x_group = Lambda(lambda z: z[:, :, i * nb_ig: (i + 1) * nb_ig])(x)
? ? ? ? else:
? ? ? ? ? ? x_group = Lambda(lambda z: z[:, i * nb_ig: (i + 1) * nb_ig, :])(x)
? ? ? ? gc_list.append(Conv1D(filters=nb_og, kernel_size=kernel, strides=stride,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? padding='same', use_bias=False)(x_group))

? ? return Concatenate(axis=channel_axis)(gc_list)

def LightNet():
? ? L = 128 #sample points
? ? model = models.Sequential()
? ? x1 = Conv1D(128, 16, activation='relu', padding='same',input_shape=[L,2])(inputs)
? ? x2 = BatchNormalization()(x1)
? ? x3 = Dropout(0.003)(x2)

? ? x4 = _group_conv(x3, filters=64, kernel=8, stride=1, groups=8)
? ? x5 = BatchNormalization()(x4)
? ? x6 = Dropout(0.003)(x5)

? ? x7 = GlobalAveragePooling1D()(x6)

? ? x8 = Dense(9)(x7)
? ? predicts = Activation('softmax')(x8)
? ? model = Model(inputs, predicts)
? ? model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
? ? model.summary()
? ? return model

model = LightNet()
model.save('m.hdf5')#看模型的大小

from numpy import array
Data_path = "../10modulations_L=128_train6000_val1000_test10000/"
model = LightNet()
model.load_weights("GlobalModel.hdf5")
data_path = Data_path + "test/snr=" + str(20) + ".mat"
data = scio.loadmat(data_path)
x = data.get('IQ')
N = 10000
y1 = np.zeros([N, 1])
y2 = np.ones([N, 1])
y3 = np.ones([N, 1]) * 2
y4 = np.ones([N, 1]) * 3
y5 = np.ones([N, 1]) * 4
y6 = np.ones([N, 1]) * 5
y7 = np.ones([N, 1]) * 6
y8 = np.ones([N, 1]) * 7
y9 = np.ones([N, 1]) * 8
y_flag = np.vstack((y1, y2, y3, y4, y5, y6, y7, y8, y9))
y_flag = array(y_flag)
y = to_categorical(y_flag)
X_test = x
Y_test = y
[loss, acc] = model.evaluate(X_test, Y_test, batch_size=100, verbose=0)
X_pred = model.predict(X_test)

def plot_confusion_matrix(cm, classes,
?? ??? ??? ??? ??? ??? ? ?normalize=False,
?? ??? ??? ??? ??? ??? ? ?cmap=plt.cm.Blues):
?? ?cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
?? ?thresh = cm.max() / 2.
?? ?for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
?? ??? ?# plt.text(j, i, ("%.3f" % cm[i, j]),
?? ??? ?plt.text(j, i, ("%.2f" % (cm[i, j])), size=10,
?? ??? ??? ??? ? horizontalalignment="center",
?? ??? ??? ??? ? color="white" if cm[i, j] > thresh else "black")

?? ?plt.imshow(cm, interpolation='nearest', cmap=cmap)
?? ?#cbar = plt.colorbar()
?? ?#cbar.set_ticks(np.linspace(0, 1, 11))
?? ?#cbar.set_ticklabels(('0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'))
?? ?tick_marks = np.arange(len(classes))
?? ?plt.xticks(tick_marks, classes, ?size=14, family='Times New Roman',rotation=30)
?? ?plt.yticks(tick_marks, classes, size=14, family='Times New Roman')

?? ?plt.title("Confusion Matrix (SNR=20db)", size=14) ?# 图像标题
?? ?plt.ylabel('True label', size=13, family='Times New Roman')
?? ?plt.xlabel('Predicted label', size=13, family='Times New Roman')

?? ?plt.colorbar()
?? ?#confusion_matrix_title = 'Confusion matrix'
?? ?# print(confusion_matrix_title)
proba = model.predict(X_test, batch_size=100, verbose=1)
max = np.max(proba, axis=1)
y_pred = np.zeros(shape=(90000, 1))
for i in range(90000):
?? ?for j in range(9):
?? ??? ?if (proba[i][j]==max[i]):
?? ??? ??? ?y_pred[i]=j
cm = confusion_matrix(y_flag, y_pred)
classes = ["2FSK", "4FSK", "8FSK", "BPSK", "QPSK", "8PSK", "16QAM","128QAM", "256QAM"]

plt.figure()
plot_confusion_matrix(cm, classes, normalize=True, cmap=plt.cm.Blues)
plt.show()

data_path = Data_path + "test/snr=" + str(10) + ".mat"
data = scio.loadmat(data_path)
X_test = data.get('IQ')
proba = model.predict(X_test, batch_size=100, verbose=1)
max = np.max(proba, axis=1)
y_pred = np.zeros(shape=(90000, 1))
for i in range(90000):
? ? for j in range(9):
? ? ? ? if (proba[i][j] == max[i]):
? ? ? ? ? ? y_pred[i] = j
cm = confusion_matrix(y_flag, y_pred)
classes = ["2FSK", "4FSK", "8FSK", "BPSK", "QPSK", "8PSK", "16QAM","128QAM", "256QAM"]

plt.figure()
plot_confusion_matrix(cm, classes, normalize=True, cmap=plt.cm.Blues)
plt.savefig("demo9_class_10db.png")
plt.show()
?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:00:06  更:2021-10-17 12:01:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:22:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码