Python机器学习【一】 - Hello World_李航 机器学习pychorh hellow world-程序员宅基地

技术标签: python  机器学习  深度学习  人工智能  Python  

Python机器学习【一】 - Hello World

原文地址:Python机器学习【一】 - Hello World

网上关于Python机器学习的教程很多,但是一直没有找到适合自己口味的Hello World级别的教程,导致一段时间学习的东西比较杂乱,每个知识点好像都明白,但就是不知如何下手写第一个示例,写程序都应该经历过有些功能实现从一脸茫然到豁然开朗可能就在一瞬间。

一、前期准备
python

必备语言

机器学习

计算机通过观察数据自动学会数据处理的规则,这些规则随后可应用于新的数据,并使计算机自主生成答案。

sklearn库

scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法,还包括了特征提取,数据处理和模型评估者三大模块,是Python重要的机器学习库。

K近邻算法

k近邻算法是一种基本分类和回归方法

K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

二、Hello World目标

有150个鸢尾花数据样本,每个样本采样花萼长度、花萼宽度、花瓣长度、花瓣宽度4个特征,鸢尾花分为山鸢尾(iris-setosa)、变色鸢尾(iris-versicolor)和维吉尼亚鸢尾(iris-virginica)三种类型。已知150个样本中,三种类型各占50个,把105(70%)个数据样本作为训练数据,经过训练模型、模型评估,预测剩余45(30%)个数据样本的类型,并将预测结果相关分析指标展示出来(准确率、召回率等)。

三、实现步骤
  1. 安装sklearn
pip install -U scikit-learn
  1. Python实现

机器学习一般流程:获取数据 -> 数据预处理 -> 训练模型 -> 模型评估 -> 预测,分类

  • 获取数据
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report

# 获取鸢尾花数据集,sklearn库提供
iris = datasets.load_iris()
# 共150个样本,每个样本有4个特征值
print("数据规模", iris.data.shape) # (150, 4)
  • 数据预处理
"""
将训练集和测试集分开,测试集占30%
Params: 
    iris.data: 数据集的特征值  
    iris.target:数据集的目标值
    test_size=0.3:测试集的大小
Returns:
    x_train:训练集的特征值
    y_train:训练集的目标值
    x_test:测试集的特征值
    y_test:测试集的目标值

示例:
特征值
[[7.7 2.6 6.9 2.3], [6.0 2.7 5.1 1.6]] 即 [花萼长度 花萼宽度 花瓣长度 花瓣宽度]...
对应目标值
[2 1] 即 [维吉尼亚鸢尾 变色鸢尾]
"""
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)
  • 训练模型
"""
创建一个K近邻模型
Params:
    weights: uniform:不考虑权重,distance 考虑权重
"""
knn = KNeighborsClassifier(weights='uniform')
# 输入训练数据进行学习建模
knn.fit(x_train, y_train)
  • 模型评估
# 对测试数据进行预测
y_predict = knn.predict(x_test)
# 准确率
score = knn.score(x_test, y_test)
print("准确率:%s" % score)
print("其他指标:\n", classification_report(y_test, y_predict, target_names=iris.target_names))

#               precision    recall  f1-score   support
#
#      setosa       1.00      1.00      1.00        16
#  versicolor       0.88      0.94      0.91        16
#   virginica       0.92      0.85      0.88        13
#
# 假设预测目标为0和1,数据中1的个数为a,预测1的次数为b,预测1命中的次数为c
# precision: 精确率 c / b
# recall: 召回率 c / a
# f1-score: 2 * precision * recall / (precision + recall)
# support 各类别参与训练的样本数

具体指标的意义可以参考下方的链接

参考
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zszangy/article/details/113494385

智能推荐

【面试题笔记-Java】Java基础_变量【pattern】应定义为常量或者字段-程序员宅基地

文章浏览阅读2.2k次。参考JavaGuide和一些面经做的笔记,方便自己记忆Java基础1. 面向对象和面向过程的区别面向对象的设计思想是将需要解决的问题分解成一个个对象,这一个个对象可以用来描述在完成这件事中扮演的具体角色和行为。面向过程的设计思想是将需要解决的问题拆分成一个个具体的步骤,然后设置这些步骤的实现方法,然后按照顺序一步步实现即可优缺点:面向对象相较于面向过程而言,有着易维护、易复用和易扩展的特点,由于面向对象有封装、继承和多态的特点,所以能够设计出低耦合的系统,易于去维护;而相对面向过程,面向对象性能_变量【pattern】应定义为常量或者字段

Forbidden (CSRF cookie not set.)-程序员宅基地

文章浏览阅读5.3k次,点赞6次,收藏5次。使用django做接口,调用接口:报错一:Forbidden (CSRF cookie not set.): /code_api/xzcf_jiaotongbu/解决:修改settings.py文件,注释掉django.middleware.csrf.CsrfViewMiddleware’MIDDLEWARE_CLASSES = [‘django.middleware.securit..._forbidden (csrf cookie not set.)

2的幂次方-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏3次。2的幂次方(Noip1998)【问题描述】 任何一个正整数都可以用2的幂次方表示。例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b)。 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7=22+2+20 (_2的幂次方

poi导出word模板项目实例(一个文件)-程序员宅基地

文章浏览阅读152次。在页面上填写值,然后导出到word模板中,并把页面上的值带到模板中,也就是导出word文档,提前有word 的模板形式,1.jsp 页面 <table class="formTable"> <TR> <TD class="label">会议地点</TD> <TD class="content"..._java poi 导出word样例

商品规格设计_mongodb 商品规格 设计-程序员宅基地

文章浏览阅读1.1k次。最近面试的时候遇到一个问题,大概意思是说商城一件衣服,颜色有蓝、白、黑,尺码有 S、M、L 码,不同的颜色和尺码搭配的价格和库存是不一样的,这种关系如何设计数据库呢?示例图之前也没用遇到过这种问题,第一感觉就是以衣服表为主表,再分表建立子表:颜色表和尺码表以及颜色-尺码管理表。商品表字段(item):id name…颜色表字段(color):id name item_id …尺码表字段..._mongodb 商品规格 设计

1205 对icmp报文的构造_test center构造icmp报文-程序员宅基地

文章浏览阅读498次。1205 对icmp报文的构造1,存储空间申请icmp_data =(char*) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,MAX_PACKET); 2,初始化memset(icmp_data,0,MAX_PACKET); 3,构造报文 //重要函数,填充ICMP包头FillICMPData(i_test center构造icmp报文

随便推点

学习红帽linux(RHCE)的就业前景_rhce 35岁-程序员宅基地

文章浏览阅读2k次。1.根据对招聘信息的调查表明,在对IT人才6万多个需求中,LINUX人才需求为2万5千人以上,其中95.1%的职位明确表明要求持有红帽认证工程师(RHCE)证书。  2.薪水待遇高  Linux领域最权威的国际认证RHCE证书,是最具含金量的国际IT职业证书之一,它能证明您在Linux方面独特的专业技能,获得更多提升和提薪的机会;由于人才紧缺,一些供不应求的职位,如 Linux系统工程师、_rhce 35岁

Maven初识-程序员宅基地

文章浏览阅读117次。Evernote Export 一、不使用Maven开发时存在的问题(为什么使用Maven)1、一个项目就是一个工程。如果项目非常庞大,就不适合继续使用package来划分模块,最好是一个模块对应一个工程,利用分工协作。借助Maven就可以将一个项目拆分成多个项目。2、项目中需要的jar包必须手动“复制”、“粘贴”到WEB-INF/lib目录下带来的问题是:同...

单链表基本操作的实现_本关任务:根据链表的基本知识完成单链表的初始化及数据插入操作。-程序员宅基地

文章浏览阅读382次。package pac1;class Node{ public Node next; //指针域 public int data; //数据域 public Node(int data) { this.data = data; } public void show(){ System.out.print(data+" "); }}public class LinkLis_本关任务:根据链表的基本知识完成单链表的初始化及数据插入操作。

DAY 7 数据分析工具_剔除眼动成分-程序员宅基地

文章浏览阅读79次。导入数据 定位电极 剔除无用电极 重新选择参考电极,位置随意 滤波 分段 插值坏导和剔除坏段 Run ICA 剔除眼动成分EEG信号的分析和处理可能会涉及以下⼀个或多个⽅⾯:信号的预处理(预处理 也需要多个步骤)、ERP时域分析、时频分析、信号的功率谱计算、功能连接、溯源分析等等..._剔除眼动成分

php上传图片并显示代码,php图片上传代码(完整版已测试)-程序员宅基地

文章浏览阅读2.4k次。php图片上传代码本来是一个很简单的事,之前笔者图省事,直接网上下载了一个php图片上传小程序,结果导致wordpress网站被黑,因为留有后门,后来排查直接删除整个小程序,自己用重新写了一个php图片上传功能,缺点就是只能单张上传!简单说一些这个这段代码,上传目录:文件当前文件夹;图片文件夹:自动生成,格式为日期的年月,如:201801,201802;图片是否压缩:否;图片名称:以上传时间的li..._php上传图片并显示图片代码

浏览器了解(七)Layout_浏览器控制台 查看layout-程序员宅基地

文章浏览阅读761次。Layout浏览器在Render之后已经确认了Render元素的大小,样式等信息,但是此时还没有确定元素的具体位置信息,这里还需要一个Layout过程。Layout过程计算元素的位置信息,通常情况下浏览器的中下面的元素的布局不会影响到上面的元素的布局,所以Layout可以自上而下地进行。其坐标位置基于Frame,使用top和left来定位。Layout的范围:1. 全局_浏览器控制台 查看layout

推荐文章

热门文章

相关标签