Python数据挖掘入门与实践 第二章2.1 书本代码

第2章:用scikit-learn 估计器分类

scikit-learn 估计器

看到这本书的代码。对于我这个30岁初学编程的人来讲太为精妙。
忍不住想要写下来保存起来~
会对代码做出一些我的理解,初学者请多多包含。
注释的‘##’为代码的上方或者右侧。

近邻算法
即将用到的数据集叫作电离层(Ionosphere),这些数据是由高频天线收集的。这些天线的目的是侦测在电离层和高层大气中存不存在由自由电子组成的特殊结构。如果一条数据能给出特殊结构存在的证据,这条数据就属于好的那一类(在数据集中用“g”表示),否则就是坏的(用“b”表示)。我们要做的就是建立分类器,自动判断这些数据的好坏。

数据集有大佬上传了github

该数据集每行有35个值,前34个为17座天线采集的数据(每座天线采集两个数据)。最后一个值不是“g”就是“b”,表示数据的好坏,即是否提供了有价值的信息。

import numpy as np
import csv
## 创建训练集和测试集。导入并运行train_test_split函数。下文详解
from sklearn.cross_validation import train_test_split  
## K近邻分类器
from sklearn.neighbors import KNeighborsClassifier 

data_filename = r'路径\ionosphere.data' ##上面git的文件下载后的存放位置。
## 定于两个矩阵X和y,全部是0或者False,接下来的代码我觉得很有意思。
X = np.zeros((351, 34), dtype='float') 
y = np.zeros((351,), dtype='bool') 


with open(data_filename, 'r') as input_file:## 打开上面得data文件
    reader = csv.reader(input_file)
	
	## 这个enumerate()函数,直接返回每一行的行号和数据,行号开始可选:
	## enumerate(sequence, [start=0]) 参数:
	## sequence -- 一个序列、迭代器或其他支持迭代对象。
	## start -- 下标起始位置。
    for i, row in enumerate(reader):
    	## 每一行的数据,截取row的前面34个数据(row[:-1]),并且定义为浮点型。
        data = [float(datum) for datum in row[:-1]]
        X[i] = data
        ## 如果是'g'就返回True。第一次看到这么写代码,感觉好兴奋。
        y[i] = row[-1] == 'g'

## train_test_split(原始数据X,目标
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值