- 公式
X' = (x - min)/(max - min)
X" = X' * (mx - mi) + mi - API
sklearn.preprocessing.MinMaxScaler(feature_range=(mi, mx)...) MinMaxScaler.fit_transform(X) X: numpy array格式的数据[n_samples, n_features] 返回值: 转换后的形状相同的array
- 总结
最大值和最小值容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。
- 公式
X' = (x - mean) / std - API
sklearn.preprocessing.StandardScaler() 处理之后, 对每列来说, 所有数据都聚集在均值为0附近, 标准差为1 StandardScaler.fit_transform(X) x: numpy array格式的数据[n_samples, n_features] 返回值: 转换后的形状相同的array
- 总结 适用于数据嘈杂的大数据场景
降维是指在某些限定条件下,降低随机变量(特征)的个数,得到一组“不相关”主变量的过程。
- 特征选择
- Filter 过滤式:
(1) 方差选择法:低方差特征过滤
(2) 相关系数:特征与特征之间的相关程度强的过滤 - Embedded 嵌入式
(1) 决策树
(2) 正则化
(3) 深度学习
- Filter 过滤式:
- 主成分分析
sklearn.feature_selection
- 低方差特征过滤
- sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
- 删除所有低方差特征
- Variance.fit_transform(X)
- X: numpy array 格式的数据[n_samples, n_features]
- 返回值: 训练集差异低于threshold的特征将被删除。默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。
- 相关系数
- sklearn.decomposition.PCA(n_components=None)
- 将数据分解为较低维空间
- n_components:
- 小数:表示保留百分之多少的信息
- 整数:减少到多少特征
- PCA.fit_transform(X)
- X:numpy array格式的数据[n_samples, n_features]
- 返回值:转换后指定维度的array
https://jupyter.dgutdev.ml/notebooks/work/personal_folder/wjer/instacart_from_kaggle.ipynb
- 实例化
- 调用fit_transformer
- 实例化一个estimator
- estimator.fit(x_train, y_train)
- 模型评估
- y_predict = estimator.predict(x_test)
then check if y_test == y_predict - 计算准确率
estimator.score(x_test, y_test)
- y_predict = estimator.predict(x_test)
- 存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系。输入没有标签的数据后,将新数据中的每个特征与样本集中数据对应的特征进行比较,提取出样本集中特征最相似数据(最近邻)的分类标签。
- 确定最近距离
- K的取值
若K过小,容易受异常点影响;若K过大,受样本不均衡的影响。 - 使用KNN前的数据处理 无量纲化的处理:标准化
- sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, algorithm='auto')
- n_neighbors: int,可选(默认=5)
- algorithm: {'auto', 'ball_tree', 'kd_tree', 'brute'}
- 获取数据
- 数据集划分
- 特征工程 标准化
- KNN
- 模型评估
- 缺点:K值难确定;内存开销大
- 基本**就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。
- 一种调参手段;穷举搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理就像是在数组里找最大值。
- sklearn.model_selection.GridSearchCV(estimator,param_grid,cv)
- estimator:估计器对象
- param_grid:估计器参数,参数名称(字符串)作为key,要测试的参数列表作为value的字典,或这样的字典构成的列表
- cv:整形,指定K折交叉验证
- fit():输入训练数据
- score():准确率
- best_score_:交叉验证中测试的最好的结果
- best_estimator_:交叉验证中测试的最好的参数模型
- best_params_:交叉验证中测试的最好的参数
- cv_results_:每次交叉验证的结果
- 由于找不到数据,没实践
- 对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
- 获取数据
- 划分数据集
- 特征工程 文本特征抽取
- 朴素贝叶斯预估器流程
- 模型评估
- 对缺失数据不敏感, 准确度高,常用于文本分类
- 对特征有关联的样本效果不是很好
- 文本分类
- 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。
- http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt
- 获取数据
- 数据处理 缺失值处理 特征值->字典类型
- 准备好特征值和目标值
- 划分数据集
- 特征工程:字典特征抽取
- 决策树预估器流程
- 模型评估
- export_graphviz(estimator, out_file="iris_tree.dot", feature_names=iris.feature_names)
- http://webgraphviz.com/
- 优点:可视化
- 缺点:容易过拟合
- 使用一些(不同的)方法改变原始训练样本的分布,从而构建多个不同的分类器,并将这些分类器线性组合得到一个更强大的分类器,来做最后的决策。
- 随机森林就是通过集成学习的**将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。
- 随机
- 特征随机
- 训练集随机 bootstrap抽样
- 极好的准确率
- 有效的运行在大数据集上, 处理具有高维特征的样本,不需要降维
- 能够评估各个特征在分类问题上的重要性
- 在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
- 线性回归的输出就是逻辑回归的输入
- sigmoid函数
- API
- 良/恶性乳腺癌预测
- http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/
- 流程
- 获取数据 加上names
- 数据处理 处理缺失值
- 数据集划分
- 特征工程 无量纲化-标准化
- 逻辑回归预估器
- 模型评估
- 精确率与召回率
- ROC曲线和AUC指标
- 线性回归
- 过拟合与欠拟合
- 岭回归
- 逻辑回归
- 保存与加载模型
- K-Means