开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 0

tyarist/MachineLearning_Python

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
AnomalyDetection.py 3.84 KB
一键复制 编辑 原始数据 按行查看 历史
lawlite 提交于 2018年09月28日 22:01 +08:00 . Merge branch 'master' into modernize-python2-code
#-*- coding: utf-8 -*-
# Author: Bob
# Date: 2016年12月22日
from __future__ import print_function
import numpy as np
from matplotlib import pyplot as plt
from scipy import io as spio
'''异常检测主运行程序'''
def anomalyDetection_example():
'''加载并显示数据'''
data = spio.loadmat('data1.mat')
X = data['X']
plt = display_2d_data(X, 'bx')
plt.title("origin data")
plt.show()
'''多元高斯分布函数,并可视化拟合的边界'''
mu,sigma2 = estimateGaussian(X) # 参数估计(求均值和方差)
#print (mu,sigma2)
p = multivariateGaussian(X,mu,sigma2) # 多元高斯分布函数
#print (p)
visualizeFit(X,mu,sigma2) # 显示图像
'''选择异常点(在交叉验证CV上训练得到最好的epsilon)'''
Xval = data['Xval']
yval = data['yval'] # y=1代表异常
pval = multivariateGaussian(Xval, mu, sigma2) # 计算CV上的概率密度值
epsilon,F1 = selectThreshold(yval,pval) # 选择最优的epsilon临界值
print(u'在CV上得到的最好的epsilon是:%e'%epsilon)
print(u'对应的F1Score值为:%f'%F1)
outliers = np.where(p<epsilon) # 找到小于临界值的异常点,并作图
plt.plot(X[outliers,0],X[outliers,1],'o',markeredgecolor='r',markerfacecolor='w',markersize=10.)
plt = display_2d_data(X, 'bx')
plt.show()
# 显示二维数据
def display_2d_data(X,marker):
plt.plot(X[:,0],X[:,1],marker)
plt.axis('square')
return plt
# 参数估计函数(就是求均值和方差)
def estimateGaussian(X):
m,n = X.shape
mu = np.zeros((n,1))
sigma2 = np.zeros((n,1))
mu = np.mean(X, axis=0) # axis=0表示列,每列的均值
sigma2 = np.var(X,axis=0) # 求每列的方差
return mu,sigma2
# 多元高斯分布函数
def multivariateGaussian(X,mu,Sigma2):
k = len(mu)
if (Sigma2.shape[0]>1):
Sigma2 = np.diag(Sigma2)
'''多元高斯分布函数'''
X = X-mu
argu = (2*np.pi)**(-k/2)*np.linalg.det(Sigma2)**(-0.5)
p = argu*np.exp(-0.5*np.sum(np.dot(X,np.linalg.inv(Sigma2))*X,axis=1)) # axis表示每行
return p
# 可视化边界
def visualizeFit(X,mu,sigma2):
x = np.arange(0, 36, 0.5) # 0-36,步长0.5
y = np.arange(0, 36, 0.5)
X1,X2 = np.meshgrid(x,y) # 要画等高线,所以meshgird
Z = multivariateGaussian(np.hstack((X1.reshape(-1,1),X2.reshape(-1,1))), mu, sigma2) # 计算对应的高斯分布函数
Z = Z.reshape(X1.shape) # 调整形状
plt.plot(X[:,0],X[:,1],'bx')
if np.sum(np.isinf(Z).astype(float)) == 0: # 如果计算的为无穷,就不用画了
#plt.contourf(X1,X2,Z,10.**np.arange(-20, 0, 3),linewidth=.5)
CS = plt.contour(X1,X2,Z,10.**np.arange(-20, 0, 3),color='black',linewidth=.5) # 画等高线,Z的值在10.**np.arange(-20, 0, 3)
#plt.clabel(CS)
plt.show()
# 选择最优的epsilon,即:使F1Score最大
def selectThreshold(yval,pval):
'''初始化所需变量'''
bestEpsilon = 0.
bestF1 = 0.
F1 = 0.
step = (np.max(pval)-np.min(pval))/1000
'''计算'''
for epsilon in np.arange(np.min(pval),np.max(pval),step):
cvPrecision = pval<epsilon
tp = np.sum((cvPrecision == 1) & (yval == 1).ravel()).astype(float) # sum求和是int型的,需要转为float
fp = np.sum((cvPrecision == 1) & (yval == 0).ravel()).astype(float)
fn = np.sum((cvPrecision == 0) & (yval == 1).ravel()).astype(float)
precision = tp/(tp+fp) # 精准度
recision = tp/(tp+fn) # 召回率
F1 = (2*precision*recision)/(precision+recision) # F1Score计算公式
if F1 > bestF1: # 修改最优的F1 Score
bestF1 = F1
bestEpsilon = epsilon
return bestEpsilon,bestF1
if __name__ == '__main__':
anomalyDetection_example()
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

机器学习算法python实现
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/nicely/MachineLearning_Python.git
git@gitee.com:nicely/MachineLearning_Python.git
nicely
MachineLearning_Python
MachineLearning_Python
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /