Python: 通过scikit-learn了解机器学习

在TensorFlow的Udacity课程学习中,牵涉到这个类库的大量使用,所以,先在youtube上做了个相关课程的补充学习

Supervised Learning(有监督学习)

Machine Learning分为有监督学习与无监督学习,这个系列重在介绍有监督学习,即,通过告知算法有关Features和对应的输出Labels,然后当有新的feature数据时,做label预测。

环境搭建

首选Anaconda安装,Mac下可以用brew直接装。

通过Iris数据库管中窥豹

Iris是sklearn中内嵌的一组数据,可以用以学习通过特征值对鸢尾花进行分类。1

数据加载

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data  # numpy.ndarray, Features的那些observation
y = iris.target  # numpy.ndarray与data的一个label的一一对应

上面两个数据都是numpy中ndarray类型。ndarray作为类似于高代中的矩阵来表达数据,通过高效的C底层库,能比python内置类库更快地做大量数据处理。 iris.data.shape 的结果为 (150, 4),表面一共有150组数据(Observations),每组有4个数据(Features)。在金融领域的数据分析处理上,因为对于表操作得比较多,所以pandas(建立在numpy之上)也是使用比较多的库。

K-nearest neighbors (KNN) classification

对已有数据进行分类,当新的数据出现时,寻找已知数据中K个和新数据最接近的数据,然后通过这K个数据的label,得出新的数据应该分在哪个类型中。

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X, y)
X_new = [[3, 5, 4, 2], [5, 4, 3, 2]]
knn.predict(X_new)

通过调用KNeighborsClassifier这个类,然后把一开始加载的数据通过fit()函数来适配,然后对于新的数据用predict来得出属于哪一类。这个里面的K值使用了1,不一定是最优的,那如何找到这个最优参数?

验证模型参数

对于模型进行验证,一种方法就是把数据进行分类,分成2类。然后寻找测试数据匹配度好的参数。有些过拟合的情况下,训练数据的拟合度很好,但到测试数据就悲剧了。

  • 训练数据 (模型用以匹配)
  • 测试数据 (模型用以测试其有效性)

其中,train_test_split可以自动完成这个分类工作,并且通过test_size自动划分百分之多少的数据作为测试数据。

from sklearn.model_selection import train_test_split  # 注意,这个模块从0.20开始
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值