DW数据挖掘学习Task2——数据分析

一些基本的函数

pandas库导入(import pandas as pd)

pd.read_csv('data/train.csv', sep=' ');载入数据
pd.head()和pd.tail():分别为读出数据的前5行和后5行
pd.describe():显示数据的统计结果
pd.isnull().sum():查看每列存在的nan情况
pd.sample():实现数据集随机抽样 #sample是pandas库中DataFrame包中函数

要养成看数据集的head()以及shape的习惯,这会让你每一步更放心,导致接下里的连串的错误, 如果对自己的 pandas等操作不放心,建议执行一步看一下,这样会有效的方便你进行理解函数并进行操作
在这里插入图片描述
通过pd.isnull().sum()可以知道哪些类型的数据有缺失值,因为后续需要使用xgb、lgb所以此时需要缺失值进行处理。

nan可视化

missing = train_data.isnull().sum()
missing = missing[missing > 0]#取出缺失值>0的
missing.sort_values(inplace=True)#按照缺失值排序
missing.plot.bar()

在这里插入图片描述

# 可视化看下缺省值
msno.matrix(Train_data.sample(250))
#Train_data表示类型为dataframe的表格,sample(250)表示抽取表格中250个样本。
msno.bar(Train_data.sample(1000))
# 可视化看下缺省值
msno.matrix(Test_data.sample(250))
# 白线越多,代表缺失值越多。
msno.bar(Test_data.sample(1000))

通过info()来熟悉要处理的变量类型
此时要注意那些不是数字类型的变量,使用value_counts()
同时在此时可以看一下倾斜的非常严重的数据,一般来说不会有太大的影响,考虑删除这些变量。

总体分布概况(无界约翰逊分布等)

import scipy.stats as st
y = train_data['price']
plt.figure(1); plt.title('Johnson SU')
sns.distplot(y, kde=False, fit=st.johnsonsu)
plt.figure(2); plt.title('Normal')
sns.distplot(y, kde=False, fit=st.norm)
plt.figure(3); plt.title('Log Normal')
sns.distplot(y, kde=False, fit=st.lognorm)

在这里插入图片描述
此时我们发现预测数据是不符合正态分布的,所以在进行回归之前,它必须进行转换。虽然对数变换做得很好,但最佳拟合是无界约翰逊分布

为什么要用正态分布转换

  1. 首先有些模型的应用条件就是要求你的数据满足正态性分布的,比如说贝叶斯、逻辑回归、KNN、Kmean等涉及到概率分布、参数距离比较等,转换为正态分布,模型条件更充足。但并不意味着你的模型结果会更好一点。

  2. 其次正态分布,数据的泛化性高。因为自然界很多事物的概率密度很大是正态分布,你一个偏态分布(这叫数据不均衡,我这再抛个砖),会导致机器学歪了,然后用这个“歪”模型测试数据会很靠谱吗?

查看skewness and kurtosis(偏度系数和峰度系数

sns.distplot(Train_data['price']);
print("Skewness: %f" % Train_data['price'].skew())
print("Kurtosis: %f" % Train_data['price'].kurt())

峰度&&偏度:https://blog.csdn.net/qq_36523839/article/details/88671873

Train_data.skew(), Train_data.kurt()
 sns.distplot(Train_data.skew(),color 'blue',axlabel 'Skewness')
  sns.distplot(Train_data.kurt(),color 'orange',axlabel 'Kurtness')

skew、kurt说明参考https://www.cnblogs.com/wyy1480/p/10474046.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值