异常检测(Anomaly Detection)简介
异常检测顾名思义就是检测出与正常数据不同的数据,检测给定的新数据是否属于这组数据集。 1. 异常检测的任务类型无监督:训练集无标签有监督:训练集的正例和反例均有标签半监督:在训练集中只有正例,异常实例不参与训练 2. 异常检测的难点数据量少:异常检测任务通常情况下负样本(abnormal)较少,0、1两类样本严重不均衡,有时候依赖于人工标签。噪音:异常和噪音有时容易混淆,如两幅图中的A点识别难度就不一样。 3. 异常检测方法简介3.1 基于统计学的方法通常做法是假设样本服从高斯分布,计算p(x)=ϵ作为判定正常和异常的阈值。 3.2 线性模型在线性模型中,有2个假设:①不同维度的变量近似线性相关,可以通过一个相关系数矩阵进行衡量。②数据是镶嵌在低维子空间中的,线性建模是为了找到某个低维子空间使异常点区别于正常点。常用模型的包括:最小二乘法——最小化目标函数得到直线方程,计算每个变量与回归方程之间的残差,可通过3σ 法则判断异常值.PCA——将样本的协方差矩阵特征值分解后,特征值是样本投影到轴上对应的方差,特征值越小,投影后样本点分布越集中,异常点容易偏离,以此作为判定异...
特征工程_1
特征工程就是将原始数据空间变换到新的特征空间,在新的特征空间中,模型能够更好地学习数据中的规律。特征的选择和构造,就是人为地帮助模型学习到原本很难学好的东西,从而使模型达到更好的效果。 1. 根据现实情况构造特征1.1 各点与特定点的距离 1 2 3 4 5 df['x_dis'] = (df['x'] - 6165599).abs() df['y_dis'] = (df['y'] - 5202660).abs() df['base_dis] = (df['y_dis']**2))**0.5 + ((df['x_dis']**2) del df['x_dis'],df['y_dis'] df['base_dis_diff'].head() 1.2 将时间划分为白天与黑夜 1 2 3 df['day_night'] = 0 df.loc[(df['hour'] >...
地理空间数据EDA数据探索性分析
EDA——数据探索性分析,是通过了解数据集的基本情况、变量间的相互关系以及变量与预测值之间的关系,为后期特征工程和建立模型做铺垫。本文以智慧海洋建设竞赛为例进行演示。 1. 总体了解数据1.1 查看样本个数和原始特征维度 1 data_train.shape 1 data_test.shape 1 data_train.columns #查看列名 1 2 3 pd.set_option('display.max_info_rows',2699639) #提高非缺失值检查的行数上线 #pd.options.display.max_info_rows = 2699639 data_train.info() 1 2 #查看count 非空值数、std 标准差、(25%、50%、75%)分位数等基本情况 data_train.describe([0.01,0.025,0.05,0.5,0.75,0.9,0.99]) 1.2 查看缺失值和唯一值等 1 data_...
地理数据分析常用工具
在地理空间数据分析中,常用一些模块进行地理数据分析、特征提取及可视化,包括shapely、geopandas、folium、kepler.gl、geohash等工具。 1. shapelyshapely是基于笛卡尔坐标的几何对象操作和分析Python库,底层基于GEOS和JTS拓扑运算库。 1.1 Point对象 1 2 3 4 5 6 7 8 9 10 11 from shapely.geometry import Point point1 = Point(1, 1) point2 = Point(5, 5) point3 = Point(10, 10) #点的可视化 geo.GeometryCollection([point1,point2,point3]) #Point转为numpy数组 print(np.array(point)) 1.2 LineString对象 1 2 3 # 创建LineString对象 line1 = geo.LineString([(0,0),(2,-2.2),(3,3.3),(4,-4.4),(5,-5.5...
LightGBM调参_1
#1简单列举一下日常调参过程中常用的几种方法,具体的原理下次补上。 1. 经验法: 往两个方向调: 1.提高准确率:max_depth, num_leaves, learning_rate 2.降低过拟合:max_bin, min_data_in_leaf;L1, L2正则化;数据抽样, 列采样 1.使用较小的num_leaves,max_depth和max_bin,降低复杂度。 2.使用min_data_in_leaf和min_sum_hessian_in_leaf,该值越大,模型的学习越保守。 3.设置bagging_freq和bagging_fraction使用bagging。 4.设置feature_fraction进行特征采样。 5.使用lambda_l1,lambda_l2和min_gain_to_split正则化。 2. 贪心调参:先调整对模型影响最大的参数,再调整对模型影响次大的参数,缺点是容易调成局部最优,需要多次调试。日常调参顺序如下: ① num_leaves, max_depth ② min_data_in_leaf, min_child_weight ...
Tsfresh——自动化特征工程工具
改进模型的潜在途径之一是:生成更多的潜在特征,输入更多的样本。 Tsfresh是处理时间序列数据的特征工程工具,能够自动计算大量时间序列特征,如平均值、最大值、峰度等。之后,可以使用这些特征集构建机器学习模型。 本文以天池-心跳信号分类预测为例,演示tsfresh工具的用法。 使用示例1. 合并train和test数据合并数据集,对整体数据做统一的特征工程。(注意需要为test数据添加label列,值为-1,方便后续操作) 1 2 data_test['label'] = -1 all_data = pd.concat((data_train, data_test)).reset_index(drop = True) 2. 对原特征一列拆成多列,并为每条数据添加时间特征time 1 all_heatbeat_df = all_data['heartbeat_signals'].str.split(',', expand = True).stack() 3. Index处理 1 ...
特征选择_1
在数据预处理过程中,特征选择是一个重要的过程,选择出重要的特征可以加快模型训练速度。通常可以从以下两方面来选择特征: 1.特征是否发散(对于样本区分作用的大小)2.特征与标签的相关性 特征选择的方法主要有3种: 1.Filter Method:先根据统计量设置阈值选择特征,之后再训练模型。2.Wrapper Method:把最终将要使用的模型的性能作为特征子集的评价标准,多次训练模型选择有利于模型性能的特征子集。3.Embedding Method:将特征选择过程与模型训练过程融为一体,在模型训练的过程中自动进行特征选择。 常用sklearn中的feature_selection库来进行特征选择。 1. Fliter 过滤法: Fliter的优点在于只训练一次模型,速度快。但是选择与标签相关性最强的特征子集不一定是最佳特征,甚至可能对结果负优化。 1.1 方差选择法计算各个特征的方差,设置阈值,选择方差大于阈值的特征。 1 2 3 from sklearn.feature_selection import VarianceThreshold #参数thr...
模型融合_1
Kaggle和天池比赛中常用提高成绩的三种方法: 1.特征工程2.模型调参3.模型融合模型融合主要有以下几种方式: 简单加权融合: ①回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);②分类:投票(Voting)③综合:排序融合(Rank averaging),log融合 stacking/blending: 构建多层模型,把初级学习器的输出当作下一层的输入。 boosting/bagging(在xgboost,Adaboost,GBDT中已经用到): 多个分类器的整合 部分代码案例:1.简单加权平均 1 2 3 4 5 def Weighted_method(test_pre1,test_pre2,test_pre3,w=[1/3,1/3,1/3]): Weighted_result = w[0]*pd.Series(test_pre1)+w[1]*pd.Series(test_pre2)+w[2]*pd.Series(test_pre3) return W...
Pandas的一些常用操作_1
今天介绍几个常用的Pandas操作。 1 2 3 import numpy as np import pandas as pd df = pd.read_csv('./economics.csv') 1.DataFrame to markdown/latexdataframe可以转换为许多常用格式,如csv,excel,sql,json,html,latex等等,这里以markdown和latex为例。 1 2 print(df.to_markdown()) print(df.to_latex()) or 1 2 df.to_markdown('table.md') df.to_latex('table.tex') 也可以自定义输出latex格式,如表格宽度。 1 df.to_latex('tb.tex',column_format='lp{1.8cm}p{1.8cm}p{1.8cm}p{1.8cm}p{1.8cm}p{...
Pandas的一些常用操作_2
今天继续介绍几个常用的Pandas操作。 1 2 3 import numpy as np import pandas as pd df = pd.read_csv('./economics.csv') 1.DataFrame的apply方法 1 df[['psavert','uempmed']].apply(lambda x:x.max()-x.min(), axis=1)#axis=1 将函数应用到列 1 df.applymap(lambda x:x*10)#applymap 将函数应用到每个元素 2.DataFrame的分组 1 df.groupby('unemploy')['psavert'].median()#样例:df.groupby(分组依据)[数据来源].使用操作 1 2 condition = df.unemploy > df.unemploy.mean()#使用condition定...