前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重回机器学习-《python机器学习及实践》读书笔记一

重回机器学习-《python机器学习及实践》读书笔记一

作者头像
钱塘小甲子
发布2019-01-28 10:06:38
5170
发布2019-01-28 10:06:38
举报

        以前也算比较系统接触过机器学习吧,记得最早的时候是大二,机器学习才刚开始提起,更多的是说统计学习。那个时候,深度学习似乎都还没有听过,看的第一本书也是一本外国人写的,一直拿鸢尾花数据集当例子的书。当时看完也没觉得什么,毕竟年轻,何况那个时候很多东西就是觉得好奇好玩而去学一下。

        后来也慢慢接触到,也编程实践过,不过一直都不怎么成体系。最近觉得,还是得再跟一下潮流,所以还是赶紧学习吧。《python机器学习及实践》这本书有点像量化界丁校友的那本书,很广泛;但是又比丁校友那本书好一点,就是具有很强的实践性。当然啦,既然看中实践性了,那么理论知识就不那么多了,所以全书的理论真的没有多少,如果之前完全没有接触过的同学,可能把代码全部敲了一遍也没有什么深刻的体会,所以还是应该先看一点偏理论的书吧。还好自己多少还有点ml的知识储备,花了半天不到就把这本书看完了,梳理了一遍的感觉还是很不错的,最大的收获大概就是明白怎么用sklearn了吧。以前都是很随意的使用,sklearn对我而言就是一些算法的包装而已,参数搜索、交叉验证什么的 全部自己上手,看完才发现,什么叫做工欲善其事,必先利其器。

        本人对监督学习比较感兴趣,毕竟量化投资本质上就是一个监督学习的问题,可能偶尔的小范围、小课题会涉及到非监督学习。根据书中给的监督学习经典模型的架构如下:

  1. 首先准备训练数据。可以是文本、图像、音频
  2. 然后抽取所需要的特征,形成特征向量
  3. 连同特征向量和对应的label放入模型中学习
  4. 采用同样的特征提取方法作用于新的测试数据,得到特征向量
  5. 使用预测模型预测结果(Expected label)

        这个看下来,自己吓了一跳,这不就是多因子框架吗?!准备数据这就不用说了;抽取特征,形成特征向量其实就是单因子的挖掘以及单因子的筛选,比如用滚动的IRIC之类的;第三步在传统的多因子体系中可能不存在显式训练模型,但是其实如果对IC、加权等方法理解深入的话,其实这就是一个线性模型的变现复杂版;然后是第四、五步,那就更加不用说了,就是因子打分、合成的情形了。当然啦,多因子模型到这里其实只是完成了一半还不到,后面还有组合层面。所以说,其实不管你用不用机器学习在多因子模型中,这个模型本身就是一个机器学习!

        然后,就开始上一段代码吧,代码不重要,重要的是sklearn使用的结构和步骤。

1.获取原始数据(特征提取,本例中已经提取)

代码语言:javascript
复制
import pandas as pd
import numpy as np

column_names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape', 'Marginal Adhesion', 'Signle Epithelial Cell Size',
                'Bare Nuclei', 'Bland Chrom', 'Normal Nucleoli', 'Mitoses', 'Class']
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', names=column_names)
data = data.replace(to_replace='?', value=np.nan)
data = data.dropna(how='any')

2.切割训练集和测试集

代码语言:javascript
复制
from sklearn.cross_validation import train_test_split
# 数据集第一列是id,所以x数据从1到9,即1:10
X_train, X_test,y_train,y_test = train_test_split(data[column_names[1:10]], data[column_names[10]], test_size=0.25)

3.对数据进行标准化(有的模型天然不需要这一步,比如DT)

代码语言:javascript
复制
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression, SGDClassifier
ss = StandardScaler()X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

4.模型训练

代码语言:javascript
复制
lr = LogisticRegression()
sgdc=SGDClassifier()

5.样本外测试

代码语言:javascript
复制
from sklearn.metrics import classification_report
lr.fit(X_train, y_train)
lr_y_predict = lr.predict(X_test)
sgdc.fit(X_train, y_train)
sgdc_y_predict = sgdc.predict(X_test)
print 'accuracy:', lr.score(X_test, y_test)
print classification_report(y_test, lr_y_predict, target_names=['Benign', 'Maligant'])
print 'accuracy:', sgdc.score(X_test, y_test)
print classification_report(y_test, sgdc_y_predict, target_names=['Benign', 'Maligant'])

        详细的代码就不解释了,毕竟我不是书本的搬运工,书本中说的很明白。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档