《机器学习及实践--从零开始通往Kaggle竞赛之路》
《机器学习及实践--从零开始通往Kaggle竞赛之路》
在开始说之前一个很重要的Tip:电脑至少要求是64位的,这是我的痛。
断断续续花了个把月的时间把这本书过了一遍。这是一本非常适合基于python入门的机器学习入门的书籍,全书通俗易懂且有代码提供。书中源代码连接为Ipython环境。主页君使用的是pycharm,python2.7,具体安转过程书本写的很详细。码完书中代码,有一点点点小不符(或许可能是因为平台不一样),百度基本可以解决问题(有问题也可以留言探讨)。贴一点代码,以示学习:
1_4_7.py:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#coding=utf-8# Filename : 良性、恶性乳腺癌肿瘤预测 完整代码样例(线性分类器)#导入pandas工具包import pandas as pd#调用pandas工具包的read_csv函数模块,传入训练文件地址参数,获得返回的数据并且存入变量df_traindf_train=pd.read_csv('breast-cancer-train.csv')df_test=pd.read_csv('breast-cancer-test.csv')#选取clumpthickness与cellsize作为特征,构建测试集中的正负分类样本df_test_negative=df_test.loc[df_test['Type']==0][['Clump Thickness', 'Cell Size']]df_test_positive=df_test.loc[df_test['Type']==1][['Clump Thickness', 'Cell Size']]import matplotlib.pyplot as plt#绘制良性肿瘤样本点标记为红的oplt.scatter(df_test_negative['Clump Thickness'], df_test_negative['Cell Size'], marker='o', s=200, c='red')plt.scatter(df_test_positive['Clump Thickness'], df_test_positive['Cell Size'], marker='x', s=150, c='black')#绘制x,y轴plt.xlabel('Clump Thickness')plt.ylabel('Cell Size')plt.title('1-2')#显示图#plt.show()#导入import numpy as np#利用random函数随机采样直线的系数与截距intercept=np.random.random([1])coef=np.random.random([2])print coef,interceptlx=np.arange(0, 12)#创建等差数组ly=(-intercept-lx*coef[0])/coef[1]#截距式plt.plot(lx,ly,c='yellow')#绘随机直线plt.scatter(df_test_negative['Clump Thickness'], df_test_negative['Cell Size'], marker='o', s=200, c='red')plt.scatter(df_test_positive['Clump Thickness'], df_test_positive['Cell Size'], marker='x', s=150, c='black')#绘制x,y轴plt.xlabel('Clump Thickness')plt.ylabel('Cell Size')plt.title('1-3')#显示图plt.show()#导入sklearn的逻辑斯蒂回归分类器from sklearn.linear_model import LinearRegressionlr=LinearRegression()lr.fit(df_train[['Clump Thickness','Cell Size']][0:10],df_train['Type'][0:10])print 'Testing accuracy (10 training sample):',lr.score(df_test[['Clump Thickness' , 'Cell Size']],df_test['Type'])print "你好,中国"#第二次intercept=lr.intercept_coef=lr.coef_[:2]print coef,interceptly=(-intercept-lx*coef[0])/coef[1]plt.plot(lx,ly,c='green')plt.scatter(df_test_negative['Clump Thickness'], df_test_negative['Cell Size'], marker='o', s=200, c='red')plt.scatter(df_test_positive['Clump Thickness'], df_test_positive['Cell Size'], marker='x', s=150, c='black')#绘制x,y轴plt.xlabel('Clump Thickness')plt.ylabel('Cell Size')plt.title('1-4')#显示图plt.show()lr=LinearRegression()lr.fit(df_train[['Clump Thickness' , 'Cell Size']][:10],df_train['Type'][:10])print 'Testing accuracy (all training sample):',lr.score(df_test[['Clump Thickness' , 'Cell Size']],df_test['Type'])#第三次intercept=lr.intercept_coef=lr.coef_[:2]ly=(-intercept-lx*coef[0])/coef[1]plt.plot(lx,ly,c='blue')plt.scatter(df_test_negative['Clump Thickness'], df_test_negative['Cell Size'], marker='o', s=200, c='red')plt.scatter(df_test_positive['Clump Thickness'], df_test_positive['Cell Size'], marker='x', s=150, c='black')#绘制x,y轴plt.xlabel('Clump Thickness')plt.ylabel('Cell Size')plt.title('1-5')#显示图plt.show()print 'end' |
2_1_2_1.py:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# coding=utf-8#__author__ = 'lenovo'#线性回归器预测美国波士顿地区房价#从包中导入房价数据from sklearn.datasets import load_bostonboston=load_boston()print boston.DESCR#导入数据分割器from sklearn.cross_validation import train_test_splitimport numpy as np#导入有价值数据x=boston.datay=boston.target#print x,yx_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25,random_state=33)#分析回归目标值的差异print "The max target value is",np.max(boston.target)print "The min target value is",np.min(boston.target)print "The average target value is",np.mean(boston.target)#有输出结果看目标值差异较大,需进行标准化处理from sklearn.preprocessing import StandardScaler#初始化特征和目标值的标准化器ss_x=StandardScaler()ss_y=StandardScaler()#对训练数据和测试数据标准化x_train=ss_x.fit_transform(x_train)#训练算法,设置内部参数,数据转换x_test=ss_x.transform(x_test)#数据转换y_train=ss_y.fit_transform(y_train)y_test=ss_y.transform(y_test)#使用LR与SGDRegression对房价进行预测from sklearn.linear_model import LinearRegressionlr=LinearRegression()#使用训练数据进行参数估计lr.fit(x_train,y_train)#对测试数据进行回归预测lr_y_predition=lr.predict(x_test)from sklearn.linear_model import SGDRegressorsgdr=SGDRegressor()sgdr.fit(x_train,y_train)sgdr_y_predict=sgdr.predict(x_test)#三种回归评价机制以及两种调用R-squared评价模块的方法,对本节模型的回归性能做出评价print 'The avlue of default measurement of LinearRegression is',lr.score(x_test,y_test)#从sklearn.metrics依次导入r2_score,mean_squared_error,mean_absolute_errorfrom sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error#使用r2_score模块,并输出评估结果print 'The value of R-Squared of LinearRegression is',r2_score(y_test,lr_y_predition)#使用mean_squared_error模块,并输出评估结果print 'The mean squared error of LinearRegression is',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predition))#使用mean_absolute_error模块,并输出评估结果print 'The mean absoluate error of LinearRegression is',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predition))#使用SGDRegressor模块自带的评估模块,并输出评估模块print 'The value of default measurement of SGDRegressor is',sgdr.score(x_test,y_test)#使用r2_score模块,并输出评估结果print 'The value of R-Squared of SGDRegressor is',r2_score(y_test,sgdr_y_predict)#使用mean_squared_error模块,并输出评估结果print 'The mean squared error of SGDRegressor is',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict))#使用mean_absolute_error模块,并输出评估结果print 'The mean absoluate error of SGDRegressor is',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict)) |
《机器学习及实践--从零开始通往Kaggle竞赛之路》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Redis-GEO
一. Redis的GEO特性 Redis3.2版本提供了GEO功能,支持存储地理位置信息用来实现诸如摇一摇,附近位置这类依赖于地理位置信息的功能.二. 命令2.1 增加地理位置信息 命令:geoadd ...
- 在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误
这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多 ...
- Mysql之DQL------基础查询
#笔记内容来自于B站尚硅谷教学视频(av49181542)use myemployees; 查询表中的单个字段 SELECT last_name FROM employees; 查询表中的多个字段 # ...
- 10_springmvc JSON数据交互
一.JSON数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便.比如:webservice接口,传输json数据. 二.springmvc进行数据交互 ...
- Berlin Programming Contest 2004 Heavy Transportation /// dijkstra oj22604
题目大意: 输入t:t为样例数 每个样例输入n,m:n 为顶点个数 m 为路径数 接下来m行 每行输入 u v w :从 u 点到 v 点的路承重为 w 输出 车子若想通过 1~n的最短路 车重需限 ...
- Mysql图解安装向导
注:本次安装为解压缩版: 1.设置Mysql环境变量: MYSQL_HOME: D:\Java\MySql\mysql-5.7.9-winx64 PATH: %MYSQL_HOME%\bin; 2.安 ...
- printk函数速率限制
如果你不小心, 你会发现自己用 printk 产生了上千条消息, 压倒了控制台并且, 可能地, 使系统日志文件溢出. 当使用一个慢速控制台设备(例如, 一个串口), 过量的消息速率也 能拖慢系统或者只 ...
- [Baltic2009]beetle【区间Dp】
Online Judge:Bzoj1761 Label:区间Dp 题目描述 在一条直线上有N个点,每个点M升水. 一个虫子在坐标轴0点上,它每个单位时间移动一格,每个点的水每单位时间消失1升. 问虫子 ...
- 74CMS漏洞打包(从老博客转)
引子 这套CMS是上个月中做的审计,总共找到几个后台漏洞,可后台getshell,一个逻辑漏洞可任意发短信,还有一个前台注入漏洞.不过发到了某平台上之后,审核又要求我提交利用的poc,所以懒得发去了, ...
- Java 怎样实现调用其他方法
Java主类的main方法调用其他方法 方法1: funA()方法设为静态方法. 当主类加载到内存,funA()分配了入口地址,主要代码如下: public class test{ static vo ...