0%

Sklearn学习

简略的sklearn学习

数据集api

1
2
sklearn.datasets.datasets.load_*()						小规模数据集
sklearn.datasets.datasets.fetch_*(data_home=None) 大规模数据集,需要下载

数据集返回值datasets.base.Bunch字典类型

通过dict["key"]bunch.key来获得数据

数据集划分

训练数据:用于训练,构建模型

测试数据:模型检验时使用,用于评估模型(20%~30%)

数据划分api

1
sklearn.model_selection.train_test_split(data,[target],*options)

参数:test_size测试集大小,float型,random_state随机数种子

返回四个值:训练集特征值,测试集特征值,训练集目标值,测试集目标值

特征工程

——决定机器学习上限

特征抽取/提取

文本、类型->数值

特征提取api
1
sklearn.feature_extraction
字典特征提取
1
2
3
4
sklearn.feature_extraction.DictVectorizer(sparse=True,...)		(sparse默认稀疏矩阵)
DictVectorizer.fit_transfer(data) 返回sparse矩阵
DictVectorizer.inverse_transform(marix) 返回原先数据
DictVectorizer.get_feature_names() 返回类别名称

one-hot编码:一个类占矩阵的一列

文本特征提取
1
2
3
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])	可设置停用词,即不统计文本
DictVectorizer.fit_transfer(data) 返回sparse矩阵DictVectorizer.inverse_transform(marix) 返回原先数据格DictVectorizer.get_feature_names() 返回单词列表
sklearn.feature_extraction.text.TfidfVectorizer 找出重要词

#中文需要手动分割词句或使用jieba库

jieba使用

jieba.cut("")分割单个字符串,对多个字符串的列表进行分割时使用for in进行遍历

TF-IDF
1
2
sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None,...)
TfidfVectorizer.fit_transform(X) X为文本或字符串,返回sparse矩阵

TF:词频:一个词出现次数/总词数

IDF:逆向文档频率:lg(文章数/包含该词文章数)

TF-IDF:重要程度:TF*IDF

特征预处理

特征预处理api

1
sklearn.preprocessing

特征单位或大小相差的程度不同,某特征方差比其他特征大出几个数量级,容易影响目标结果,使一些算法无法学习到其他特征

归一化

对原始数据进行变换把数据映射到(默认[0,1])之间,适合精确小数据场景(受异常值影响较大,稳定性较差)

1
2
X'=(x-min)/(max-min)							maa,min为数据中的最大最小值
X''=X'*(mx-mi)+mi mx,mi为指定区间范围的最大值最小值
1
2
sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)...)
MinMaxScaler.fit_transform(X) X为numpy array数据[n_samples, n_features],返回同形状数组

标准化

对原始数据进行变换把数据变换到均值为0,标准差为1的范围内,适合嘈杂的大数据场景

1
X'=(x-mean)/std									mean平均值,std标准差
1
2
sklearn.preprocessing.StanderdScaler()
StanderdScaler.fit_transform(X) X为numpy array数据[n_samples, n_features],返回同形状数组

降维

ndarray:维数:嵌套的层数

降低特征个数,效果:特征之间不相关

特征选择

Filter过滤式
方差选择法

低方差值特征过滤API

删除小于设定方差的特征值

1
2
sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
VarianceThreshold.fit_transform(X) X为numpy array数据[n_samples, n_features],返回同形状数组
相关系数

特征之间相关程度

皮尔逊相关系数api

1
2
from scipy.stats import pearsonr
pearsonr(data["var1"], data["var2"]) 计算相关系数,返回(r,p) r:相关系数;p:p越小表示相关系数月显著

相关性很高时:选取一个/加权求和

主成分分析

高维转低维特征,可能舍弃原有数据,创造新的变量

1
2
sklearn.decomposition.PCA(n_components=None)	n-components:小数:表示保留%的信息;整数:减少到几个特征值
PCA.fit_transform(X) X为numpy array数据[n_samples, n_features],返回同指定维度array
决策树
正则化
深度学习