目录

0 前置知识

什么是机器学习

机器学习的算法

机器学习首先要解决的两个问题

一些基本概念

数据集介绍

1 正文

数据提取

  数字型

  文本型

数据读取


0 前置知识

什么是机器学习

通过简单示例来理解什么是机器学习

机器学习的算法

属于监督式学习的算法有:回归模型,决策树,随机森林,K近邻算法,逻辑回归等算法

属于无监督式学习的算法有:关联规则,K-means聚类算法等

属于强化学习的算法有:马尔可夫决策过程

机器学习的算法——用最通俗的例子去理解

通俗易懂机器学习

图解十大经典机器学习算法入门

10种机器学习算法(附Python代码)

通俗易懂介绍机器学习与深度学习的差别

机器学习首先要解决的两个问题

找到合适的训练数据和测试数据,即数据集的提取;

如何把身边各种形态的实物最终转换成机器可以理解的数学特征,即特征提取。

一些基本概念

有监督学习:对具有概念标记分类的训练样本进行学习,以便尽可能对训练样本集外的数据进行标记分类预测。这里,所有的标记分类是已知的。因此,训练样本的歧义性低。

无监督学习:对具有概念标记分类的训练样本进行学习,以便发现训练集中的结构性知识。这里,所有的标记分类是未知的。因此,训练样本的歧义性高。聚类就是典型的无监督学习。

准确率和召回率:对一个二分问题,会出现四种情况。实例为真,预测为真,真正类(TP);实例为假,预测为真,假正类(FP);实例为假,预测为假,真负类(TN);实例为真,预测为假,假负类(FN)。

召回率=TP/(TP+FN);

准确率=TP/(TP+FP).

数据集介绍[by the way]

数据集和算法缺一不可,很多时候数据集比算法更重要。

1. KDD 99数据

一个网络连接的定义:在某个时间内从开始到结束的TCP数据包序列,并且在这段时间内,数据在预定义的协议下从源ip到目的ip地址的传递。

4大类共39种攻击类型

每个连接用41个特征来描述

TCP连接的基本特征

TCP连接的内容特征

基于时间的网络流量统计特征

基于主机的网络流量统计特征

2. HTTP DATASET CSIC 2010

包含大量标注过的针对web服务的36000个正常请求和25000个攻击请求。攻击类型包括sqli,xss,文件包含,缓冲区溢出,信息泄露等。

3. SEA数据集

涵盖70多个UNIX系统用户的行为日志,这些数据来自于UNIX系统acct机制记录的用户使用的命令。

用户日志类似于下面的命令序列

schonlau在他的个人网站上公开了数据集

4. ADFA-LD数据集

一套主机级入侵检测系统的数据集合,包括windows和linux,记录了系统调用数据。项目主页

数据集将各类系统调用完成了特征化,并针对攻击类型进行了标注。

各种攻击类型列表

5. Alexa域名数据

提供了全球排名TOP100w的网站域名下载,文件格式是CSV。

6. Scikit-learn数据集

最常见的是iris数据集。2个属性,iris.data(4×150矩阵),iris.target(长度150的数组,值同数据类型)

 7. MNIST数据集

入门级的计算机视觉数据集,包含了各种手写数字图片。包含了60000个训练数据和10000个测试数据。

网址

也可以使用离线版的mnist文件

下载链接

8. Movie Review Data

包含了1000条正面评论和1000条负面评论,被广泛用于文本分类,尤其是恶意评论识别方面。后续使用版本polarity dataset v2.0。地址

9. SpamBase数据集

入门级的垃圾邮件分类训练集。一共58个特征,最后一个是垃圾邮件的标记位。地址

10. Enron数据集

使用不同文件夹区分正常邮件和垃圾邮件。地址

1 正文

特征提取

体力活,工程量大。数字型和文本型特征提取最为常见。

数字型

数字型特征可以直接作为特征,但对于一个多维的特征,某一特征值取值范围特别大的时候,很可能导致其他特征对结果的影响被忽略,这时候就需要对特征做预处理。常见的预处理方式有:

标准化

from sklearn import preprocessing
import numpy as np
x = np.array([[.,-.,.],[.,.,.],[.,.,-.]])
print(preprocessing.scale(x))
[[ .         -1.22474487  1.33630621]
[ 1.22474487 . -0.26726124]
[-1.22474487 1.22474487 -1.06904497]]

正则化

from sklearn import preprocessing
import numpy as np
x = np.array([[.,-.,.],[.,.,.],[.,.,-.]])
print(preprocessing.normalize(x,norm='l2'))
[[ 0.40824829 -0.40824829  0.81649658]
[ . . . ]
[ . 0.70710678 -0.70710678]]

归一化

from sklearn import preprocessing
import numpy as np
x = np.array([[.,-.,.],[.,.,.],[.,.,-.]])
print(preprocessing.MinMaxScaler().fit_transform(x))
[[ 0.5         .          .        ]
[ . 0.5 0.33333333]
[ . . . ]]

文本型

较数字型复杂很多,本质上是做单词划分,不同的单词当作一个新的特征。

如:

{'city':'zunyi','temperature':},{'city':'guiyang','temperature':},{'city':'hangzhou','temperature':}

键值city具有多个取值,把每个取值当作特征;temperature是数字型,作为一个特征。

from sklearn.feature_extraction import DictVectorizer
import numpy as np
measurements = [{'city':'zunyi','temperature':},{'city':'guiyang','temperature':},{'city':'hangzhou','temperature':}]
x = DictVectorizer()
print(x.fit_transform(measurements).toarray())#词袋数据
print(x.get_feature_names())#特征名称
[[  .   .   .  .]
[ . . . .]
[ . . . .]]
['city=guiyang', 'city=hangzhou', 'city=zunyi', 'temperature']

文本特征有两个很重要的模型。

词集模型:集合中的单词不会重复出现。

词袋模型:集合中的单词不会重复出现,还会记录每个单词出现的次数。

"""和上例相似"""
#导入相关函数库
from sklearn.feature_extraction.text import CountVectorizer
#实例化分词对象
vectorizer = CountVectorizer(min_df=)
#将文本进行词袋处理
corpus = ['This is the first document.','This is the second document.','And the third one.',]
x = vectorizer.fit_transform(corpus)
#获取对应特征名称
print(vectorizer.get_feature_names())
#获取词袋数据
print(x.toarray())
['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
[[ ]
[ ]
[ ]]

我们定义的词袋的特征空间叫做词汇表vocabulary(输入空间、输出空间、特征空间与假设空间

vocabulary = vectorizer.vocabulary_

对于其他文本,使用现有的词袋的特征进行向量化。

new_vectorizer = CountVectorizer(min_df=,vocabulary=vocabulary)

TensorFlow有类似实现

...

数据读取

CSV是最常见的格式,文件每行记录一个向量,最后一行为标记。

TensorFlow从CSV文件中读取数据

#导入相关函数库
import tensorflow,numpy as tf,np
#读取数据
training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
filename = "iris_training.csv",#文件名
target_dtype=np.int,#标记数据的类型
features_dtype=np.float32)#特征数据的类型
feature_columns = [tf.contrib.layers.real_valued_column("",dimension=)] #???
#访问数据集合的特征以及标记的方式
x = training_set.data
print(x)
y = training_set.target
print(y)

...

web安全之机器学习入门——2.机器学习概述的更多相关文章

  1. 机器学习入门 - Google机器学习速成课程 - 笔记汇总

    机器学习入门 - Google机器学习速成课程 https://www.cnblogs.com/anliven/p/6107783.html MLCC简介 前提条件和准备工作 完成课程的下一步 机器学 ...

  2. web安全之机器学习入门——3.1 KNN/k近邻

    目录 sklearn.neighbors.NearestNeighbors 参数/方法 基础用法 用于监督学习 检测异常操作(一) 检测异常操作(二) 检测rootkit 检测webshell skl ...

  3. Azure机器学习入门(四)模型发布为Web服务

    接Azure机器学习(三)创建Azure机器学习实验,下一步便是真正地将Azure机器学习的预测模型发布为Web服务.要启用Web服务发布任务,首先点击底端导航栏的运行即"Run" ...

  4. Azure机器学习入门(二)创建Azure机器学习工作区

    我们将开始深入了解如何使用Azure机器学习的基本功能,帮助您开始迈向Azure机器学习的数据科学家之路. Azure ML Studio (Azure Machine Learning Studio ...

  5. Azure机器学习入门(三)创建Azure机器学习实验

    在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践: http://archive.ics.uci ...

  6. 机器学习入门 - Google的机器学习速成课程

    1 - MLCC 通过机器学习,可以有效地解读数据的潜在含义,甚至可以改变思考问题的方式,使用统计信息而非逻辑推理来处理问题. Google的机器学习速成课程(MLCC,machine-learnin ...

  7. python机器学习入门-(1)

    机器学习入门项目 如果你和我一样是一个机器学习小白,这里我将会带你进行一个简单项目带你入门机器学习.开始吧! 1.项目介绍 这个项目是针对鸢尾花进行分类,数据集是含鸢尾花的三个亚属的分类信息,通过机器 ...

  8. [转]MNIST机器学习入门

    MNIST机器学习入门 转自:http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html?plg_ ...

  9. 机器学习入门 一、理解机器学习+简单感知机(JAVA实现)

    首先先来讲讲闲话 如果让你现在去搞机器学习,你会去吗?不会的话是因为你对这方面不感兴趣,还是因为你觉得这东西太难了,自己肯定学不来?如果你觉的太难了,很好,相信看完这篇文章,你就会有胆量踏入机器学习这 ...

随机推荐

  1. 导入myeclipse的java源码查看不了的问题

    导入之前自己的jar包后 ,可以正常使用了,但是发现按ctrl+鼠标左键查看不了源代码.attach source 来源后,还是没有效果. 先添加所要使用的jar包, 然后再添加源文件.最后终于显示成 ...

  2. RPM包指令总结

    一.RPM RPM包安装位置 RPM包默认安装路径 /etc/ 配置文件安装目录 /usr/bin/ 可执行的命令安装目录 /usr/lib/ 程序所使用的函数库保存位置 /usr/share/doc ...

  3. VS连接数据库字符串

    在App.config配置文件中的<Configuration>节点中添加如下代码 <connectionStrings>    // SQL Server 数据库      ...

  4. 关于spring boot 的事务类型配置留存

    一.在声明式的事务处理中,要配置一个切面,其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED.SUPPORTS.M ...

  5. php通过imap获取腾讯企业邮箱信息后的解码处理

    最近需要在项目开发的oa中集成一个收发腾讯企业邮箱邮件的功能,今天做到了获取收件箱内容部分,imap如何获取就不写了,百度一堆,主要是关于内容的解码 主要以邮件主题解码为主,腾讯企业邮返回的数据主要有 ...

  6. python 使用多进程打开多个cmd窗口,并在子进程结束之后关闭cmd窗口

    额,我想表达的是使用os.system()打开另一个可执行文件,然后等待其结束,关闭cmd窗口 主要是我突发奇想想装逼; 如果只是用multiprocessing库的多进程,然后输出信息的话,根本没法 ...

  7. C++的正则

    C++的正则封装的不丰富.只有最基础的三个主要的函数(也可能是我孤陋寡闻).要有更为丰富的功能需要自己进一步组合. 我目前只需要循环查找这个功能,并且我也不知道c++的正则支持正则的哪些功能; 代码如 ...

  8. Virtualbox下克隆CentOS 网络配置

    Virtualbox下克隆虚拟机非常容易,也使得我们在平常搭建测试环境方便了许多.不过克隆以后的虚机并不能够直接联网,这是由于网卡的MAC地址引起的.在"控制->复制"弹出的 ...

  9. Double 保留小数点后N位

    /** * parse double f to num decimals * @param f * @param num the decimal number * @return the format ...

  10. 实现硬件PWM控制电机旋转和通过编码器计算所转圈数的简单例程

    该例程所用的硬件设备: 直流电机驱动模块YYH-LWZ: H桥 大功率 正反转 刹车 PWM 调速 5/12/24V 12V直流减速电机JGB37-520B:ASLONG JGB37-520B编码器减 ...