机器学习那些事儿之基本步骤 - Blog1

今天也要加油鸭~

  • 这是一份总结的学习笔记
  • 路漫漫其修远兮,吾将上下而求索
  • 可阅读可评论可分享可转载,希望向优秀的人学习

机器学习基本步骤

机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

对于刚接触的小白来说,如何搭建一整套机器学习模型,从输入进行训练并且预测得到输出结果往往是最为关心的,那么今天来介绍构建机器学习的流程。

1. 提出问题

明确是分类问题还是回归问题。
机器学习那些事儿之基本步骤 - Blog1_第1张图片
分类和回归的区别在于输出变量的类型。
定量输出称为回归,或者说是连续变量预测;
定性输出称为分类,或者说是离散变量预测。

举个例子:
预测明天的气温是多少度,这是一个回归任务;
预测明天是阴、晴还是雨,就是一个分类任务。

2. 理解数据

2.1 采集数据

sklearn.datasets中有练习数据(数据要有代表性,数据量要合适)

2.2 导入数据

pd.csv…

2.3 查看数据集信息

  • data.shape查看数据形状;data.shape[0]查看行数;data.shape[1]查看列数
  • df.head() 查看前几行;
  • df.describe()查看数值数据的描述统计信息;
  • df.info()根据行数查看数据是否有缺失值,数据类型是否合适

了解各个字段的含义,目标和特征分别是哪个字段;也可通过可视化了解数据的分布。

3. 数据清洗

3.1 数据预处理

缺失值处理、重复值处理、数据类型的转换、字符串数据的规整

  • 缺失值处理(标签数据无需填充缺失):
  • 数值类型,用平均值取代:data[A].fillna(data[A].mean())
  • 分类数据,用最常见的类别取代:data[A].value_counts();data[A].fillna(“前面得到的最常见的类别”);data[A].fillna(“U”)缺失比较多时,填充代表未知的字符串
  • 使用模型预测缺失值,例如:K-NN
  • 数据归一化/标准化:
    模型具有伸缩可变性,如SVM,最好进行标准化,避免模型参数受极值影响;伸缩不变模型,如逻辑回归,最好也进行标准化,可以加快训练速度
    归一化/标准化常见两种方法:min-max,化为[0,1]:(x-min(x))/(max(x)-min(x))/preprocessing.MinMaxScaler;适合分别在有限范围内的数据,数值较集中,但min/max不稳定会影响结果
    Z-core,化为均值为0,方差为1:(x-mean(x))/std(x)/sklearn.preprocessing.scale(),适合最大/最小值未知,或者有超出取值范围的离散值

3.2 特征提取(特征工程.1)

  • 数值型数据处理:一般可直接使用,或通过运算转化为新的特征
  • 家庭人数可统计分类:df.家庭人数=df.A+df.B+1(自己);df.小家庭=df.家庭人数.map(lambda匿名函数-lambda s : 1 if 2 <= s <= 4 else 0)
  • 分类型数据处理:
    两个类别:性别数据分别填充为1、0:df.A=df.A.map({“male”:1;“female”:0})
    超两个类别:one-hot编码,data’=pd.get_dummies(df.A , prefix=‘前缀’ );pd.concat([data,data’],axis=1)
    字符串型-姓名:每一个姓名中都包含了称谓,利用split函数将称谓提取出来;.strip用于移除空格;将称谓进行归类,定义对应字典,利用map函数替换;进行one_hot编码
    字符串型-客舱号:a[n]可以取到字符串数据 第“n”个字符;提取之后进行one_hot编码
    时间序列数据,一段时间定期收集的数据-可转成年月日

3.3 特征选择(特征工程.2)

计算各个特征和标签的相关性:df '=pd.corr()
查看标签对应的相关系数:df '.标签.sort_values(ascending =False)
根据相关系数的大小选择特征列做为模型输入

4. 构建模型

4.1 建立训练数据集和测试数据集

选取训练数据和测试数据的特征和标签:.loc选取特征列和标签列;train_test_spilt 划分,通常80%为训练数据集;
data.shape查看划分结果。

4.2. 选择机器学习算法:

  • 导入算法
    逻辑回归(logisic regression)
    随机森林(Random Forests Model)
    支持向量机(Support Vector Machines)
    Gradient Boosting Classifier
    K-nearest neighbors
    Gaussian Naive Bayes
  • 数据降维:PCA,Isomap
  • 数据分类:SVC,K-Means
  • 线性回归:LinearRegression
  • 创建模型
    model=LinearRegression()
  • 训练模型
    model.fit(train_X , train_y )

5. 评估模型

model.score(test_X , test_y ),不同的模型指标不一样,分类模型评估准确率
metrics.confusion_matrix:混淆矩阵
homogeneity_score:同质性,每个群集只包含单个类的成员;[0,1],1表示完全同质。
completeness_score:完整性,给定类的所有成员都分配给同一个群集。[0,1],1表示完全完整。
v_measure_score:同质性和完整性的调和平均值
adjusted_mutual_info_score:兰德系数ARI,取值范围[-1,1],值越大,表示与聚类结果与真实越吻合,体现的是两个数据分布的吻合程度
adjusted_mutual_info_score:互信息AMI,取值[-1,1],值越大,与真实情况越吻合。
fowlkes_mallows_score:精确率和召回率的几何平均值,[0,1],越大,越相似。
silhouette_score:轮廓系数,[-1,1]同类别越近,不同类别越远,系数越大。
calinski_harabaz_score:类内部协方差越小,类之间协方差越大,改数值越大,聚类效果越好。

6. 方案实施

model.predict(pred_X),得到预测结果

你可能感兴趣的:(机器学习)