python机器学习第四章:数据预处理——构建好的训练数据集
1、缺失数据的处理
知识点1:通过dropna方法将存在缺失值的特征或者样本删除
#remove rows that contain missing values df.dropna(axis=0) #remove columns that contain missing values df.dropna(axis=1) #only drop rows where all columns are NaN df.dropna(how='all') #drop rows that have less than 3 real values df.dropna(thresh=4) #only drop rows where NaN appear in specific columns (here: 'C') df.dropna(subset=['C'])
删除过多的样本可能会面临丢失有价值信息的风险
知识点2:通过scikit-learn中的Impute方法缺失数据补充
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
axis=0/1 去列/行
strategy=mean/most_frequent 均值/出现频次最多
2.处理类别数据
之前学习的为处理数值型数据的方法,然而在真实数据集中,往往出现一个或多个多类别特征列。
- 标称特征(nominal feature) 如颜色
- 有序特征(ordinal feature) 如尺码
import pandas as pd df = pd.DataFrame([['green', 'M', 10.1, 'class1'], ['red', 'L', 13.5, 'class2'], ['blue', 'XL', 15.3, 'class1']]) df.columns = ['color', 'size', 'price', 'classlabel'] >>> color size price classlabel 0 green M 10.1 class1 1 red L 13.5 class2 2 blue XL 15.3 class1
知识点3:pandas.map()函数对类标编码
知识点4:使用scikit-learn中的LabelEncoder类对类标整数编码
from sklearn.preprocessing import LabelEncoder class_le = LabelEncoder() y = class_le.fit_transform(df['classlabel'].values) #reverse mapping class_le.inverse_transform(y)
3.将数据集划分为训练数据集和测试数据集
from sklearn.model_selection import train_test_split X, y = df_wine.iloc[:, 1:].values, df_wine.iloc[:, 0].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
4.将特征缩放到相同的区间
决策树和随机森林是为数不多不需要特征缩放的机器学习算法。
归一化
from sklearn.preprocessing import MinMaxScaler mms = MinMaxScaler() X_train_norm = mms.fit_transform(X_train) X_test_norm = mms.transform(X_test)
标准化
from sklearn.preprocessing import StandardScaler stdsc = StandardScaler() X_train_std = stdsc.fit_transform(X_train) X_test_std = stdsc.transform(X_test)
5.选择有意义的特征
过拟合模型具有较高的方差,建立在给定训练数据集上的模型过于复杂,常用的泛化误差的方案有:
1.收集更多的训练数据
2.通过正则化引入罚项
3.选择一个参数相对较少的简单模型
4.降低数据的维度
知识点5:使用L1正则化满足数据稀疏化
正则化专题:https://blog.csdn.net/zhaomengszu/article/details/81537197
添加L1和L2正则化有什么用?
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
使得权重向量是稀疏的,意味着只有少数几个非零项。
from sklearn.linear_model import LogisticRegression LogisticRegression(penalty='l1')
知识点6:使用*.coef_属性得到的权重数组
知识点7:序列特征选择算法
降维对未经正则化处理的模型特别有效。
序列后向选择算法(SBS)
知识点8:np.argsort方法
1、先定义一个array数据
1 import numpy as np 2 x=np.array([1,4,3,-1,6,9])
2、现在我们可以看看argsort()函数的具体功能是什么:
x.argsort()
输出定义为y=array([3,0,2,1,4,5])。
我们发现argsort()函数是将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。例如:x[3]=-1最小,所以y[0]=3,x[5]=9最大,所以y[5]=5。
知识点9:通过随机森林判定特征的重要性
通过森林中所有决策树得到的平均不纯度衰减来度量特征的重要性。
本章小结
本章的开始着眼于正确处理缺失数据的有⽤技术。在我们将数据导⼊到机器学习算法之前,应保证已对类别变量进⾏了正确的编码,我们还分别讨论了如何将有序特征和标称特征的值映射为整数的⽅法。
此外,我们还简要地讨论了L1正则化,它可以通过降低模型的复杂度来帮助我们避免过拟合。作为另外⼀种剔除不相关特征的⽅法,我们使⽤了序列特征选择算法从数据集中选择有意义的特征。
在下⼀章中,读者将学到另外⼀种降维的有效⽅法:特征提取。它使得我们可以将特征压缩到⼀个低维空间,⽽不是像特征选择那样完全剔除不相关特征。
- Python下的数据处理和机器学习,对数据在线及本地获取、解析、预处理和训练、预测、交叉验证、可视化
- Python下的数据处理和机器学习,对数据在线及本地获取、解析、预处理和训练、预测、交叉验证、可视化
- python机器学习——十次交叉验证训练的数据准备算法
- Python下的机器学习工具scikit-learn(学习笔记3--数据预处理)
- 【机器学习】模型训练前夜—数据集预处理(概念+图+实战)
- 【MNIST/Python】手写体数字训练/测试数据集(图片格式)下载及分割预处理
- Python数据挖掘与机器学习_通信信用风险评估实战(4)——模型训练与调优
- Python数据预处理:机器学习、人工智能通用技术(1)
- 关于python 在神经网络训练图像数据预处理时使用的transpose
- Python机器学习库sklearn数据预处理,数据集构建,特征选择
- Python数据分析与挖掘实战第四章笔记之数据预处理
- Python机器学习----第2部分 样本数据预处理
- Python 深度学习模型训练数据预处理 批文件重命名 os.listdir方法 os.rename方法 file.spilt方法
- python机器学习 第四章 (1)处理缺失数据
- 机器学习数据预处理和构建一个模型
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器库
- Python 数据挖掘与机器学习进阶实训-1-韦玮-专题视频课程
- 如何用Python和机器学习训练中文文本情感分类模型?
- python数据集、机器学习、智能数据集[zz]
- 机器学习系列--数据预处理