机器学习的基本步骤


1. 提出问题:

  • 明确是分类问题还是回归问题

2. 理解数据:

2.1 采集数据
  • sklearn.datasets中有练习数据(数据要有代表性,数据量要合适)
2.2 导入数据
  • pd.csv...
2.3 查看数据集信息
  • data.shape查看数据形状;.shape[0]查看行数;.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,最好进行标准化,避免模型参数受极值影响;伸缩不变模型,如逻辑回归,最好也进行标准化,可以加快训练速度

    • 归一化/标准化常见两种方法:

    1. min-max,化为[0,1]:(x-min(x))/(max(x)-min(x))/preprocessing.MinMaxScaler;适合分别在有限范围内的数据,数值较集中,但min/max不稳定会影响结果
    2. 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 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%为训练数据集

  • .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),得到预测结果

7.报告撰写

- 欢迎关注我的公众号,了解一个学设计却做了运营最后成了数据分析师并努力成为大数据工程师的女程序员的成长之路。

 

在这里插入图片描述




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM