#课程链接
https://www.imooc.com/video/20165

一、机器学习介绍以及环境部署

1、机器学习介绍及其原理

1)什么是人工智能

人工智能就其本质而言,是机器对人的思维信息过程的模拟,让它能像人一样思考。根据输入信息进行模型结构、权重更新,实现最终优化

特点:信息处理、自我学习、优化升级。

2)核心方法

机器学习:一种实现人工智能的方法,使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。比如垃圾邮件检测、房价预测。

深度学习:一种实现机器学习的技术,模仿人嘞神经网络,建立模型,进行数据分析。比如人脸识别、语义理解、无人驾驶。

3)主要类别

监督学习:基于数据及结果进行预测。一组输入数据对应一个正确的输出结果

非监督学习:从数据中挖掘关联性。不存在“正确的”答案

4)基本原理

监督学习核心步骤:1)使用标签数据训练机器学习模型;2)调用训练好的机器学习模型,根据新的输入数据预测对应的结果

非监督学习:不需要标签数据,而是通过引入预先设定的优化准则进行模型训练,比如自动将数据分为三类

2、机器学习开发环境部署

1)python介绍

python是一种解释性的、面向对象的、移植性强的高级程序设计语言。

2)scikit-learn介绍

python语言中专门针对机器学习而发展起来的一款开源框架,可以实现数据预处理、分类、回归、降维、模型选择等常用的机器学习算法

3)Jupyter notebook介绍

它是一个开源的web应用程序,旨在方便开发者创建和共享代码文档。

4)环境部署

#第一步,安装python
https://www.python.org/
#第二步,安装Anaconda
https://www.anaconda.com/
#第三步,新建开发环境、安装numpy、scikit-learn库
conda create -n env_name
pip(conda) install package_name -i source_address
#第四步,Jupter notebook界面优化
https://github.com/dunovank/jupter-themes

二、机器学习编程实战

3、机器学习实现之数据预处理

1)Iris数据集

Iris鸢尾花数据集是一个经典数据集,属于监督式学习应用:根据花的四个特征预测鸢尾花卉属于哪一品种。

2)使用scikit-learn进行数据处理的关键

区分属性数据与结果数据;属性数据与结果数据都是量化的;运算过程中,属性数据与结果数据的类型都是Numpy数组;属性数据与结果数据的维度是对应的

3)代码

#iris数据加载
from sklearn import datasets
iris = datasets.load_iris()
展示iris数据
print(iris.data)
print(iris.feature_names)
print(iris.target)
print(iris.target_names)
print(type(iris.data))
print(type(iris.target))
print(iris.data.shape)
#x输入数据赋值,y输出数据赋值
x = iris.data
y = iris.target
print(x)
print(y)

4、机器学习实现之模型训练

1)分类问题介绍

定义:根据数据集目标的特征或属性,划分到已有的类别中,常用的分类算法:KNN、逻辑回归、决策树、朴素贝叶斯

2)KNN模型

给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最相邻的k个实例,这k个实例的多数属于某个类,就把该输入实例分类到这个类中

3)代码

#导入iris数据集
from sklearn import datasets
iris = datasets.load_iris() #样本数据与结果分别赋值到x,y
x = iris.data
y = iris.target #确认样本与输出数据维度
print(x.shape)
print(y.shape) '''
使用scikit-learn建模四步骤
1、调用需要使用的模型类
2、模型初始化
3、模型训练
4、模型预测
'''
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=1) print(knn) knn.fit(x,y) knn.predict([[1,2,3,4]]) x_test = [[1,2,3,4],[2,4,1,2]] knn.predict(x_test) #可设置新的k值

5、机器学习实现之模型评估(一)

1)评估流程

<1>将整个数据集用于训练与测试:1'使用整个数据集进行模型训练;2'使用相同的数据集进行测试,并通过对比预测结果与实际结果来评估模型表现

准确率:正确预测的比例;用于评估分类模型表现的常用指标

缺点:1'训练模型的最终目标是为了预测新数据对应的结果;2'最大化训练准确率通常会导致模型复杂化(比如增加维度),因此将降低模型的通用性;3'过度复杂模型容易导致训练数据的过度拟合

<2>分离训练数据与测试数据:1'把数据分成两部分:训练集、测试集;2'使用训练集数据进行模型训练;3'使用测试集数据进行预测,从而评估模型表现

优点:1'可实现在不同数据集上进行模型训练和预测;2'建立数学模型的目的是对新数据的预测,基于测试数据计算的准确率能有效地评估模型表现

2)模型关键参数选择

目标:确定合适的参数组,提高模型预测准确率

方法:

1、遍历参数组合,建立对应的模型

2、使用训练集数据进行模型训练

3、使用测试集数据进行预测,评估每个模型表现

4、通过图形展示参数组与准确率的关系,确定合适的参数组

3)代码

#将整个数据集用于训练与测试
#数据加载 模型训练与预测
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
y = iris.target from sklearn.neighbors import KNeighborsClassifier
knn_5 = KNeighborsClassifier(n_neighbors= 5)
knn_5.fit(x,y) y_pred = knn_5.predict(x)
print(y_pred)
print(y_pred.shape) #准确率计算
from sklearn.metrics import accuracy_score
print(accuracy_score(y, y_pred)) #KNN(K=1)
knn_1 = KNeighborsClassifier(n_neighbors = 1)
knn_1.fit(x, y )
y_pred = knn_1.predict(x)
print(accuracy_score(y, y_pred))
#分离训练数据与测试数据
#数据分离
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size =0.4) #分离后数据集的维度确认
print(x_train.shape,x_test.shape,y_train.shape,y_test.shape) #分离后数据集的训练与评估
knn_5_s = KNeighborsClassifier(n_neighbors = 5)
knn_5_s.fit(x_train, y_train)
y_train_pred = knn_5_s.predict(x_train)
y_test_pred = knn_5_s.predict(x_test) #分离后模型预测的准确率
print(accuracy_score(y_train,y_train_pred))
print(accuracy_score(y_test,y_test_pred))

6、机器学习实现之模型评估(二)

python实现机器学习笔记的更多相关文章

  1. Python机器学习笔记:使用Keras进行回归预测

    Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...

  2. Python机器学习笔记:sklearn库的学习

    网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一方面,其实最好的教程就是官方文档. 官方文档地址:https://scikit-learn.org/stable/ (可是官方文档非常 ...

  3. Python机器学习笔记:不得不了解的机器学习面试知识点(1)

    机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...

  4. Python机器学习笔记:不得不了解的机器学习知识点(2)

    之前一篇笔记: Python机器学习笔记:不得不了解的机器学习知识点(1) 1,什么样的资料集不适合用深度学习? 数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势. 数据集没有局 ...

  5. Python机器学习笔记 集成学习总结

    集成学习(Ensemble  learning)是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合,从而获得比单个学习器显著优越的泛化性能.它不是一种单独的机器学习算法啊,而更像是一种优 ...

  6. Python机器学习笔记:K-Means算法,DBSCAN算法

    K-Means算法 K-Means 算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛.K-Means 算法有大量的变体,本文就从最传统的K-Means算法学起,在其基础上学习 ...

  7. python机器学习笔记:EM算法

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域的基础,比如隐式马尔科夫算法(HMM),LDA主题模型的变分推断算法等等.本文对于E ...

  8. Python机器学习笔记:SVM(1)——SVM概述

    前言 整理SVM(support vector machine)的笔记是一个非常麻烦的事情,一方面这个东西本来就不好理解,要深入学习需要花费大量的时间和精力,另一方面我本身也是个初学者,整理起来难免思 ...

  9. Python机器学习笔记:异常点检测算法——LOF(Local Outiler Factor)

    完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote 在数据挖掘方面,经常需 ...

随机推荐

  1. 段间跳转之TSS段

    TR寄存器,TSS描述符,TSS段 TR寄存器与普通的段寄存器一样都有可见部分和不可见部分.TR的可见部分为16位为其段选择子,不可见部分是32位的TSS基地址和16位的大小. TSS描述符存在GDT ...

  2. 有趣的css—简单的下雨效果2.0版

    简单的下雨效果2.0版 前言 笔者上一篇发布的文章有趣的css-简单的下雨效果中有位老哥给我提了一个很棒的建议,大致意思是波纹应该产生于雨滴的消失处. 这是按照老哥的建议完善后的效果图: 由于我制作G ...

  3. char值不能直接用作数组下标

    #include <stdio.h> //用 char 的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到 //char 可能是负数.有的人考虑到了,先强制转型为 unsi ...

  4. 浅尝js垃圾回收机制

    局部作用域内的变量,在函数执行结束之后就会被js的垃圾回收机制销毁   为什么要销毁局部变量? => 为了释放内存   js垃圾回收机制何时会销毁局部变量 : 如果局部变量无法再得到访问,就会被 ...

  5. Linux单设备多路USB串口的实现方法介绍

    某设备需要提供多路USB串口的功能给主机端使用,比如一路用作业务1通信功能,一路用作业务2通信功能,一路用作debug抓log用途,诸如此类.如下图所示. 要实现上述设备功能,可以参考如下步骤. 1) ...

  6. Linux常见错误解决办法

    1. 程序运行的一些基础知识 1. 编译程序时去哪找头文件? 系统目录:就是交叉编译工具链里的某个 include 目录:也可以自己指定:编译时用 " -I dir "选项指定. ...

  7. JMM——Java内存模型抽象|八种同步操作|操作规则

    JMM 调用栈&本地变量在线程栈上 对象整体在堆上(包括其本地变量,不论类型),栈有其引用即可访问, 线程调用同一个对象时,是访问该对象的私有拷贝 每个CPU有自己的高速缓存 高速缓存存在意义 ...

  8. git合并代码到主分支

    git合并login分支到master分支 1.首先查看源码状态 git status 2.添加到暂存区 git add . git status //添加到暂存区后再次查看源码状态 3.提交代码到本 ...

  9. [Java]数据分析--聚类

    距离度量 需求:计算两点间的欧几里得距离.曼哈顿距离.切比雪夫距离.堪培拉距离 实现:利用commons.math3库相应函数 1 import org.apache.commons.math3.ml ...

  10. [bug] Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MyS

    sql语句写错了,如图,where前多了个逗号