机器学习-欠拟合与过拟合
前言
拟合定义
过拟合:一个假设在训练数据上能够获得比其他假设更好的拟合, 但是在测试数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)
欠拟合:一个假设在训练数据上不能获得更好的拟合,并且在测试数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)
而模型变复杂的原因,是因为在训练模型的过程中数据中存在很多无用的特征,因为在现实过程中很多东西的特征与目标值的关系并不是线性关系
原因以及解决办法
欠拟合原因以及解决办法
原因:学习到数据的特征过少
解决办法:
1)添加其他特征项,有时候我们模型出现欠拟合的时候是因为特征项不够导致的,可以添加其他特征项来很好地解决。例如,“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段,无论在什么场景,都可以照葫芦画瓢,总会得到意想不到的效果。除上面的特征之外,“上下文特征”、“平台特征”等等,都可以作为特征添加的首选项。
2)添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。
过拟合原因以及解决办法
原因 ...
机器学习--线性回归
前言
线性回归主要用于对于预测方面的使用,比如房价预测,最经典的案例就是波士顿房价预测,这个在下文将会提到
线性回归
线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。
特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归
线性回归用矩阵表示举例
那么怎么理解呢?我们来看几个例子
期末成绩:0.7×考试成绩+0.3×平时成绩
房子价格 = 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率
上面两个例子,我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型。
线性回归的基本API
线性回归的api主要是在sklearn.linear_model下
基本的demo如下:
from sklearn.linear_model import LinearRegression#创建数据集x = [[80, 86], [82, 80], [85, 78], ...
机器学习--KNN算法和鸢尾花案例
前言
KNN算法和鸢尾花都是机器学习入门的算法和案例
最近刚好学习到了这里,就写一下,随便梳理一下思绪
KNN算法
K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法
定义
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
而KNN算法的关键是K值的选取和点距离的计算
距离的计算
要度量空间中点距离的话,有好几种度量方式,比如常见的曼哈顿距离计算,欧式距离计算.切比雪夫距离等等。不过通常KNN算法中使用的是欧式距离,这里只是简单说一下
这样我们就明白了如何计算距离,KNN算法最简单粗暴的就是将预测点与所有点距离进行计算,然后保存并排序,选出前面K个值看看哪些类别比较多
k值的选取
通过交叉验证,可以得出一个比较合适的k值,来让被评估的模型更加准确可信
鸢尾花案例
而鸢尾花案例是验证KNN算法的一个经典案例,鸢尾花的数据集数据量较少只有150条,而且数据较为规范,很适合用于验证模型和算法,还有机器学习的完整流程
关于数据集的具 ...
渗透测试-信息收集(指纹识别和waf检测)
前言
本文渗透测试仅供学习记录,未经允许的渗透测试是违法行为
1. 指纹识别
1.1了解CMS指纹识别
CMS:快速搭建网站的内容管理系统
Web应用框架:快速二次开发的Web应用框架,例如网站,小程序
1.2 指纹的特性
唯一性
终身不变性
方便性
1.3 指纹识别的方式
云悉在线 https://www.yunsee.cn/
WhatWeb https://whatweb.net/ http://whatweb.bugscaner.com/look
插件Wappalyzer: https://www.wappalyzer.com
脚本:
CMSeek:
kali下安装:root@kali:~# git clone https://github.com/Tuhinshubhra/CMSeeKroot@kali:~# cd CMSeeK/root@kali:~/CMSeeK# pip/pip3 install -r requirements.txtroot@kali:~/CMSeeK# ...
渗透测试-信息收集(目录扫描)
前言
本文渗透测试仅供学习记录,未经允许的渗透测试是违法行为
目录扫描
目录扫描可以通过robots.txt文件,目录爆破等方式完成
本文主要介绍目录爆破中的dirbuster工具
DirBuster
DirBuster是一个多线程的基于Java的应用程序设计用于暴力破解Web 应用服务器上的目录名和文件名的工具 。
它是如何工作的
Dirbuster是一种履带式和粗暴式的混合物; 它遵循它找到的页面中的所有链接,但也为可能的文件尝试不同的名称。这些名称可能位于与我们使用的文件类似的文件中,也可能由Dirbuster使用Pure Brute Force选项自动生成,并设置字符集以及生成的单词的最小和最大长度。
为确定文件是否存在,DirBuster使用服务器的响应代码。最常见的响应如下所示:
200 ok:文件存在
404找不到404文件:服务器中不存在该文件
301 301永久移动:这是重定向到给定的URL
401 Unauthorized:访问此文件需要身份验证
403 Forbidden:请求有效但服务器拒绝响应
注:使用 Dirbuster需要保证电脑上有java环境
DirB ...
渗透测试-信息收集(子域名扫描)
前言
本文渗透测试仅供学习记录,未经允许的渗透测试是违法行为
子域收集
子域收集有很多方式
例如:
一、谷歌语法
通过特定站点范围查询子域:site:qq.com
二、在线爆破
在线枚举爆破:http://phpinfo.me/domain/
三、证书搜索
基于SSL证书查询子域:https://crt.sh/
四、DNS搜索
基于DNS记录查询子域:https://dns.bufferover.run/dns?q=(跟域名)
本文主要介绍使用Sublist3r工具
本工具需要在kali上安装
安装步骤如下:
使用github下载相应的子域发现工具git clone https://github.com/aboul3la/Sublist3r一、 安装模块sudo pip install -r requirements.txt二、 枚举目标子域python sublist3r.py -d 测试王者三、枚举子域并且显示开放80和443端口的子域python sublist3r.py -d 测试网站名 -p 80,443四、枚举目标子域并保存Pytho ...
渗透测试-信息收集(端口扫描)
前言
本文渗透测试仅供学习记录,未经允许的渗透测试是违法行为
本章大部分操作基于kali
在vm上安装kali可以参考下文
https://blog.csdn.net/qq_40950957/article/details/80468030
端口扫描–Nmap
Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。
参数扫描
在kali中自带了nmap
以下是一些参数
-sS : TCP SYN扫描
-p: 指定端口号扫描
-v: 显示扫描过程
-F: 快速扫描
-Pn: 禁止pi ...
python的re模块使用
前言
python中的re模块是使用正则匹配式的模块,正则语法是基本每个语言都有的一种字符串匹配式,使用范围很广,但是语法比较难懂
基本语法如下:
匹配单个字符
代码
功能
.
匹配任意1个字符(除了\n)
[ ]
匹配[ ]中列举的字符
\d
匹配数字,即0-9
\D
匹配非数字,即不是数字
\s
匹配空白,即 空格,tab键
\S
匹配非空白
\w
匹配非特殊字符,即a-z、A-Z、0-9、_、汉字
\W
匹配特殊字符,即非字母、非数字、非汉字
匹配多个字符
代码
功能
*
匹配前一个字符出现0次或者无限次,即可有可无
+
匹配前一个字符出现1次或者无限次,即至少有1次
?
匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m}
匹配前一个字符出现m次
{m,n}
匹配前一个字符出现从m到n次
匹配开头
代码
功能
^
匹配字符串开头
$
匹配字符串结尾
匹配分组相关正则表达式
代码
功能
|
匹配左右任意一个表达式
(ab)
将括号中字符作为一个分 ...
爬虫前知
前言
HTTP:超文本传输协议,默认端口号是80
超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件
传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443
SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
可以打开浏览器访问一个url,右键检查,点击net work,点选一个url,查看http协议的形式
注:HTTPS比HTTP更安全,但是性能更低
爬虫特别关注的请求头和响应头
特别关注的请求头字段
http请求的形式如上图所示,爬虫特别关注以下几个请求头字段
Content-Type
Host (主机和端口号)
Connection (链接类型)
Upgrade-Insecure-Requests (升级为HTTPS请求)
User-Agent (浏览器名称)
Referer (页面跳转处)
Cookie (Cookie)
加粗的请求头为常用请求头
特别关注的响应头字段
http响应的形式如上图所示,爬虫只关注一个 ...
大数据环境搭建-比赛版
前言
之前已经写过大数据搭建的蛮多文章了,这次为了比赛,再写一篇
系统配置
节点信息
ip
系统
master
192.168.128.100
centos7
slave1
192.168.128.101
centos7
slave2
192.168.128.102
centos7
安装包环境如下
hadoop
2.6.0
zookeeper
3.4.5
sqoop
1.4.7
spark
2.0.0
scala
2.11.11
java
1.8.0_191
hbase
1.2.0
storm
1.0.4
hive
1.1.0
flume
1.6.0
kafka
2.11-1.0.0
本文不写前置配置
例如什么静态网络配置,ssh免密登录,安装java,修改映射之类的,有需求看之前的文章,之前写的很详细,如果有错误请联系我
环境变量配置在/root/.bash_profile
所以安装包放置/usr/local/src/software下
安装目录在/usr/local/src
环境变量信息如下
#ja ...