python随机数补全代码_Python缺失数据补全和建立测试和训练数据

NumPy :一个用Python实现的科学计算包

1. 一个强大的N维数组对象Array

2. 快速的数学运算阵列

3. 实用的线性代数、傅里叶变换和随机数生产函数

pandas : 解决数据分析的数据分析包

1. 处理缺失数据

2. 可以让数据规范化、明确化

3. 数据分割、合并

4. 加载Excel文件(xxx.csv),数据库和保存/加载数据从超速 HDF5格式

5. 生成日期范围和频率转换,移动窗口统计,线性回归移动窗口,日期转移和滞后等。

sklearn.preprocessing:数据预处理

这里主要用来处理缺失数据(常用的三种方法)

删除 :最简单最直接的方法,很多时候也是最有效的方法,这种做法的缺点是可能会导致信息丢失。

补全 :平均数、中位数、众数、最大值、最小值、固定值、插值等等。用规则或模型将缺失数据补全,这种做法的缺点是可能会引入噪声

忽略 :有一些模型,如随机森林,自身能够处理数据缺失的情况,在这种情况下不需要对缺失数据做任何的处理,这种做法的缺点是在模型的选择上有局限。

Imputer :sklearn.preprocessing中的一个类,提供了基本的策略将缺失值(NaN/nan),使用均值、中值或最常见的价值缺失值的行或列

LabelEncoder :对不连续的数字或者文本进行编号

OneHotEncoder:用于将表示分类的数据扩维

OneHotEncoder 输入必须是int数组,把类别数据转换成多列0,1数据。

LabelEncoder,把数据转化成int整形

源数据 Data.csv

15094167066327.jpg

第2列和第三列中分别有一项数据是空白的,这就是缺失数据(NaN/nan)

Python:

首先在右侧File explorer 找到你的数据所在文件夹

在代码中导入数据

15094292536475.jpg

#处理矩阵

import numpy as np

#数据可视化--画图

import matplotlib.pyplot as plt

#解决数据分析

import pandas as pd

dataset = pd.read_csv('Data.csv')

# .iloc[] 根据索引选择的位置

# 获取到最后一个之前-1表示倒数第一

X = dataset.iloc[:,:-1].values

# 单独拿出最后一列数据 Purchased ,Purchased的索引是3

# [:,3] 所有类的第三列的所有数据

y = dataset.iloc[:,3].values

#处理缺失数据

from sklearn.preprocessing import Imputer

# strategy 补缺值方式 mean(默认) 平均值 median 中值 most_frequent 出现次数最多的

# axis 0(默认) - 列 1 - 行

imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0, copy = True)

#Country 只有3种

imputer = imputer.fit(X[:, 1:3])

X[:, 1:3] = imputer.transform(X[:, 1:3])

#数据规范化

#OneHotEncoder - 用于将表示分类的数据扩维

#LabelEncoder - 对不连续的数字或者文本进行编号

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

labelencoder_X = LabelEncoder()

#用LabelEncoder 把 需要转换的第一列转化成int型数组

X[:, 0] = labelencoder_X.fit_transform(X[:, 0])

onehotencoder = OneHotEncoder(categorical_features = [0])

X = onehotencoder.fit_transform(X).toarray()

labelencoder_y = LabelEncoder()

y = labelencoder_y.fit_transform(y)

15094269557090.jpg

15094268909704.jpg

缺失数据就已经通过求平局值的方式补全,并且把Country转成了所需要的数字代表。

sklearn.cross_validation.train_test_split 把数据集分成训练集和测试集

# 把数据集分成训练集和测试集

from sklearn.cross_validation import train_test_split

# test_size 测试数据20%

#random_state 当别人重新运行你的代码的时候就能得到完全一样的结果,复现和你一样的过程,如果你设置为 默认的None,则会随机选择一个种子,准确度可能会有波动

# 避免过拟合,采用交叉验证,验证集占训练集20%,固定随机种子(random_state)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

15094291507485.jpg

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值