机器学习-machine learing

基础部分:

机器学习干什么用?————用于预测

f(x)   =  y

其中 f(x)是特征-features,是学习的知识,来自于训练集(特征feature/属性attribute,标签label/目标target)

y即要预测的结果。

y的结果好不好?

因此:若有一个有10000条的训练数据,一般进行拆分:7500 用于训练集   2500 用于验证集

 

 

机器学习框架:sciket-learn

有监督学习:

分类:DecisionTreeClassifer      预测值是离散型的数据

    图像识别(是谁?范冰冰?)

    垃圾邮件分类

    文本分类

回归:DecisionTreeRegression   预测值是连续型的数据

无监督学习(无标签)

聚类(GMM等)

 

半监督学习:(少量数据有标签)

回归(线性回归,支持向量机回归,决策树回归等)

 

 

注:若训练集数据是图像,声音,则用深度学习完成。

 

一、分类

训练

验证

测试

 

二、决策树

比较合适分析离散数据

如果是连续数据,要先转成离散数据再进行分析。

1.算法

  1)ID3  70.80年代

    根据训练集数据,生成出决策树(类似于if——else结构)

    例:给出14条数据,用于分析是否买电脑

    根据每个特征/标签 先看看每个特征分岔几个?基于希望树越简单越矮越好的目的,选择能够最能决定结果的特征作为父节点。

    如何找到谁是最能决定的呢?   信息熵的公司进行计算即可  (信息熵值越小,相关度越大)

                  信息增益(越大越好)

    不断重复以上操作,直到分解结束为止。

 

     实现:python 源码实现(复杂)、框架实现(一句话)

 

        

  2)C4.5

  对ID3的优化:ID3的预测不太准确,;;;;;

  改进:信息增益率:(对信息增益加了一个分母)

     C4.5倾向于首先选择因此数较多的变量作为父节点

  3)CART算法

    改进公式,去掉了对数,变成了Gini系数(树也变成了二叉树):

  若树出现过拟合状态,则应该将树进行砍掉——即进行剪枝处理(剪枝时亦要处理-原理:少数服从多数的原则)

      二值化

      多值化

     数据变化: one-hot编码(独热法) (将数据编程数字)

       from sklearn import tree

     import numpy  as np

    1.载入数据

      data= np.getfromtxt('xx.csv',delimiter= ',')  #numpy 完成

      data

    2.读取特征值和标签项

      x_data = data[1:,1:-1]

      y_data = data[1:,-1]  

    3.生成决策树

    dtree = tree.DeclisionTreeClassifier()

    4.拿训练集作为测试集,

    dtree.fit(x_data,y_data)

    5.对比结果,看准确率

    6.导出决策树

      1)安装第三方graphviz:pip install graphviz

      2)配置路径path:

      3)导出决策树:

        import graphviz  #第三方库,要先安装  

        dot_tree = tree.export_grahphviz( dtree,

                       out_file = None,feature_name= ...........................................                           )

      4)生成图像,并存储

例子:泰坦尼克号竞赛题(机器学习中,相当于编程学习的Hello World)

题目:泰坦尼克号船员获救预测

   已知:891个数据,有12列(11列特征,1列标签)

   目的:训练出一个模型,用于预测

    测试:给出418个数据,给了11列的特征值数据,要求给出标签值,

完成:

1.导入数据

2.查看数据并人工分析数据以确定哪些列可以删除,哪些列需要null填充

3.通过画图查看数据关系

用 groupby()分组,用plot画图

 

4、进行数据清洗

5.生成决策树

6.训练并生成目标结果集

7.结果集比较

8.准确率确认

9.注意:也不能结果太好,要进行相关数据处理,要注意泛化,要注意剪枝处理

 

 

    

 

posted @ 2019-07-16 16:58  evan0925  阅读(127)  评论(0编辑  收藏  举报