[关闭]
@BruceWang 2018-02-07T14:18:21.000000Z 字数 2525 阅读 1434

CSDN价值两万的AI课程--week2 线性模型 Logistic && SVM

CSDN价值两万的AI课程


Pima Indians Diabetes Data Set(皮马印第安人糖尿病数据集)Logistic and SVM

相对于上周的作业,其实此次数据特征已经很少了,该数据集有些属性的缺失值也比较少,因此本任务的任务主要是为了熟悉LR和SVM分类器的使用,但是任何机器学习都逃不掉特征工程、再高阶一点就是:数据清洗(按理说这项应该是在特征工程之前的)

1. 特征说明:

1) 字段说明

  1. Pregnancies: 怀孕次数
  2. Glucose: 口服葡萄糖耐受试验中,2 小时的血浆葡萄糖浓度。
  3. BloodPressure: 舒张压(mm Hg)
  4. SkinThickness: 三头肌皮肤褶层厚度(mm)
  5. Insulin:2 小时血清胰岛素含量(μU/ ml)
  6. BMI: 体重指数(体重,kg /(身高,m)^ 2)

2) DiabetesPedigreeFunction: 糖尿病家族史

3) Age: 年龄(岁)

Outcome: 输出变了/类别标签(0 或 1,出现糖尿病为 1, 否则为 0)

2) 数据说明
一共有 768 个样本,每个样本有 8 个输入变量和 1 个输出 变量,缺失值通常用零值编码。

2. 任务目的和要求

任务目的
根据皮马印第安人糖尿病数据集 中的特征使用LR和SVM两大分类器预测标签0/1(是否出现糖尿病)

看了数据集和问题之后就会发现,其实很简答, 就是给你1-6的特征让你给这个数据贴标签,有糖尿病么?
说不定可以间接反映这个人平时是不是一个甜食主义者呢?哈哈,开个小玩笑。

相对于上周的作业,其实此次数据特征已经很少了,该数据集有些属性的缺失值也比较少,因此本任务的任务主要是为了熟悉LR和SVM分类器的使用。

但是任何机器学习都逃不掉特征工程、再复杂一点就是数据挖掘、数据清洗(按理说这两项应该是在特征工程之前的)

任务要求及评分标准:
需要提交代码文件,并给出必要的结果解释

总体思路如下:

  1. 准备数据集:加载库文件和数据集,准备训练模型。
  2. 训练模型:在数据集上训练标准机器学习模型,准备进行评估。
  3. 比较模型:使用不同方法进行对比,得到最优模型。

1. 准备数据集

(这个是最复杂的也是我最不喜欢的)

数据清洗————特征工程

多说一点关于创建一些新特征 :
1. 简化已有特征
2. 联合已有特征
3. 现有重要特征(top 10)的多项式
4. 合并类别特征

那么如何检测你的加了这个特征之后对模型是好,还是坏呢?

一、 通过新增加一个或几个feature,如果cv分数上去了,就增加这个feature,如果cv分数没有上去,就舍弃这个feature
弊端:如果你舍弃的两个feature联合之后才有作用呢? 那岂不是丢失不少东西?

二、 数值型特征加减乘除、这样就可以挖掘出新特征咯!具体问题具体对待。

三、 对于其他特征可以聚类、PCA降维等,后续会讲到相关处理方法。

还有么?有! 这文章就是为你而生的、 Let's do do do do ... it!

四、大多数类别型特征的取值并不是很多,一些特征的取值有序关系,可以将其变换为有序数字
其他的类别型特征可以采用独热编码(One hot encoding)/哑编码

五、 离群点检测----去除“离群特征”----接下来就是比较诡异的数据:零值填补----极值均化。
在去除离群特征时候需要注意的是,对于某些领域还是不能随便去除的,尤其是医学领域。

个人倾向于不做任何处理,也就是说不删除任何数据,因为本身数据已经不够多了, 再加上这点数据根本包含不了这么多的样本可能性。

六、 缺失值处理
很明显这里是几乎没有缺失值的,因为原数据已经处理过的,你下载下来使用的。

对训练集的其他数值型特征进行空缺值填补(中值填补),返回填补后的dataframe,以及每列的中值,用于填补测试集的空缺值

七、 数值型特征还要进行数据标准化(个人认为小量数据fit_transform足够了)

相关内容可以看这里了。

好了这下就可以开干咯!

2. 训练模型

两种方法,逻辑斯蒂回归(logistic regression) 和SVM。

建议大家:
- 逻辑斯蒂回归+正则化和不加正则化
- SVM+正则化和不加正则化
尝试看看加了正则化之后和不加正则化有什么区别,这些大家都可以探索的。

  1. Logistic Regression
    生成学习器实例 LR = LogisticRegression(), 然后强调的一点就是要记得交叉验证,哪个组合好,第一是多尝试,第二是可以看看一些基本规则了什么的, 这里可以看看知乎,搜搜quora,都会找到合适的答案。

  2. 尝试使用多种正则化,以及对应的正则化参数的大小,因为数据量小,一下就跑出来了,L1、L2最基本的,还有其他的可以看看统计学习方法。

  3. SVM
    首先建议看完老师的教程,然后看看李航统计学习方法,实践完这个看看斯坦福大学的CS231n课程,真心是把大家当傻子教呢,爽死了。

相关步骤和逻辑斯蒂回归差不多哈,

RBF核SVM正则参数调优

RBF核是SVM最常用的核函数。
RBF核SVM 的需要调整正则超参数包括 (正则系数,一般在log域(取log后的值)均匀设置候选参数)和核函数的宽度
越小,决策边界越平滑;

3. 比较模型

个人觉得对于大型数据这两个模型都没有现在的深度神经网络好用,哈哈!
如果非要在这俩里面选择一个,我选择logistic, 为什么?嗯,因为简单!

当然这节课你会发现数据已经是不错的了,真正的挑战是遇到那种比如说爬虫爬取的数据,那家伙就很难办了, 你想死的心都有了,好奇? 请私下联系我,联系方式自己摸索呗。

其他说明

  1. 可以返回去使用随机数据集跑一边所有过程。
  2. 如果你用pandas直接读取的数据是不能直接用的,需要转换成数值,说不定这还真是大家做作业遇到的坎呢,当然多数大神请忽略这里。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注