如果你是小白,请慢慢看完~

概念:

分类是数据挖掘的一种非常重要的方法。分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型(即我们通常所说的分类器(Classifier))。该函数或模型能够把数据库中的数据纪录映射到给定类别中的某一个,从而可以应用于数据预测。总之,分类器是数据挖掘中对样本进行分类的方法的统称,包含决策树、逻辑回归、朴素贝叶斯、神经网络等算法。#这些算法都很重要,慢慢介绍,请看专题,一定有的!

分类器的构造和实施大体会经过以下几个步骤:

  • 选定样本(包含正样本和负样本),将所有样本分成训练样本和测试样本两部分。

  • 在训练样本上执行分类器算法,生成分类模型。

  • 在测试样本上执行分类模型,生成预测结果。

  • 根据预测结果,计算必要的评估指标,评估分类模型的性能

正样本和负样本:正样本是指属于某一类别的样本,反样本是指不属于某一类别的样本比如说你在做字母A的图像识别,字母A的样本就属于正样本,不是字母A的样本就属于负样本。

简单来说就是 准备数据 划分数据集(训练集/测试集)+算法(决策树、逻辑回归、朴素贝叶斯、神经网络)+预测+评估(这模型怎么样loss/accuracy/rmse/mse等等参数)

==================================题外话==================================

最近我导对接企业接了个故障诊断与预测的活儿

我用Keras搭建了个简单的BP多分类网络,数据从论文里面扣了能有30行(还是两种传感器)的数据加起来30行,做监督学习,怎么够···

当前进度:

用BP搭建分类网络无奈数据集太少,只有15行数据,做监督学习太难,相关人员评论:

①数据量还没权重的量大

②一类3个样本,都不够划分数据集

训练出来的图是这样的

解决方案:

可行可能不够智能:经验if else 升级 决策树(数据量不够,经验来凑)

好像有相关的研究few-shot叫这种吧,我也不确定,做个非监督聚类吧

当前进度:

用BP搭建分类网络无奈数据集太少,只有15行数据,做监督学习太难,相关人员评论:

①数据量还没权重的量大

②一类3个样本,都不够划分数据集

用神经网络解决代码(难点:数据太少太少了):

数据图

我导对接的企业,这会儿在做数据测点,在准备向企业要求数据,希望后面数据能补上。

1.加载数据集#前期工作数据还是论文里的,还得用OCR提出来,通过TXT→EXCEL→CSV才得到相对干净的数据

Task:用八维数据预测五类故障,Y_label = 1,2,3,4,5 → Onehot Encoding →Y_onehot_label

import pandas as pd
df = pd.read_csv('./故障检测数据集.csv',  engine='python',index_col=0)#index_col=0不要索引
# df = pd.read_csv('./故障检测数据集.csv', usecols=[0,1], engine='python', skipfooter=3)#选
print(df)

# 制作分类Onehot标签
pd.get_dummies(df.Label)
Y_label = pd.get_dummies(df.Label)
print(Y_label)

#制作输入数据
dataset = df.values
input = df.drop(labels=None, columns= 'Label')
input = input.values
input = input.astype('float32')
input = input.reshape(-1,8)
print(input)
# dataset = df.values#只要value
# dataset = dataset.astype('float32')
# print(dataset)

# 数据归一化,方便收敛,不然可能会发散
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1))
input = scaler.fit_transform(input)
# print(scaled)
#模型准备
import keras
from keras.layers import Dense
model = keras.models.Sequential()model.add(Dense(5, use_bias=False, input_shape=(8,),name='Dense_ly'))  # 8个列输入,仅有的1个权重在这里
model.add(Dense(5, activation='softmax'))
model.compile(optimizer='adam',loss='categorical_crossentropy',#多分类用的lossmetrics=['acc'])
# model.compile(loss='mse', optimizer='adam')#回归
# endmodel.summary()  # 简单查看网络结构

呵呵真的是权重量比数据多,有些离谱···,想想决策树呢?

#训练调试
print('模型随机权重分配为:%s\n' % (model.layers[0].get_weights()))  # 检查随机初始化的权重大小
history = model.fit(input, Y_label,epochs=100,shuffle=True)  # 对创建的数据用创建的网络进行训练
print('训练完成后权重分配为:%s\n' % (model.layers[0].get_weights()))  # 再次查看训练好的模型中的权重值

离谱

#预测
import numpy as np
# a = [30.7499,5.1717,2.153,0.6399,10.499,242.9,36.44,47.11]#f_1
a = [28.7568,6.1312,2.3456,0.661,12.3456,284,34.765,46.69]#f_2
# a = [31.1555,4.2790,1.9467,0.6377,8.5239,201,36.6678,46.5123]#f_4
print(a)
b = np.array(a).reshape(-1,1)
scaler_test = MinMaxScaler(feature_range=(0, 1))
b = scaler_test.fit_transform(b)
print(b)
c = b.reshape(-1,8)#转化为可喂模型的测试输入数据
print(c)print('模型进行预测:%s\n' % (model.predict(c)))  # 利用训练好的模型进行预测
print("故障类型:",np.argmax(model.predict(c))+1)

目前数据量太少,无论选择训练集的哪一行数据预测都是故障3,想想别的招吧。

softmax怎么连接Dense层?直接附属的非线性激活函数,预测结果为数组跟着一个np.argmax()得出索引~得到分类结果

Reference:

分类器_百度百科

【机器学习】正样本和负样本

为什么要用one-hot编码
(P5)使用keras进行多分类问题(2)-独热编码(onehot)【精品】

用keras实现3层BP网络的训练、保存、加载和导入自己手写的数字进行测试【精品】

深入理解 keras 中 Dense 层参数【精品】

Python的reshape的用法:reshape(1,-1)#为了归一化

Keras参数设置说明【怎么配:分类与回归使用怎样的参数?】【精品】

利用Keras进行分类【故障诊断(啥类的故障)】相关推荐

  1. python 多分类模型优化_【Python与机器学习】:利用Keras进行多类分类

    多类分类问题本质上可以分解为多个二分类问题,而解决二分类问题的方法有很多.这里我们利用Keras机器学习框架中的ANN(artificial neural network)来解决多分类问题.这里我们采 ...

  2. 利用Keras使用非常少的数据建立强大的图像分类模型

    博客原文 在本教程中,我们将介绍一些简单而有效的方法,您可以使用这些方法来构建强大的图像分类器,仅使用极少数的训练实例 - 只需从您想要识别的每个类别中挑选几百或几千张图片即可. 我们将会涵盖以下内容 ...

  3. python训练好的图片验证_利用keras加载训练好的.H5文件,并实现预测图片

    我就废话不多说了,直接上代码吧! import matplotlib matplotlib.use('Agg') import os from keras.models import load_mod ...

  4. 利用Keras构建自动编码器

    利用Keras构建自动编码器 我们在这份学习指南中将回答有关自动编码器的一些常见问题,除此之外,我们也会给出下述模型的代码示例: 基于全连接层的简单自动编码器 稀疏自动编码器 深度全连接自动编码器 深 ...

  5. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图

    文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...

  6. 单例模式访问mysql设计类图_利用单例模式设计数据库连接Model类

    之前在<[php]利用php的构造函数与析构函数编写Mysql数据库查询类>(点击打开链接)写过的Mysql数据库查询类还不够完美,利用<[Java]单例模式>(点击打开链接) ...

  7. 水星pppoe连接服务器无响应,利用水星路由器系统日志解决PPPOE拨号故障

    如今,PPPOE拨号已经成为家庭用户最常见的宽带接入类型,很多家庭都拥有两台.三台或更多的电脑.下面学习啦小编将在水星路由器上以PPPOE拨号上网的常见故障介绍,希望对您有所帮助! 利用水星路由器系统 ...

  8. 利用poi 读取excel通用工具类

    poi excel导出通用工具 | 这一行是废话 根据上一篇利用poi 导出excel通用工具类去年写的一个工具类,同样根据业务需求重新封装了一个读excel 工具类,感觉还算通用,分享到博客,欢迎各 ...

  9. 计算机时代的英语阅读,利用微信平台提升英语类专业学生课外阅读能力的实 践意义...

    利用微信平台提升英语类专业学生课外阅读能力的实 践意义 <中学生作文指导>2020年 第10期 | 林静怡;林忆梦;钟昕彤;钟惠敏;张妤 广东培正学院 摘 要:本文以广东培正学院为例,通过 ...

最新文章

  1. centos6源码安装mysql5.6.29
  2. UTF-8和GBK有啥区别?
  3. 前端学习(2136):使用es6模块化出现Access to script at ‘file:///... ..from origin ‘null‘ has been blocked。。。错误
  4. dataset的去重计数 g2_AntV 架构演进-G2 篇
  5. 入门嵌入式HTML/CSS/脚本引擎 sciter(问题篇)
  6. 计算机中组策略编辑,组策略编辑器用法-如何使用组策略
  7. Android开发实例详解之IMF
  8. 一个用在手机上的简单js拖拽效果
  9. Java web/springboot上传word/doc/docx文档(含图片)与HTML富文本导入/导出互相转换解析!附项目源码
  10. 全国一级windows计算机,2001年4月全国计算机等级考试一级Windows
  11. houdini 求出曲线的法向 切线以及副法线
  12. 校招和社招有什么区别?不同时期重点不同!
  13. signed integer overflow: -2147483648 - 1 cannot be represented in type ‘int‘
  14. 为什么批量注册Facebook账号需要使用指纹浏览器防关联
  15. Python read打印与print区别
  16. 郑义宣就任韩国现代汽车集团会长
  17. Linux 自动休眠功能的关闭方法
  18. R 软件包及其依赖包下载
  19. 华为HCNA之交换机基础配置实验
  20. android wear测心率,如何从Android Wear读取心率

热门文章

  1. MFC 中Edit Box 不响应回车键 和删除键
  2. (转)Android高级进阶--插曲-从Android5.0到Android9.0各版本变化
  3. Flume的学习及使用
  4. 唯美动画 回音哥 仙剑五版 - 芊芊
  5. C语言设计模式-模板模式
  6. SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)
  7. 无锡市民健康档案信息系统云计算平台集成
  8. 微软Windows Azure云应用开发实践
  9. BZOJ 1814 Ural 1519 Formula 1
  10. 使用Java将文本复制到剪贴板