一、机器学习基础
算法是核心,数据和计算是基础。
数据类型
- 离散型数据:记录不同类别个体的数目所得到的数据,又称为计数数据,全部是整数,不能再细分,也不能进一步提高精度。
- 连续型数据:变量可以在某个范围内取任意数,即变量的取值可以是连续的,通常是非整数。
- 离散型是区间内不可分,连续型是区间内可分。
机器学习算法分类
监督学习(预测):特征值+目标值
- 分类(离散值):k-邻近算法、贝叶斯分类、决策树和随机森林、逻辑回归、神经网络
- 回归(连续值):线性回归、岭回归
- 标注:隐马尔科夫模型
无监督学习:特征值
- 聚类:k-means
基本流程
- 原始数据(公司本身的数据、合作过来数据、购买的数据)----明确问题做什么
- 建立模型----根据数据类型划分应用种类
- 数据的基本处理----pandas处理数据(缺失值、合并表...)
- 特征工程----特征进行处理
- 找到合适的算法去进行分析(模型=算法+数据)
- 模型的评估,判定效果
- 上线使用(API形式提供)
二、 sklearn数据集与估计器
1、数据集划分
训练和评估不能用一个数据集。
训练集:构建模型用于训练
测试集:评估模型是否有效
训练集和测试集的比例一般是7:3、8:2、7.5:2.5(最佳比例)
2、sklearn数据集API
数据集:sklearn.datasets
- 加载获取流行数据集
datasets.load_*()
- 获取小规模数据集,数据包含在datasets里
datasets.fetch_*(data_home=None)
- 获取大规模数据集,需要从网络上下载,函数的第一个参数是data_home,表示数据集下载的目录,默认是 ~/scikit_learn_data/
load*和fetch*返回的数据类型:datasets.base.Bunch(一个字典格式)
- data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
- target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
- DESCR:数据描述
- feature_names:特征名,新闻数据,手写数字、回归数据集没有
- target_names:标签名,回归数据集没有
例如
sklearn.datasets.load_iris() 加载并返回鸢尾花数据集
sklearn.datasets.load_digits() 加载并返回数字数据集
from sklearn.datasets import load_iris li = load_iris() print("特征值:") # 二维数组 print(li.data) # 150个样本,4个特征 print("目标值:") print(li.target) # 3种类别,每个类别50个 print("描述:") print(li.DESCR)
数据集划分:sklearn.model_selection.train_test_split
sklearn.model_selection.train_test_split(*arrays, **options)
x 数据集的特征值
y 数据集的标签值
test_size 测试集的大小,一般为float
random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
return 训练集特征值,测试集特征值,训练标签,测试标签 (默认随机取)