LOADING

加载过慢请开启缓存 浏览器默认开启

Machine_Learning

2024/3/15 Tech

数据集

书籍推荐

机器学习 – ‘西瓜书’ – 周志华

统计学习方法 – 李航

深度学习 – ‘花书’

可用数据集

Scikit-learn:数据量小、方便学习

UCI:收录360个数据集、覆盖生活经济科学等领域、数据量几十万

Kaggle:大数据竞赛平台、大量科学家、真实数据、数据量大

sklearn数据集调用(*替换为数据集名)

sklearn.datasets.load_*() // 加载小型数据集

sklearn.datasets.fetch_*() //加载大型数据集,从网络获取

sklearn数据集返回值

返回数据类型datasets.base.Bunch(继承自字典)

data:特征数据数组,[n_samples * n_features] 是二维数组

​ numpy.ndarray 数组

target:标签数组,n_samples 的一维 numpy.ndarray 数组

DESCR:数据描述

feature_names:特征名

target_names:标签名

数据集划分

sklearn.model_selection.train_test_split(arrays, ‘options’)

x为数据集的特征值

y为数据集的标签值

test_size 为测试集的大小,一般为float类型

random_state 为随机数种子

return 数据集特征值,测试集特征值,训练集目标值,测试集目标值

特征工程(处理数据)

1.特征抽取

介绍

​ 机器学习算法 = 统计方法 = 数学公式

​ 文本➡数值

提取

​ 1.字典特征提取(特征离散化)

​ 2.文本特征提取

​ 3.图像特征提取(深度学习)

特征提取api

​ sklearn.feature_extraction

字典特征提取

sklearn.feature_extraction.DictVectorizer(sparse=True)

sparse为True时返回稀疏矩阵,省去0,节省内存

DictVectorizer.fit_transform(X) X:字典或包含字典的迭代器返回值,返回sparse矩阵

DictVectorizer.inverse_transform(X) X:array数组或者sparse矩阵,返回转换前数据格式

DictVevtorizer.get_feature_names_out() 返回类别名称

​ vector 向量 一维数组

​ matrix 矩阵 二维数组

文章特征抽取

sklearn.feature_extraction.text.CountVectorizer(stop_words=[])

sparse为True时返回稀疏矩阵,省去0,节省内存

CountVectorizer.fit_transform(X) X:字典或包含字典的迭代器返回值,返回sparse矩阵

CountVectorizer.inverse_transform(X) X:array数组或者sparse矩阵,返回转换前数据格式

CountVectorizer.get_feature_names_out() 返回类别名称

​ 特征:单词(特征词)、短语、句子、字母

中文使用jieba将句子进行分词

方法1:CountVectorize (统计每个特征词出现字数)

​ stop_words 停用词(排除该单词)

​ 关键词:在某一类别文章多次出现,其他类别出现很少

方法2:TfidfVectorizer

​ TF-IDF - 重要程度

​ TF - 词频(term frequency)

2.特征预处理

包含内容:数值型数据无量纲化(归一化、标准化)

特征预处理API: sklearn.preprocessing

sklearn.preprocessing.MinMaxScaler(feature_range = (0,1)…)

​ MinMaxScaler.fit_transform(X)

X:numpy array格式的数据[n_sample,n_features]

返回值:转换后的形状相同的array

sklearn.preprocessing.StandardScaler()

​ 处理后,对每列数据,数据聚集在均值为0附近,标准差为1

​ StandardScaler.fit_transform(X)

X:numpy array格式数据[n_samples,n_features]

返回值:转换后的形状相同的array

3.特征降维

降维 - 减少相关性强的变量

特征选择 - 找出数据特点(过滤式、嵌入式)

​ Filter过滤式

​ 方差选择法:低方差特征过滤(相同特征方差低)

​ 相关系数法:特征之间相关程度

​ Embedded

​ 决策树:信息熵、信息增益

​ 正则化:L1、L2

​ 深度学习:卷积等

模块:sklearn.feature_selection

Filter低方差特征过滤

API:sklearn.feature_selection.VarianceThreshold(threshild = 0.0)

​ 实例化;Variance.fit_transform(X)

​ X:numpy array格式数据[n_samples,n_features]

​ 返回值:训练集差低于threshold的特征将被删除,默认保留所有非0方差特征

相关系数

皮尔逊相关系数

image-20240311211001275

API:scipy.stats import pearsonr

X: array_like

Y: array_like

Return:相关系数

相关性高处理方法:择优、加权、主成分分析

4.主成分分析

将高维数据转化为低维数据,可能会舍弃原有数据,创造新变量

p.s 零维:标量 一维:向量 二维:矩阵

本质:压缩数据量,减少存储空间

API:sklearn.decomposition.PCA(n_components=None)

n_component:

小数:保留信息的占比

整数:减少到多少特征

​ PCA.fit_transform(X) X:numpy array格式数据[n_samples,n_features]

Return:转换后指定维度的array

实战案例