数据挖掘
记录数据挖掘过程中遇到的问题及解决方法
温蒂先生
不积跬步,无以至千里;不积小流,无以成江海~
展开
-
收入公平性评估方法
一般认为,基尼系数小于 0.2 时,显示居民收入分配过于平均,0.2—0.3 之间时较为平均,0.3—0.4 之间时比较合理,0.4—0.5 时差距过大,大于 0.5 时差距悬殊。基尼系数是根据洛伦茨曲线,即收入分布曲线计算的。对角线上的斜线是绝对平均的收入分布线,垂直纵线是绝对不平均的收入分布线,斜线和垂直纵线之间的曲线是通常见到的实际收入分布曲线。这里Wi 和Pi是指将调查户按收入由低到高进行排序,计算第 i 户代表的人口的收入占总收入比重(Wi)和第 i 户所代表的人口占总人口比重 (Pi)。原创 2024-06-19 11:44:42 · 351 阅读 · 0 评论 -
两个系统中的数据匹配方法
初始化:创建一个二维数组 dp,其大小为 (len(X) + 1) x (len(Y) + 1),其中 X 和 Y 是两个序列。余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。= Y[j-1],则 dp[i][j] = max(dp[i-1][j], dp[i][j-1])。如果 X[i-1] == Y[j-1],则 dp[i][j] = dp[i-1][j-1] + 1。结果:dp[len(X)][len(Y)] 就是两个序列的最长公共子序列的长度。原创 2024-05-11 17:30:52 · 439 阅读 · 0 评论 -
熵值法的逻辑及代码实现
信息量越小,不确定性就越大,熵也越大。根据熵的特性,我们可以通过计算熵值来判断一个方案的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大。因此,可根据各项指标的变异程度,利用信息熵这个工具,计算出各个指标的权重,为多指标综合评价提供依据。由于熵值法计算采用的是各个方案某一指标占同一指标值总和的比值,因此不存在量纲的影响,不需要进行标准化处理,若数据中有负数,就需要对数据进行非负化处理!指标值的差距越大,则该指标在综合评价中所起的作用越大;原创 2024-04-19 16:42:49 · 365 阅读 · 0 评论 -
基于K-prototype算法聚类
k-prototype聚类是一种用于混合数据类型聚类的算法,由Jain和Dubes在1988年提出。它主要用于同时包含连续属性和离散属性的数据集。k-prototype算法可以看作是k-means算法的扩展,它将k-means算法的思想应用于混合数据类型,通过为连续属性和离散属性分别定义距离函数来处理这两种不同类型的数据。原创 2024-04-19 16:26:52 · 1162 阅读 · 0 评论 -
监督算法建模前数据质量检查
二、#绘制记录数和违约率的柱状图,以函数的形式呈现,方便后面使用(主要用来分析非数值型字段)三、绘制记录数和违约率的柱状图,以函数的形式呈现,方便后面使用(主要用来分析数值型字段)四、条形图画法1-离散型变量:反映在某个自变量的取值范围下,目标变量发生的概率。五、条形图画法2-连续型变量:反映在某个自变量的取值范围下,目标变量发生的概率。一、定义缺失值检测函数。原创 2024-04-19 16:15:18 · 174 阅读 · 0 评论 -
常用的矩阵相关的计算(python代码)
五、找到list中第一个不为0的数。六、求一个数组中不为0的数的均值。七、给lst里面为0的值做补充。一、计算两个数列的相对误差。原创 2024-04-19 15:35:52 · 161 阅读 · 0 评论 -
python 四舍五入的问题
在调用python的round 函数时,出现了令我意外的结果,具体如下图所示:纠正方法如下:参考博客:https://www.cnblogs.com/ShaYeBlog/p/7646649.html原创 2021-02-21 00:02:29 · 131 阅读 · 0 评论 -
python 解析XML文件,并将解析后的数据存放到指定的目录下
-- XML文件的结果为<Message> <Head> <BizMsgID>xxxx</BizMsgID></Head> <Data> <TABLE_1 列名1="B4" 列名2="63" 列名3="2022-02-09T15:29:53" /> <TABLE_2 列名1="B4" 列名2="65" 列名3="xxx" 列名4="1" /> <TABLE_3原创 2022-04-23 18:04:06 · 731 阅读 · 0 评论 -
python 获取与当前系统相关时间的方法
python 获取与当前系统相关时间的方法import datetimefrom dateutil.relativedelta import relativedeltanow_time = datetime.datetime.now()## 系统当天日期this_day = str(now_time.strftime('%Y%m%d'))## 系统日期减5天last_5days = (now_time - relativedelta(days = 5)).strftime('%Y%m%d')原创 2021-01-13 15:20:25 · 338 阅读 · 3 评论 -
Stacking算法理解及python实现
stacking:stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。stacking的过程有一张图非常经典,如下:具体训练过程:划分training data为K折,为各个模型的训练打下基础;针对各个模型RF、ET、GBDT、XGB,, SVM分别进行K次训练,每次训练保留K分之一的样本用作训练时的检验,训练完成后对testing data进行预测原创 2021-03-31 09:10:09 · 3810 阅读 · 5 评论 -
基于聚类的异常值检测算法依据及python实现
假设数据集D被聚类算法划分到k个类C = {C1 , C2 , …CK},对象p 的离群因子of3 §定义为 与所有类间距的加权平均值:根据上述定义,进行基于聚类的离群点诊断过程如下:第一步:对数据集采用合适的聚类算法进行聚类,得到聚类结果 。第二步:计算数据集D中所有对象p 的离群因子of3 § ,及平均值 avg_of和标准差std_of ,满足条件的对象判定为离群点,其中 beta为设定的阈值参数。python 过程实现如下。#基于聚类的离群因子计算## df_res : 数据特征原创 2021-04-01 17:59:37 · 3899 阅读 · 4 评论 -
python 实现K-protopyte中代码的研究心得
最近研究了一位博主用python的代码,让我受益匪浅,然而在研究的过程中我也有了一些自己的想法, 首先说一下Counter()方法举个例子Counter({‘abcd’}), 运行结果为: Counter({‘abcd’}:1)Counter(‘abcd’), 运行结果为: Counter({‘a’ : 1 , ‘b’ : 1 , ‘c’:1 , ‘d’:1} )因此我大胆认为, 在迭...原创 2019-04-25 17:51:02 · 499 阅读 · 0 评论 -
python 计算变量的IV值
在机器学习的二分类问题中,IV值(Information Value)主要用来对输入变量进行编码和预测能力评估。特征变量IV值的大小即表示该变量预测能力的强弱,在面对大量变量的情况下,可计算各个变量的IV值,取IV值大于某个固定值的变量参与到模型中去,这样不仅保留了特征携带的信息量。且提高了模型效率,此外有利于给客户解释和汇报。2. IV值计算(python 代码如下) #######...原创 2019-07-09 16:58:16 · 6198 阅读 · 1 评论 -
python 实现PCA变换
在机器学习中,指标不全面会无法保证模型的准确性,但指标太多又容易造成指标维度灾难。主成分分析的主要思想1) 进行特征降维变换,不能完全地表示原有的对象,能量总会有损失。2) 希望找到一种能量最为集中的变换方法使得损失最小主成分分析就是试图在力保数据信息丢失最小的原则下,对这种多变量的数据进行最佳综合简化,也就是,对高维变量空间进行降维。python 代码如下:## Original_da...原创 2019-07-09 17:11:21 · 2004 阅读 · 1 评论 -
python 实现信息熵、条件熵、信息增益、基尼系数
import pandas as pdimport numpy as npimport math## 计算信息熵def getEntropy(s): # 找到各个不同取值出现的次数 if not isinstance(s, pd.core.series.Series): s = pd.Series(s) prt_ary = pd.groupby(s ...原创 2019-07-09 17:18:23 · 4878 阅读 · 4 评论 -
K-prototype算法效率的提升
K-prototype是处理混合属性聚类的典型算法。继承Kmean算法和Kmode算法的思想。并且加入了描述数据簇的原型和混合属性数据之间的相异度计算公式。虽然k-prototype算法对于混合属性的聚类效果很好,但是在样本较大的时候,效率低下。基于效率低下这个问题。我尝试用one-hot编码处理分类属性,对数值型变量进行标准化,然后用K-means聚类算法,可达到与k_prototype相同的聚...原创 2019-08-06 09:07:57 · 1528 阅读 · 1 评论 -
python 中把DataFrame的某一列空值用另一列对应行的取值做补充
把df中a列的空值用b列的值做补充df['a'][df['a'].isnull()] = dfdf['b'][df['a'].isnull()]原创 2020-03-20 15:00:10 · 9703 阅读 · 9 评论 -
python 计算DataFrame的数值变量及离散变量,并标准化
## 区分DataFrame里面的数值变量和离散变量## DataFrame_data:待处理的DataFrame类型的变量## O_index:数值型变量列名## C_index:离散型变量的列名def distinguish_Char_Num(DataFrame_data): import copy m, n = DataFrame_data.shape ## 存放数值型变量所在的列 O = [] ## 存放离散型变量所在的列 C = []原创 2021-01-26 14:48:50 · 985 阅读 · 0 评论 -
python对DataFrame自定义描述性统计
在对数据进行分析之前,首先需要对数据的分布状况有一个大致的了解,这为后续的数据预处理工作提供一定的方向。 即将过年啦,现在把我之前在工作写下的小函数总结如下,一来我可以方便后续的时候,二来若能为同行业的人士提供方便,那也是很棒的喔!## 数据的描述性统计def dataDescription(data_df): from collections import OrderedDict dict_result = OrderedDict() ## 最小值 dict_res.原创 2021-02-05 11:23:20 · 1292 阅读 · 1 评论 -
python 用随机森林模型补充数值变量缺失值
对数据建模之前,填补缺失值是必不可少的一步,这里把用随机森林模型快速预测缺失值的方法总结如下,以方便日后的工作。# data_df: DataFrame类型的数据# obj_column:待填补缺失值的列名# missing_other_column:数据中含义空值的其他列########## 缺失值处理def fill_miss_byRandomForest(data_df , obj_column, missing_other_column ): ## 先把有缺失的其他列删除掉mis原创 2021-02-05 11:34:31 · 2047 阅读 · 11 评论 -
python DataFrame缺失值填充2
在做具体的分析工作的时候,训练集中往往既存在分类变量又存在连续变量,且因各种各样的原因,数据中存在大量的缺失,给后期的建模工作带来麻烦,现在把自己打磨好的缺失值补充函数总结在此,为后续的使用提供方便。#### 用均值填充其连续型的缺失值,用众数填充分类变量的缺失值def dataDealNan(df_data): # O_index 连续型变量名称; C_index:离散型变量名称 O_index , C_index = distinguish_Char_Num(df_data)原创 2021-02-05 11:48:18 · 2654 阅读 · 2 评论 -
PYTHON 用三倍四分位间距盖帽法处理异常值
异常值的存在给建模带来极大困扰,在模型构建之前,采用四分位间距法去掉异常值是我们常用的方法,我把代码总结如下:## del_cols:不用盖帽法处理的列名集合## df_data_1:待处理的数据框def OutliersDeal(df_data_1 , del_cols ): import copy df_data = copy.deepcopy(df_data_1.drop(del_cols , axis = 1)) colnames = df_data.columns.原创 2021-02-05 16:28:14 · 1652 阅读 · 1 评论 -
PYTHON 用随机森林算法快速计算指标重要性
指标重要性反映了自变量对因变量的影响幅度,是特征工程的重要工作。####### 快速计算变量重要性## data_df : 待计算原始数据; ## obj_columns:目标变量列名def calIv_by_RandomForestClassifier(data_df , obj_columns): from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier() Y = d原创 2021-02-05 16:33:12 · 1525 阅读 · 0 评论 -
PYTHON 训练集与测试集切分
通常,我们在建模之前会对原始数据进行切分,现对该方法进行打包。#数据切分, 按照7:3切分训练集与测试集 ## data_df:原始数据## object_col:目标变量def data_split(data_df , object_col): from sklearn.model_selection import train_test_split Y = data_df[object_col] X = data_df.drop(object_col原创 2021-02-08 10:34:29 · 1182 阅读 · 1 评论 -
PYTHON对数值变量进行标准化,离散变量标签化
## 建模前的数据准备, 数值变量进行标准化,离散变量标签化## df_data:DataFrame类型数据## label_name:目标变量名称## unique_id:数据集唯一标识def Data_standarder(df_data , label_name, unique_id): ## 得到标注 label = df_data[label_name] ## 去掉标注和ID import copy featu原创 2021-02-08 10:37:30 · 1345 阅读 · 0 评论 -
通用的文本相似度计算
最长公共子序列(Longest Common Subsequence,LCS)是指两个或多个序列中共同出现的一段连续序列,它在多个序列中都保持相同的顺序和连续性。在计算机科学中,寻找最长公共子序列是一个经典问题,通常通过动态规划算法解决。二、Jaccard相似度(Jaccard Similarity)通过计算两个文本向量在空间中的夹角余弦值来评估它们的相似度。通常与词袋模型(BOW)或TF-IDF结合使用。基于集合的交集与并集的比值来计算相似度。适用于短文本或关键词列表的比较。原创 2024-04-19 11:23:40 · 140 阅读 · 0 评论 -
聚类算法概要及相关知识准备
聚类算法相关的基础知识原创 2022-11-02 18:54:37 · 921 阅读 · 0 评论 -
分类算法评估
## Y_pred_result:预测结果所在的数据框## pred_Mark: 预测Mark## real_Mark: 实际Mark def calIndex(Y_pred_result , pred_Mark , real_Mark ): ## 预测为1,实际为1 TP = len(Y_pred_result.loc[(Y_pred_result[pred_Mark] == 1) & (Y_pred_result[real_Mark] == 1)]) # 预原创 2021-01-26 14:51:20 · 335 阅读 · 0 评论 -
回归算法概述
回归算法概述原创 2022-08-02 19:12:43 · 325 阅读 · 0 评论 -
分类算法-下
分类算法原创 2022-08-02 19:01:34 · 289 阅读 · 0 评论 -
分类算法-上
数据挖掘算法原创 2022-08-02 18:53:52 · 213 阅读 · 0 评论 -
数据挖掘之特征工程
人们观测或者收集到的数据样本是高维的,但与学习任务密切相关的也许仅仅是某个低维分布,即高维空间中的一个低维“嵌入”。且在高维情形下出现的数据样本稀疏、距离计算困难等问题是所有机器学习方法共同面临的严重障碍,因此特征工程的目的是最大限度地从原始数据中提取特征以供算法和模型使用。不仅减少过拟合、减少特征数量(降维)、提高模型泛化能力,而且还可以使模型获得更好的解释性,增强对特征和特征值之间的理解,加快模型的训练速度,还会获得更好的性能。数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限,因此工程的..原创 2022-05-03 20:59:45 · 1403 阅读 · 0 评论 -
数据预处理-下
1分类型变量变换类型的数值编码当训练模型时,数据集中的字段包含符号字段(分类字段)时,而且该字段也需要被用来参与建模,并且该模型算法需要使用所有记录的数值来进行算法计算。这种情况下就对符号字段提出了挑战。一般的做法是将该符号字段编码为一组数值字段,该组数值字段的个数等于该符号字段的分类个数,一个分类对应一个数值字段。对于该符号字段的每一个取值,对应于该值的那个数值字段的值均被设置为1,其他数值字段的值均被设置为0。这组数值字段(衍生字段)被称为indicator(指示)字段,或者dummy(虚拟)原创 2022-05-03 18:33:07 · 427 阅读 · 0 评论 -
数据探索方法
在日常的数据分析工作中,数据探索工作是挖掘建模之前的必要工作,先把离散变量及连续变量的探索方法总结如下,方便日后的工作。#绘制记录数和违约率的曲线图,以函数的形式呈现,方便后面使用(主要用来分析数值型字段)## df_data 数据框## x_col_lst 数值型变量名## y_col 目标变量#df_data = data#x_col_lst = ['MonthlyIncome' , 'NumberOfDependents']#y_col= 'SeriousDlqin2yrs'def p原创 2021-02-08 10:27:35 · 914 阅读 · 1 评论 -
分层抽样后训练模型时的bug修复
根据上一篇博客中的方法对样本进行分层抽样,抽样后反复测试,都觉得没有任问题,但是在训练模型的时候执行:models = LogisticRegression(C = 1000 , tol= 1e-10 , max_iter= 1000)models.fit(data_train_2 , data_Y_2)报错内容为:raise ValueError(“Unknown label type:...原创 2019-04-16 18:07:17 · 570 阅读 · 0 评论 -
python按照某个字段,对目标按照给定的比例进行分层抽样
data : 抽样数据库,df_col_partition : 分层变量名,df_col_mark : 目标标识字段,multiply : 非目标用户与目标用户比例def stratifiedSampling(data,df_col_partition,df_col_mark,multiply):if (data[df_col_mark] == 0).sum() / (data[df_c...原创 2019-04-16 17:57:32 · 3856 阅读 · 1 评论 -
数据预处理-上
数据挖掘数据预处理是对原始数据进行处理,消除噪声和缺失值,建立数据仓库的过程即是数据预处理的过程。数据的重要性在大多数情况下都超过了算法的重要性,质量欠佳的数据很难得到有用的分析结果,因此数据预处理是数据分析过程中至关重要的环节。数据预处理的完整工作应当包括数据清洗、数据集成、数据变换和数据归约处理。在数据挖掘的整个运作过程中,数据预处理是最重要的一个步骤,通常分析人员会花费60%-80%的经历在数据预处理上。数据预处理是否得当,对后续数据挖掘过程是否有效和质量的好坏有重要的影响,只有高质量的数据,才能有原创 2022-05-03 17:33:40 · 724 阅读 · 0 评论 -
大数据探索
数据挖掘数据探索是数据分析过程中必不可少的一个环节,数据探索可以有2个层面的理解:一是利用工具,对数据特征进行查看;二是根据数据特征,感知数据价值,以决定是否需要对各个字段进行探索,或者决定如何加工这些字段以发挥数据分析的价值。在进行数据分析时,需要明确每个字段的数据类型,数据类型代表了数据的业务含义,分为3个类型:区间型数据(Interval)数值型数据的取值都是数值型,其大小代表了对象的状态,比如,年收入的取值,其大小代表了其收入状态。分类型数据(Categorical)分类型数据的每一个原创 2022-05-03 09:58:40 · 1042 阅读 · 0 评论 -
总论:认识大数据挖掘
数据挖掘有人说,大数据是新时代的黄金和石油,掌握了它,就掌握了新经济的命脉;用好了它,就拥有了新战略型资源。数据挖掘,就是从大量的,不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的,人们实事先不知道的,但又是潜在有用的信息和知识的过程。大数据研发的目的是利用大数据技术去发现大数据的价值并将其应用到相关领域,通过大数据的处理相关问题促进社会的发展。数据挖掘的内容集中在几个方面上,即关联、回归、分类、聚类、预测、诊断六个方面。接下来将介绍这六个方面的数据挖掘内容及技术。关联:若两个或多个原创 2022-05-03 09:36:44 · 317 阅读 · 0 评论