文章目录

  • 1.sklearn工具包
  • 2. sklearn 实现KNN
  • 3.breast_cancer 数据集

1.sklearn工具包

在机器学习的世界,总有着源码与调包之争。
调包的人不需要对算法理解得太过深刻,对背后的数学原理长久不用可能也会忘记,只需要调用他人写好的代来达成自己的目的,因此被写源码的人嘲笑嫌弃,业界甚至流传着"调包侠”的恶名,指那些只会调用其他人写好的代码,自己不写代码的人。然而,这其实只是一种假象一真正自己写的,只有超巨大厂BAT,头条,小米等等这些公司,他们拥有巨大的技术团队,超强硬件支撑,并且拥有过于细致的需求,以至于市面上以"大而全”为目标的算法库无法满足他们的需要。而这些公司中真正有价值的机器学习工程师,每天都在忙于改变世界,根本不会混到初学者的圈子里来。世界上几乎90%的算法公司都使用别人写好的包,因为自己创造算法不是那么简单的事儿。且不说如果自己写算法能否写得比市面上已经存在得包还快还稳定,-个算法不仅仅是要实现对结果的预测,它最终要最终部署到整个系统中,实现在产品上,是有非常长的一段路需要走的,其中包括了从后端数据库到前端产品的一系列过程,如果你的算法是自己写的,你的兼容性很难保证,除非公司的所有技术接口都是自己写的一套程序!而这对于世界上的大部分公司来说根本不可能,没那么闲,没那么多资源和时间。

sklearn官方文档

自2007年发布以来,scikit-learn已经成为Python中重要的机器学习库了。scikit-learn, 简称sklearn, 支持了包括分类、回归、降维和聚类四大机器学习算法,以及特征提取、数据预处理和模型评估三大模块
在工程应用中,用Python手写代码来从头实现一个算法的可能性非常低,这样不仅耗时耗力,还不一定能够写出构架清晰,稳定性强的模型。更多情况下,是分析采集到的数据,根据数据特征选择适合的算法,在工具包中调用算法,调整算法的参数,获取需要的信息,从而实现算法效率和效果之间的平衡。而sklearn,正是这样一个可以帮助我们高效实现算法应用的工具包。
sklearn基本建模流程

  • 主要设计原则
    一致性: 所有对象共享一个简单一致的界面(接口)。
    ● 估算器: fit()方法。 基于数据估算参数的任意对象,使用的参数是一 个数据集(对应X,有监督算法还需要一 个y),引导估算过程的任意其他参数称为超参数,必须被设置为实例变量。
    ● 转换器: transform0方法。 使用估算器转换数据集,转换过程依赖于学习参数。可以使用便捷方式:fit transform0,相当于先fit()再transform0. (fit transform有时被优化过,速度更快)
    ● 预测器: predictQ方法。 使用估算器预测新数据,返回包含预测结果的数据,还有score(方法:用于度量给定测试集的预测效果的好坏。(连续y使用R方,分类y使用准确率accuracy)

监控:
检查所有参数,所有估算器的超参数可以通过公共实例变量访问,所有估算器的学习参数都可以通过有下划线后缀的公共实例变量访问。

防止类扩散:
对象类型固定,数据集被表示为Numpy数组或Scipy稀疏矩阵,超参是普通的Python字符或数字。

合成:
现有的构件尽可能重用,可以轻松创建一个流水线Pipeline。

合理默认值:
大多数参数提供合理默认值,可以轻松搭建一个基 本的工作系统。
CLF、KNN、DT、RF、SVM都支持估算器功能

clf.fit()

2. sklearn 实现KNN

KNN实现分类问题,是不需要先使用数据,可以先训练一组数据,然后进行分类,这里分成三类,P为测试点,三类中心点为[0,0],[1,1],[-1,1]

# sklearn 实现
X , y = make_blobs(n_samples = 50,cluster_std = [0.3, 0.3, 0.3],centers = [[0,0],[1,1],[-1,1]],random_state = r)
p = [[0.5, 1.5]]
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors = 4)   #实例化
clf.fit(X, y)    #训练数据
clf.predict(p)   #预测数据

3.breast_cancer 数据集

导入breast_cancer 数据集

# breast_cancer 数据集from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split# 探索数据集
data = load_breast_cancer()
x = data['data']
y = data['target']

训练数据集

name = ['平均半径','平均纹理','平均周长','平均面积','平均光滑度','平均紧凑度','平均凹度','平均凹点','平均对称','平均分形维数','半径误差','纹理误差','周长误差','面积误差','平滑度误差','紧凑度误差','凹度误差','凹点误差','对称误差','分形维数误差','最差半径','最差纹理','最差的边界','最差的区域','最差的平滑度','最差的紧凑性','最差的凹陷','最差的凹点','最差的对称性','最差的分形维数']pd.DataFrame(x, columns = name)
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors = 10)   #实例化
clf.fit(x, y)

预测数据准确率

clf.score(x, y) # 准确率的计算

或者这个也一样

#准确率的计算
total_data = pd.DataFrame(x, columns = name)
total_data['Y'] = y
total_data['Y_pred'] = clf.predict(x)
(total_data['Y'] == total_data['Y_pred']).sum() / x.shape[0]

结果

0.9420035149384886

划分训练集和测试集正确率

# 划分训练集和测试集
from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3#,random_state = 420)clf = KNeighborsClassifier(n_neighbors = 2)   #实例化
clf.fit(x_train, y_train)
clf.score(x_train, y_train), clf.score(x_test, y_test)

正确率百分比

(0.9698492462311558, 0.9181286549707602)

大于5%属于过拟合结果。
**过拟合:**模型在训练集下面学的实在太好了,将训练集的嵘音误当成X与Y的真实的规律学习进去了,从而在测试集上的表现非常差

python的scikit-learn算法库实现相关推荐

  1. AI: Python 的Matplotlib 绘图算法库 介绍。

    Python 的Matplotlib 绘图算法库 介绍. Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形  . 通过 Matp ...

  2. 【PLA】基于Python实现的线性代数算法库之斯密特正交化

    [PLA]基于Python实现的线性代数算法库之斯密特正交化 算法包下载链接:https://download.csdn.net/download/qq_42629529/79481514 from ...

  3. 机器学习与Scikit Learn学习库

    摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...

  4. 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络

    本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...

  5. Python主要智能优化算法库汇总

    最近几年简单浏览和对比了一些智能算法的库.现将各种库的主要信息.相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择. 文章目录 1.DEAP 2.mealpy 3.scikit-opt ( ...

  6. python算法库执行效率_Python智能优化算法库小汇总

    最近查了一圈python的智能优化算法库,发现在python里面这样的库相对一些传统的语言还真是不太多(比如Matlab).总的看起来似乎起步都还比较晚(个人认为有可能是因为智能算法本身相对复杂并且过 ...

  7. python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别

    之前我们用自己写KNN算法[网址]识别了MNIST手写识别数据 [数据下载地址] 这里介绍,如何运用Scikit learn库中的KNN,SVM算法进行笔迹识别. 数据说明: 数据共有785列,第一列 ...

  8. Python之数据挖掘实践--scikit learn库介绍和下载、实践、采坑

    文章目录 前言 A sklearn库是什么? A1 依赖库介绍 1.Numpy库 2.Scipy库 3. matplotlib A2 下载安装 B 实践过程 B1 主成分分析(PCA) B2 实现Km ...

  9. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

  10. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

最新文章

  1. python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数
  2. 【iCore4 双核心板_FPGA】例程八:乘法器实验——乘法器使用
  3. 公式没有编号_知乎公式编辑器的一些小技巧 amp; 使用规范
  4. Codeforces#371 Div2
  5. Hadoop:pig 安装及入门示例
  6. php从内存中获取源码_PHP源码分析之变量的存储过程分解
  7. logstash mysql增量_Logstash jdbc 按时间增量更新的一些总结
  8. python入门指南-Python 入门指南
  9. 【NIPS 2020】通过文本压缩,让BERT支持长文本
  10. smpt authentification 配置
  11. 高斯过程和高斯过程回归
  12. 计算机识别人脸原理,深入浅出人脸识别原理
  13. 秩和检验的概念及python实现
  14. 什么是5G LAN 5G LAN商用爆发推动5G创新应用 提速数字转型新引擎
  15. 微信小程序-如何实现图片授权保存本地?【亲测有效,附完整源码】
  16. 电脑摄像头未能创建连接服务器,电脑提示未能创建视频预览,请检查设备连接的原因及解决办法...
  17. 3星|《混乱》:案例比较有趣,推导过程和结论略牵强
  18. 灵魂画手之——天堂鸟
  19. 大数据分析案例-基于KNN算法对茅台股票进行预测
  20. MySQL数据类型 int(M) 表示什么意思?

热门文章

  1. 凯立德3d实景地图_360全景地图、3D全景地图、三维实景地图哪个好?
  2. 会做饭的机器人曰记_CCTV.com
  3. python自动化运维快速入门-Python自动化运维快速入门
  4. getParentalNodePaths、osg::NodePathList、osg::NodePath详解
  5. 【BIRT】使用rptlibrary设置统一数据源
  6. 国内敏捷项目协作工具亲测推荐
  7. Weblogic数据池测试出错
  8. session 详解
  9. js中cookie操作
  10. rpm方式安装MySQL5.1.73