1Python与KNN分类
机器学习
机器学习分类
- 监督学习
- 回归
- 预测的变量是连续的
- 分类
- 预测的变量是离散的
- 回归
- 无监督学习
- 聚类
- 半监督学习
- 人工标记数据太贵
- 无监督有时不靠谱
机器学习常见问题
- 欠拟合
- 模型过于简单,参数不够
- 过拟合
- 模型太复杂,参数过多,特征数目过多
- 模型太复杂,参数过多,特征数目过多
三个集合
- 训练集
- 生成模型
- 测试集
- 测试模型
- 开发集
- 调节参数
基于机器学习解决问题步骤
- 数据预处理
- 特征筛选
- 选择适用本问题的学习算法
- 训练模型(基于训练集和开发集)
- 测试模型(基于测试集)
- 开放使用
KNN
- K近邻分类
- 以全部训练样本作为代表点
- 计算未知样本与所有训练样本的距离
- 并以近邻K个样本的大多数类别作为未知样本的类别
scikit-learn
- scikit-learn
- 第三方提供的机器学习模块
- 包含了从数据预处理到训练模型的各个方面接口函数
- 包含KNN分类器的功能
- pip install sklearn
- 鸢尾花数据集
- 包含150个数据样本
- 分为3类:Setosa, Versicolour, Virginica
- 每个数据包含4个属性
- 花萼长度、花萼宽度、花瓣长度、花瓣宽度
- 花萼长度、花萼宽度、花瓣长度、花瓣宽度
KNN的优缺点
- 简单
- 支持多分类
- K的取值会影响结果
- 噪声数据敏感
练习题
1.无监督学习需要标注大量的数据才能用以训练得到模型。(×)
2.回归和分类问题都有可能发生过拟合。(√)
3.机器学习只能从有标注的数据中进行学习。(×)
4.训练模型时,常根据测试集的性能调节模型的参数。(×,开发集)
5.训练模型时,开发集的性能有助于判断过拟合。(√)
2汉语分词实例
练习题
1.使用jieba分词工具,不仅可以获取分词结果,还能标注出每个词的词性。(√)
2.jieba工具内部有一个词典,可用来辅助分词。(√)
3.基于词典的分词方法常用字符串匹配的方式实现。(√)
4.jieba工具可支持繁体字分词。(√)
5.分词规范、歧义切分和未登陆词的识别是中文分词常遇到的难题。(√)
6.中文自动分词的一个障碍是歧义,歧义可以分为交集型歧义和____________歧义。(组合型)
7.结巴分词提供了三种切分模式,分别是精确切分、全切分和__________切分。(搜索引擎)
3NLTK
Natural Language Toolkit;
自然语言处理领域最常用的模块之一,同时支持Python2和3;
数十个语料库和词库,例如:WordNet 电子字典;
提供了词法、句法分析功能;
具有强大高效的统计功能;
实现了多个经典机器学习方法;
活跃的官方交流论坛,官网网址是:http://www.nltk.org/
4Numpy
参考文档Numpy
5Pandas
- 基于NumPy
- 解决数据分析任务而创建
- 大量库和一些标准的数据模型
- 快速便捷地处理数据地函数和方法
- 提供
- Series 【一维】
- DataFrame 【二维】
- Panel 【三维】
Python pandas用法
【十分钟Python知识点】pandas最详细教程
6Matplotlib与数据可视化
第三方绘图模块
需要NumPy库的支持
提供多种坐标系
· 笛卡尔坐标系
· 极坐标
· 球坐标
制作的图形达到出版级的标准
安装:pip install matplotlib
绘制函数曲线
1.导入包
import matplotlib.pyplot as plt
import numpy as np
2.准备数据
x = np.arange(-np.pi,np.pi,0.1)
y = np.sin(x)
3.绘制图形
plt.plot(x,y,'b') # 'b'代表使用蓝色画曲线
线宽、线型、网格线控制
linewidth = 2.0 # 线宽
linestyle = ':'
# '-'实线 '-.'点划线 ':'虚线 '--' 双划线
plt.grid(True) # 绘制网格线
坐标轴和标题的控制
plt.xlim(-5,5) #设定横坐标范围
plt.xlabel("x") #横轴标识
plt.title("Plot y=x*x") #设定图形的标题
坐标轴刻度
plt.xticks(np.linspace(-np.pi,np.pi,5))
设置图例
plt.legend(loc = 'upper left') #左上角显示图例
饼图pie
散点图scatter
柱状图bar
子窗口制图 subplot
设置图的大小和分辨率
fig, axes = plt.subplots(figsize=(8,6), dpi=100)
保存图片
savefig(*args,**kwargs)
· 文件名是必需参数
plt.savefig(plot_file,bbox_inches=‘tight’)
· tight表示去掉不需要的白边