一.数据挖掘概述
1.数据挖掘定义
数据挖掘一般是指从大量数据中通过算法搜索出隐藏于其中的信息的过程,也认为数据挖掘是一个完整的知识发现,包括数据清理、建模、评估等过程。
2.数据挖掘功能
数据挖掘主要的功能是从现有的信息中提取数据的模式和模型。数据挖掘可以从多种数据来源中提取信息,然后从信息中挖掘出相关的模式和内在联系。数据挖掘可以用来找出各种可能存在的模型,但模型是否有效,还需要用户根据现实判断。数据挖掘是一门专做数据支撑的技术。
3.数据挖掘任务
- 预测性任务
- 回归
- 分类
- 预测
- 描述性任务
- 关联
- 聚类
- 异常检测
二.Pandas
1.Series定义
Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成
Series的字符串表现形式为:索引在左边,值在右边
2.数据结构Series主要特点:
一种key-value型数据结构,每个元素有两部分组成
Series(data=[‘a’,‘b’,1],index=[‘t’,‘s’,‘q’])
两种index : 显式索引和隐式下标
注意:index和data个数一致。
三方面来了解Series
创建
读写
运算
3.Series创建还有查看
结果
ser4不合法,data个数和index个数不一致。
4.Series读写
- 下标访问和切片
- 显式索引
结果
注意
print(s1[‘h’:‘j’])的结果是
print(s1[0:2])的结果是
print(s1[[‘i’,‘k’]])的结果是
5.Series运算
注意看第三个print和第四个print
import pandas as pd
a = pd.Series([1, 2, 3, 4, 5])
print(a)
print(a.mean())
结果是
6.引入pandas
import pandas as pd
安装pandas命令行输入以下命令:
pip install pandas
数据结构DataFrame
7.数据结构DataFrame
- DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)
- DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)
几方面来了解DataFrame
- 创建
- 索引
- apply方法
- 算术运算
- 缺失值处理
8.数据结构DataFrame的创建
import pandas as pd
data={'cou':['aaa','bbb','ccc'],'pob':[10,24,30]}
df=pd.DataFrame(data)
print(df)
print("****")
print(df['pob'])
print(df.pob)
print("****")
print(df['pob'][1])
print(df.pob[1])
print("****")
print(df.iloc[1,0])
print(df.iloc[0,1])
print("****")
print(df.iloc[0])
print("****")
print(df.loc[0,'pob'])
print("****")
print(df['pob'][0:2])
print("****")
print(df['pob'][[0,2]])
print("****")
print(df.iloc[0:2,1:3])
结果
cou pob
0 aaa 10
1 bbb 24
2 ccc 30
****
0 10
1 24
2 30
Name: pob, dtype: int64
0 10
1 24
2 30
Name: pob, dtype: int64
****
24
24
****
bbb
10
****
cou aaa
pob 10
Name: 0, dtype: object
****
10
****
0 10
1 24
Name: pob, dtype: int64
****
0 10
2 30
Name: pob, dtype: int64
****
pob
0 10
1 24
Process finished with exit code 0
8.数据结构DataFrame重新索引
创建一个适应新索引的新对象,该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值。注意,原有数据结构本身未改变。
结果
9.常用函数汇总
Pandas处理缺失值的函数有?
fillna()
例子
结果
三.机器学习
1.什么是机器学习
- 机器学习的英文名称叫Machine Learning,简称ML,该领域主要研究的是如何使计算机能够模拟人类的学习行为从而获得新的知识。
- 简单来说,机器学习就是让计算机从大量的数据中学习到相关的规律和逻辑,然后利用学习来的规律来预测以后的未知事物
2.学习的步骤
数据的加载
选择模型
模型的训练
模型的预测
模型的评测
模型的保存
3.sklearn机器学习的框架步骤及代码
- 第一步使用sklearn导入数据
#导入数据集模块
from sklearn import datasets
#分别加载iris和digits数据集
iris = datasets.load_iris()
digits = datasets.load_digits()
#使用.data() 和.target()方法熟悉导入的数据结构
print(iris.data)
print(iris.target)
#使用sklearn分割数据
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=
train_test_split(iris.data,iris.target,test_size=0.4,random_state=0)
第二步使用sklearn模型的选择
from sklearn import svm
svc = svm.SVC()
第三步使用sklearn模型的训练
svc.fit(X_train, y_train)
第四步使用sklearn进行模型的预测
print(svc.predict([[5.84,4.4,6.9,2.5]]))
第五步机器学习评测的指标
通常从算法类型选择指标:
- 分类指标
- 回归指标
- 聚类指标
机器学习库sklearn中,我们使用metrics方法实现:
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
机器学习库sklearn中,我们使用cross_val_score方法实现:
from sklearn.model_selection import cross_val_score
scores = cross_val_score(knn, iris.data, iris.target, cv=5)
第六步机器学习:模型的保存
#机器学习库sklearn中,我们使用joblib方法实现:
from sklearn.externals import joblib
joblib.dump(knn, 'filename.pkl')
knn1 = joblib.load('filename.pkl')
#测试读取后的Model
print(knn1.score(X_test, y_test))
机器学习存在的问题过拟合
过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是机器学习设计中的一个核心任务。
拟合问题的解决
train_loss,test_loss=validation_curve(
SVC(),X,y,param_name='gamma',param_range=param_range,cv=10, scoring='mean_squared_error')
train_loss_mean=-np.mean(train_loss,axis=1)
test_loss_mean=-np.mean(test_loss,axis=1)
四.分类算法与应用
监督学习可分为
- 分类
- 回归
1.分类方法的定义
- 分类分析的是根据已知类别的训练集数据,建立分类模型,并利用该分类模型预测未知类别数据对象所属的类别。
2.贝叶斯公式
4.朴素贝叶斯算法
朴素贝叶斯案例
#加载数据
from sklearn import datasets
iris = datasets.load_iris()
#导入模型
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
#训练模型+预测数据
y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
#输出
print("Number of mislabeled points out of a total %d points : %d"% (iris.data.shape[0],(iris.target != y_pred).sum()))
5.常见的分类数据集
- 鸢尾花数据集:load_iris()
- 手写数字数据集:load_digits()
- MNIST手写体数据集
- 乳腺癌数据集
- IMDB电影评论数据集
6.欧氏距离
在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是
d = sqrt((x1-x2)2+(y1-y2)2)
三维的公式是
d=sqrt(x1-x2)2+(y1-y2)2+(z1-z2)^2)
推广到n维空间
7.KNN分类器算法
K近邻(K Nearest Neighbors,KNN)算法,又称为KNN算法。
思想是寻找与待分类的样本在特征空间中距离最近的K个已标记样本(即K个近邻),以这些样本的标记为参考,通过投票等方式,将占比例最高的类别标记赋给待标记样本。
KNN分类器算法
KNN算法需要确定K值、距离度量和分类决策规则
K值过小时,只有少量的训练样本对预测起作用,容易发生过拟合,或者受含噪声训练数据的干扰导致错误
K值过大,过多的训练样本对预测起作用,当不同类别样本数量不均衡时,结果偏向数量占优的样本
KNN分类器算法
1)计算测试数据与各个训练数据之间的距离;
2)按照距离的递增关系进行排序;
3)选取距离最小的K个点;
4)确定前K个点所在类别的出现频率;
5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。
#sklearn库调用KNN算法
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier()
8.多类问题
多类分类和多标签分类
- 多类分类指一个样本属于且只属于多个类中的一个,一个样本只能属于一个类,不同类之间是互斥的
- 多标签分类(multilabel classification)又称,多标签学习、多标记学习,不同于多类分类,一个样本可以属于多个类别(或标签),不同类之间是有关联的。
- 多类分类,直接使用能直接处理多类问题的分类器
- 多标签分类,多标签分类实现,为每个类别建立分类器
五.回归算法与应用
1.回归分析
- 回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
- 在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。
2.回归分析的应用
房屋面积
二手车价格
波士顿房价数据集
温室气体观测网络数据集
葡萄酒质量数据集
瑞典汽车保险数据集
3.线性回归(重点)
- Linear Regression线性回归它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的技术之一。在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的,回归线的性质是线性的。线性回归使用最佳的拟合直线(也就是回归线)。
- 在因变量(Y)和一个或多个自变量(X)之间建立一种关系。
3.1一元线性回归方程
这个方程对应的图像是一条直线,称作回归线,其中, 是回归线的截距, 是回归线的斜率,E(y)是在一个给定x值下y的期望值(均值)。
3.2例子
3.3.一元线性回归算法实现
4.逻辑回归
逻辑回归算法是用来解决分类问题的。
回归与分类的区别在于:
回归所预测的目标量的取值是连续的(例如房屋的价格);而分类所预测的目标变量的取值是离散的(例如判断肿瘤大小是否为恶性)。
逻辑回归优点
- 一是逻辑回归的算法已经比较成熟,预测较为准确;
- 二是模型求出的系数易于理解,便于解释,尤其在银行业,80%的预测是使用逻辑回归;
- 三是结果是概率值;
- 四是训练快。
Sigmoid 函数在有个很漂亮的“S”形,如下图所示:
逻辑回归不足
当然它也有缺点,分类较多的y都不是很适用;对于自变量的多重共线性比较敏感,所以需要利用因子分析或聚类分析来选择代表性的自变量;另外预测结果呈现S型,两端概率变化小,中间概率变化大比较敏感,导致很多区间的变量的变化对目标概率的影响没有区分度,无法确定阈值。
六.无监督学习
1.无监督学习
2.聚类的概念
- 聚类分析,将数据对象分组成为多个簇
- 同一簇中的对象彼此相似
- 不同簇中的对象彼此相异
3.聚类中的数据结构
3.1划分聚类
- 基于划分的方法
- 基于层次的方法
- 基于密度的方法
4.K-means聚类方式
K-Means(K均值)算法是划分聚类算法中的一种,其中K表示簇的数量,means表示均值。算法通过预先设定的 K值及每个簇的初始质心对相似的数据点进行划分。并通过划分后的均值迭代优化获得最优的聚类结果
K-means聚类方式
K-Means算法的伪代码如下:
- 从D中任意选择k个对象作为初始簇的质心
- Repeat
- 根据簇质心的值,将每个数据分配到最相似的簇
- 计算簇均值,更新簇质心值
- until簇中心不在发生变化
K表示簇的数量,means表示均值,初始质心,划分,迭代
5.层次聚类
6.DBSCAN聚类方式
7.数据降维
- 无监督学习的另一种常见算法—降维:
- 降维:减少要考虑的随机变量的数量
- 降维分析是指将高维数据到低维数数据空间(二维或三维)的变化过程,其目的是为了降低时间的复杂度和空间复杂度或者是去掉数据集中夹杂的噪音又或者是为了使用较少的特征进行解释,方便我们可以更好地解释数据以及实现数据的可视化
- 数据在真实世界中的表示
- 在真实的训练数据中总是存在各种各样的问题:存在噪声或者冗余。在这种情况下,需要一种特征降维的方法来减少特征数,减少噪音和冗余,减少过度拟合的可能性
七.关联规则和协同过滤
- 如何进行推荐?
- 关联规则
- 协同过滤
- 关联规则挖掘
- 关联规则挖掘:一种发现大量数据中事物(特征)之间有趣的关联的技术。
- 典型应用是购物篮分析:找出顾客购买行为模式、发现交易数据库中不同商品(项)之间的联系
- 关联规则挖掘的应用:
- 互联网
- 零售
- 交通事故成因
- 生物医学
1.关联规则挖掘的定义与步骤
2.apriori定律
3.基于用户的协同过滤算法
例子2
4.Surprise实现推荐系统
八.图像数据分析(P136)
1.图像变换
2.图像编码和压缩
3.图像增强和复原
4.图像分隔
5.图像描述和特征提取
6.图像分类(识别)
九.自然语言处理与NLTK(P155)
1.词条化
2.词性标注
3.词干还原
4.词性归并
5.句法分析
6.断句
7.TF-IDF(词频-逆文档频率P164)
参考资料
1.Numpy学习笔记
2.scikit-learn (sklearn) 官方文档中文版