【天池学习赛】工业蒸汽量预测 - 【1】赛题理解 和【2】数据探索

工业蒸汽预测

  • 【1】赛题理解
  • 【2】数据探索


【1】赛题理解

1、下载数据,查看数据集,得到target
2、评估指标为:MSE(均方误差)

from sklearn.metrics import mean_squared_error
y_test = [1,2,3]
y_predict = [1.2, 2.1, 3.2]
mean_squared_error(y_test, y_predict)
# 输出
0.030000000000000023

3、判断赛题模型:本题为回归问题

【2】数据探索

1、相关性计算:

import numpy as np
x = np.array([25,45,65,28,95,45])
y = np.array([12,45,12,4,45,45])
y1 = np.array([25,45,65,28,95,44])
y2 = np.array([25,45,65,28,95,45])
a = np.corrcoef(x,y)
b = np.corrcoef(x,y1)
c = np.corrcoef(x,y2)
display(a,b,c)
输出:
array([[1.        , 0.49859058],
       [0.49859058, 1.        ]])
array([[1.        , 0.99987943],
       [0.99987943, 1.        ]])
array([[1., 1.],
       [1., 1.]])
相关性结果 表示的意思
0-0.09 无相关
0.1-0.3 弱相关
0.3-0.5 中等相关
0.5-1.0 强相关

2、卡方验证

用的是sklearn中的iris数据集,使用卡方验证 筛选与target相关的特征

from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
iris = load_iris()
X,y = iris.data, iris.target
chiValues = chi2(X,y)
X_new = SelectKBest(chi2, k = 2).fit_transform(X,y)

(输出结果太多了,就不展示了)
sklearn库的iris数据集地址

3、缺失值处理

3.1、删除
①成列删除
特征:如果一行中有空值,则删除掉那一行的信息

性别 年龄
F 【删除】 NULL 【删除】
F 23
M 【删除】 NULL【删除】
NULL【删除】 26【删除】
M 67
M 12

②成对删除
特征:如果有空值,只删除那一个区域的空值,其他值不变

性别 年龄
F NULL【删除】
F 23
M NULL【删除】
NULL【删除】 26
M 67
M 12

3.2 平均值,中位数,众数填充
一般是非缺失值的中值或者平均值来填充

3.3 预测值填充
数据集分为俩份:

训练集 没有缺失值
测试集 存在缺失值

不足:①预测出来的值有可能过于“规范”,就是咱也不清楚模型用的对不对,值出来的结果只是更加符合我们自己选择的模型,而不是真真正正的随机数字
②如果变量之间没有关系,得到的缺失值会不准确

4、异常值处理
异常值的出现一般是会有极其不寻常的平均值标准差
一般用可视化的方式去进行异常值检测(箱型图,直方图,散点图)

引用 - 维基百科箱型图图片【天池学习赛】工业蒸汽量预测 - 【1】赛题理解 和【2】数据探索_第1张图片

处理方法:
①删除:与上述一致(俩种删除方式)
②转换:比如对数据取对数可以减轻由极值引起的变化
③补充:
自然形成的异常值:与填充一样
人为造成的异常值:使用预测模型
④区别对待:
异常值过多的情况(一般很少)
数据分为异常组和非异常组,俩组分别建立模型将数据合并输出

5、变量转换
出现的原因:将数据进行分布展示,如果发现数据存在不均匀现象,将数据进行对数变换,即可让其均匀分布。
转换的方法:

转换方法 说明 备注
非线性 ~> 线性 最常见:对数变换 适用于右倾斜分布,不适合 含有0或者负数
倾斜分布对称 右倾斜:平方根,立方根或对数; 左倾斜:平方,立方或指数 不适合很小的数据集
变量分组 根据不同的目标 把变量分成不同的组 超高维逻辑回归就是采取one-hot编码

6、新的变量生成
基于现有的变量生成新的变量(新变量可能有更好的相关性)

6.1 派生变量:从现有的数据中创建
例子:现在要调查缺失的人群值,可以分为四种(结婚的男性,女性,未婚的男性,女性)

6.2 创建哑变量:将类别型数据转化为数值型变量
例子:性别中存在男性和女性,将其变为:Var_male和Var_female,这俩个数据用0或者1来表示是男性或者女性

本文的全部理解源于《阿里云天池大赛塞梯解析》-机器学习篇

你可能感兴趣的:(#,天池赛,python,天池,赛题分析,工业蒸汽预测)