简略的sklearn学习
数据集api
1 | sklearn.datasets.datasets.load_*() 小规模数据集 |
数据集返回值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 | sklearn.feature_extraction.DictVectorizer(sparse=True,...) (sparse默认稀疏矩阵) |
one-hot编码:一个类占矩阵的一列
文本特征提取
1 | sklearn.feature_extraction.text.CountVectorizer(stop_words=[]) 可设置停用词,即不统计文本 |
#中文需要手动分割词句或使用jieba库
jieba使用
jieba.cut("")
分割单个字符串,对多个字符串的列表进行分割时使用for in
进行遍历
TF-IDF
1 | sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None,...) |
TF:词频:一个词出现次数/总词数
IDF:逆向文档频率:lg(文章数/包含该词文章数)
TF-IDF:重要程度:TF*IDF
特征预处理
特征预处理api
1 | sklearn.preprocessing |
特征单位或大小相差的程度不同,某特征方差比其他特征大出几个数量级,容易影响目标结果,使一些算法无法学习到其他特征
归一化
对原始数据进行变换把数据映射到(默认[0,1])之间,适合精确小数据场景(受异常值影响较大,稳定性较差)
1 | X'=(x-min)/(max-min) maa,min为数据中的最大最小值 |
1 | sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)...) |
标准化
对原始数据进行变换把数据变换到均值为0,标准差为1的范围内,适合嘈杂的大数据场景
1 | X'=(x-mean)/std mean平均值,std标准差 |
1 | sklearn.preprocessing.StanderdScaler() |
降维
ndarray:维数:嵌套的层数
降低特征个数,效果:特征之间不相关
特征选择
Filter过滤式
方差选择法
低方差值特征过滤API
删除小于设定方差的特征值
1 | sklearn.feature_selection.VarianceThreshold(threshold = 0.0) |
相关系数
特征之间相关程度
皮尔逊相关系数api
1 | from scipy.stats import pearsonr |
相关性很高时:选取一个/加权求和
主成分分析
高维转低维特征,可能舍弃原有数据,创造新的变量
1 | sklearn.decomposition.PCA(n_components=None) n-components:小数:表示保留%的信息;整数:减少到几个特征值 |