异常检测机器学习方法

一、孤立森林(Isolation Forest)算法

 算法见C:\Program Files\Anaconda3\Lib\site-packages\sklearn\ensemble\iforest.py:

#n_estimators : int, optional (default=100) 森林中树的颗数
#max_samples : int or float, optional (default=”auto”) 每棵树的样本个数或比例
#contamination : float in (0., 0.5), optional (default=0.1) 关键参数,用户设置样本中异常点的比例
#max_features : int or float, optional (default=1.0) 每棵树的特征个数或比例

class IsolationForest(BaseBagging, OutlierMixin):
    def __init__(self, n_estimators=100, max_samples="auto", contamination="legacy",
                 max_features=1., bootstrap=False, n_jobs=None, behaviour='old',
                 random_state=None, verbose=0):

    def _set_oob_score(self, X, y):
    
    #无监督拟合
    def fit(self, X, y=None, sample_weight=None):
    
    #返回值:+1 表示正常样本,-1表示异常样本。
    def predict(self, X):

    #返回样本的异常评分。值越小表示越有可能是异常样本。
    def decision_function(self, X):

    def score_samples(self, X):

示例:

from sklearn.ensemble import IsolationForest
#X为样本集
algorithm = IsolationForest(contamination=0.05, random_state=42)
y_pred = algorithm.fit(X).predict(X)

二、DBSCAN密度聚类

算法见C:\Program Files\Anaconda3\Lib\site-packages\sklearn\cluster\dbscan.py:

def dbscan(X, eps=0.5, min_samples=5, metric='minkowski', metric_params=None,
           algorithm='auto', leaf_size=30, p=2, sample_weight=None,
           n_jobs=None):

class DBSCAN(BaseEstimator, ClusterMixin):

    def __init__(self, eps=0.5, min_samples=5, metric='euclidean',
                 metric_params=None, algorithm='auto', leaf_size=30, p=None,
                 n_jobs=None):
    #拟合
    def fit(self, X, y=None, sample_weight=None):
        ...
        clust = dbscan(X, sample_weight=sample_weight,**self.get_params())

    #拟合并返回标签
    def fit_predict(self, X, y=None, sample_weight=None):
        self.fit(X, sample_weight=sample_weight)
        return self.labels_

示例:

from sklearn.cluster import DBSCAN
#X为样本集
clustering = DBSCAN(eps=0.3, min_samples=2)
y_pred = clustering.fit_predict(X)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值