欧博官网

全国咨询热线

400-123-4567

您的位置: 首页 > 工程案例 > 案例展示二
推荐产品
联系我们

欧博官网

地址:吉林省吉林市鄞州区路费大楼71号
手机:19639721926

咨询热线400-123-4567

缺失数据别怕!这里有份强大的初学者指南:欧博官网

发布时间:2021-11-25 01:34:02人气:
本文摘要:全文共4898字,预计学习时长10分钟实际上,数据科学家80%到90%的事情是数据清理,而这项事情的目的是为了执行其余10%的机械学习任务。

全文共4898字,预计学习时长10分钟实际上,数据科学家80%到90%的事情是数据清理,而这项事情的目的是为了执行其余10%的机械学习任务。没有什么比完成数据集分析后的收获更让人兴奋的了。

如何淘汰清理数据的时间?如作甚至关重要的10%的事情保留精神?凭据许多专业人士的履历,对数据清理涉及的历程有充实的认知总是好的。相识流程、流程的重要性以及流程中可使用的技巧,将淘汰执行数据清理任务所需的时间。

良好数据的重要性好的数据被界说为准确、完整、切合、一致、实时、奇特且有效的数据。机械学习算法依赖于“好数据”来构建模型,执行和归纳综合性能。对于实际数据,当意识到ML算法不起作用或者ML算法的性能无法在更大的数据集中推广时,通常会发现数据问题。在第一次数据科学的历程中找到所有数据问题险些是不行能的。

需要做好以下准备:数据清理的迭代历程 - >数据建模 - >性能调整。在迭代历程中,通过从一开始就获得基本面,可以大幅缩短时间。在统计学中,经常会发现有人将数据分析历程比作约会。在最初的约会中,相识朋友(即数据)至关重要。

是否有可能在后期泛起的生意业务破坏者?这些生意业务破坏者是你一开始就要抓住的,它们将使数据有失偏颇。数据中最大的生意业务破坏者之一是“数据缺失”。相识缺失的数据缺失的数据可以有种种形状和巨细。它们可能类似于下面第1行的数据,其中只有胰岛素栏有所缺失。

它们也可以是第2行中丢失的许多栏数据。它们还可以是第3行中包罗0的许多栏数据。需要知道它们有许多变体。

可视化每列数据只能到此为止。在箱线图中可视化每栏数据以查找异常值。或者使用热图来可视化数据,突出显示缺失的数据。吴军的糖尿病缺失数据在Python中:import seaborn as sbsb.heatmap(df.isnull(),cbar=False)如何对缺失数据举行分类?图片泉源:pexels.com/@black-ice-551383在可视化缺失数据后,第一件事是对丢失的数据举行分类。

有三类缺失数据:完全缺失随机(MCAR),缺失随机(MAR),缺失不随机(MNAR):MCAR—缺失值完全随机丢失。数据点丢失的倾向与其假设值和其他变量的值无关。

MAR—由于某些视察到的数据而缺少缺失值。数据点丢失的倾向与丢失的数据无关,但它与一些视察到的数据有关。MNAR—缺失的值不是随机丢失的,而是有原因的。通常,原因在于缺失值取决于假设值,或者取决于另一个变量的值。

缺失的数据是随机的吗?如果数据随机丢失,则将以差别于随机丢失的数据的方式来处置惩罚数据。使用Little’sMCAR测试来确定数据是否随机丢失。

Little’sMCAR的原假设:数据完全随机缺失。凭据测试效果,你可以拒绝或接受此原假设。

欧搏

在SPSS中: 使用Analyze - > Missing Value Analysis - > EM在R中,使用BaylorEdPsych荟萃中的LittleMCAR()函数。传送门:https://rdrr.io/cran/BaylorEdPsych/man/LittleMCAR.html?source=post_page---------------------------LittleMCAR(df)#df是不凌驾50个变量的数据帧解释:如果sig或统计显著性大于0.05,则没有统计学意义。这意味着要接受“数据完全随机缺失”的原假设。

如果是MAR和MCAR,则删除。反之,估算。删除方法列表删除—此方法是指移除包罗一个或多个缺失数据的整个数据记载。

缺点—统计能力依赖于高样本量。在较小的数据集中,列表删除可以淘汰样本量。除非确定该记载绝对不是MNAR,否则此方法可能会给数据集引入偏差。

在Python中:nMat <-cov(diabetes_data,use =“complete.obs”)成对删除—在分析基础上,使用变量对之间的相关性来最大化可用数据的方法。在Python中:nMat <-cov(diabetes_data,use =“pairwise.complete.obs”)缺点—由于差别数量的视察效果对模型的差别部门有孝敬,难以解释模型的各个部门。

删除变量—这一方法是指,在数据缺少60%的情况下删除变量。diabetes_data.drop('column_name',axis = 1,inplace = True)缺点—难以知晓抛弃的变量如何影响数据集中的其他变量。如果不能删除,那么估算则是另一种方法。

缺失数据插补的方法图片泉源:pexels.com/@markusspiske分类变量—这些变量具有牢固数量的可能值。这些变量组成的一个例子是性别=男性,女性,不适用。

对于分类变量,有 3种方法来估算数据。· 从缺失值中建立新级别· 使用逻辑回归、KNN等预测模型来预计数据· 使用多个插补一连变量—这些变量具有位于某个区间的实际值。

欧博官网

其中的一个例子是支付金额= 0到无穷大。对于一连变量,可以使用3种方法来估算数据。· 使用均值、中位数、模式· 使用线性回归,KNN等预测模型来估算数据· 使用多个插补从缺失的值中建立新的级别如果没有大量缺失值,那么为缺失值建立新级此外分类变量是处置惩罚缺失值的好方法。在Python中:import pandas as pd diabetes=pd.read_csv('data/diabetes.csv')diabetes["Gender"].fillna("No Gender", inplace=diabetes平均值、中位数、模式该方法涉及使用平均值,中位数或模式来估算缺失的数据。

这种方法的优点是它很容易实现。但同时也有许多缺点。

在Python中:df.Column_Name.fillna(df.Column_Name.mean(),inplace = True)df.Column_Name.fillna(df.Column_Name.median(),inplace = True)df.Column_Name.fillna(df.Column_Name.mode(),inplace = True)平均值、中位数、模式估算的缺点—它淘汰了估算变量的方差,也缩小了尺度误差,这使大多数假设磨练和置信区间的盘算无效。它忽略了变量之间的相关性,可能过分表现和低估某些数据。逻辑回归以一个统计模型为例,它使用逻辑函数来建模因变量。

因变量是二进制因变量,其中两个值标志为“0”和“1”。逻辑函数是一个S函数,其中输入是对数几率,输出是概率。(例如:Y:通过考试的概率,X:学习时间.S函数的图形如下图)图片来自维基百科:逻辑回归在Python中:from sklearn.pipeline import Pipelinefrom sklearn.preprocessing import Imputerfrom sklearn.linear_model import LogisticRegressionimp=Imputer(missing_values="NaN", strategy="mean", axis=0)logmodel = LogisticRegression()steps=[('imputation',imp),('logistic_regression',logmodel)]pipeline=Pipeline(steps)X_train, X_test, Y_train, Y_test=train_test_split(X, y, test_size=0.3,random_state=42)pipeline.fit(X_train, Y_train)y_pred=pipeline.predict(X_test)pipeline.score(X_test, Y_test)逻辑回归的缺点 - 由于夸大其预测准确性的事实,容易过分自信或过分拟合。

- 当存在多个或非线性决议界限时,往往体现不佳。线性回归以一个统计模型为例,它使用线性预测函数来模拟因变量。因变量y和自变量x之间的关系是线性的。在这种情况下,系数是线的斜率。

点到线形成的距离标志为(绿色)是误差项。图片来自维基百科:线性回归图片来自维基百科:线性回归在Python中:from sklearn.linear_model import LinearModelfrom sklearn.preprocessing import Imputerfrom sklearn.pipeline import Pipelineimp=Imputer(missing_values="NaN", strategy="mean", axis=0)linmodel = LinearModel()steps=[('imputation',imp),('linear_regression',linmodel)]pipeline=Pipeline(steps)X_train, X_test, Y_train, Y_test=train_test_split(X, y, test_size=0.3,random_state=42)pipeline.fit(X_train, Y_train)y_pred=pipeline.predict(X_test)pipeline.score(X_test, Y_test线性回归的缺点 - 尺度错误缩小 - x和y之间需具有线性关系KNN(K-近邻算法)这是一种广泛用于缺失数据插补的模型。它被广泛使用的原因是它可以处置惩罚一连数据和分类数据。

此模型是一种非参数方法,可将数据分类到最近的重度加权邻人。用于一连变量的距离是欧几里德,对于分类数据,它可以是汉明距离(Hamming Distance)。在下面的例子中,绿色圆圈是Y.它和红色三角形划分到一起而不是蓝色方块,因为它四周有两个红色三角形。

图片来自维基百科:KNNfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.preprocessing import Imputerfrom sklearn.pipeline import Pipelinek_range=range(1,26) for k in k_range: imp=Imputer(missing_values=”NaN”,strategy=”mean”, axis=0) knn=KNeighborsClassifier(n_neighbors=k) steps=[(‘imputation’,imp),(‘K-NearestNeighbor’,knn)] pipeline=Pipeline(steps) X_train, X_test, Y_train,Y_test=train_test_split(X, y, test_size=0.3, random_state=42) pipeline.fit(X_train, Y_train) y_pred=pipeline.predict(X_test) pipeline.score(X_test, Y_test)KNN的缺点 - 在较大的数据集上泯灭时间长 - 在高维数据上,精度可能会严重降低多重插补多个插补或MICE算法通过运行多个回归模型来事情,而且每个缺失值均凭据视察到(非缺失)的值有条件地建模。多次估算的强大之处在于它可估算一连,二进制,无序分类和有序分类数据的混淆。

多重插补的步骤是:· 用鼠标输入数据()· 使用with()构建模型· 使用pool()搜集所有模型的效果 在R中,MICE集提供多个插补。library(mice)imp<-mice(diabetes, method="norm.predict", m=1)data_imp<-complete(imp)imp<-mice(diabetes, m=5)fit<-with(data=imp, lm(y~x+z))combine<-pool(fit)MICE的缺点· 不像其他估算方法一样具有理论依据· 数据的庞大性处置惩罚缺失的数据是数据科学家事情的最重要部门之一。算法中拥有洁净的数据意味着你的机械学习算法的性能会更好。在数据清理历程开始时,区分MCAR,MAR,MNAR是必不行少的。

虽然有差别的方法来处置惩罚缺失的数据插补,但KNN和MICE仍然是处置惩罚一连和分类数据的最受接待的方法。留言 点赞 关注我们一起分享AI学习与生长的干货接待关注全平台AI垂类自媒体 “读芯术”。


本文关键词:欧搏,欧博官网

本文来源:欧搏-www.mainhaxua.net

推荐资讯