111111111111

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori,association_rules


关联规则

model=TransactionEncoder()###建立模型
data=pd.read_csv('C:\\Users\\Lenovo\\Desktop\\Dataset\\Mushroom.txt',header=None,sep=' ')###读取文件

data1=(data.iloc[:,0]==2)###因为要提取毒蘑菇数据,毒蘑菇数据为首列中值为2的数据,将首列中值为2的赋值为true,否则为false
data2 = data.loc[data1]###data1中为true的数据提取出来

data2=data2.iloc[:,:-1].values.tolist()###将data2中的数据变成列表,以便使用模型对数据进行处理
data3 = model.fit(data2).transform(data2)###利用模型对数据进行处理
data4=pd.DataFrame(data3,columns=model.columns_)###将处理过的数据变为df模式
fre_item = apriori(data4, min_support=0.6) ###利用apriori算法生成频繁项集

te=TransactionEncoder()
df = pd.read_excel('C:\\Users\\Lenovo\\Desktop\\Dataset\\cancer.xls')
###include_lowest=True参数表示包含边界最小值包含数据的最小值

df["肝气郁结证型系数"] = pd.cut(df["肝气郁结证型系数"], [0,0.179,0.258,0.35,0.504], labels=["A1", "A2", "A3", "A4"],include_lowest=True)
df["热毒蕴结证型系数"] = pd.cut(df["热毒蕴结证型系数"], [0,0.15,0.296,0.485,0.78], labels=["B1", "B2", "B3", "B4"],include_lowest=True)
df["冲任失调证型系数"] = pd.cut(df["冲任失调证型系数"], [0,0.201,0.288,0.415,0.61], labels=["C1", "C2", "C3", "C4"],include_lowest=True)
df["气血两虚证型系数"] = pd.cut(df["气血两虚证型系数"], [0,0.172,0.251,0.357,0.552], labels=["D1", "D2", "D3", "D4"],include_lowest=True)
df["脾胃虚弱证型系数"] = pd.cut(df["脾胃虚弱证型系数"], [0,0.154,0.256,0.375,0.526], labels=["E1", "E2", "E3", "E4"],include_lowest=True)
df["肝肾阴虚证型系数"] = pd.cut(df["肝肾阴虚证型系数"], [0,0.178,0.261,0.353,0.607], labels=["F1", "F2", "F3", "F4"],include_lowest=True)


b = df.values.tolist() 
te_ary = te.fit(b).transform(b)
df1 = pd.DataFrame(te_ary, columns=te.columns_)

fre_itemset = apriori(df1, min_support=0.06,use_colnames=True)
rules=association_rules(fre_itemset,min_threshold=1)

consequents =  rules['consequents'] #frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
idx = consequents.apply(lambda x: 'H4'  in set(x)) 
aim_rules = rules[idx]

# # # # 聚类方法------K-means 聚类建模
import pandas as pd
from sklearn.cluster import KMeans


k = 3  # 聚类的类别:三类消费行为
data = pd.read_csv('C:/Users/lenovo/Desktop/consumption_data.csv')###读取数据
data=data.dropna(axis=0,how='any') #去除缺省值
data_zs = 1.0*(data - data.mean())/data.std()  # 数据标准化

model = KMeans(3)  # 分为k类
model.fit(data_zs)  # 开始聚类

r1 = pd.Series(model.labels_).value_counts()  # 将数组格式的labels转换为Series格式再统计各个类别的数目
r2 = pd.DataFrame(model.cluster_centers_)  # 将二维数组格式的cluster_centers_转换为DataFrame格式
r = pd.concat([r2, r1], axis=1)  # 横向拼接接(0是纵向),将r1变成一列拼接在r2的最右边,所有拼接的列的列名默认从0开始
r.columns = data.columns.tolist() + ['类别数目']  # 重命名表头
r=r.drop('Id', axis=1)


# # 详细输出原始数据及其类别
# output_data = pd.concat([data, pd.Series(model.labels_, index=data.index)], axis=1)   # 详细输出每个样本对应的类别
# output_data.columns = data.columns.tolist() + ['聚类类别']  # 重命名表头
# # output_data=output_data.drop('Id', axis=1)


# # # # 分类度量--决策树
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, auc
from sklearn.tree import DecisionTreeClassifier

data=pd.read_csv("C:/Users/Lenovo/Desktop/balance.csv")###读取数据
data=data[~data["Class"].isin([" B"])]###将类别属性“Class”取值为B的删除
data1=data[["Class"]]###将class列提取出来
data1.loc[data1["Class"]==" L"]=1###将类别属性"class"取值为"L"的类定义为正例
data1.loc[data1["Class"]==" R"]=0###将类别属性"class"取值为"R"的类定义为反例
data2=data[["Left-weight","Left-distance","Right-weight","Right-distance"]]###将列为这些的提取出来


X_train,X_test,y_train,y_test=train_test_split(data2,data1,test_size=0.8)###划分训练集和测试集

# # ###去掉行列索引,只取训练集和测试集的数值
X_train = X_train.values
X_test = X_test.values
y_train = y_train.values
y_test = y_test.values

tree = DecisionTreeClassifier()###设置决策树模型
tree.fit(X_train,y_train.astype('int'))###决策树模型对训练集进行处理
y_pred = tree.predict(X_test)###利用决策树对训练集的处理来对测试集进行精度测试
fpr, tpr, thresholds = roc_curve(y_test.astype('int'),y_pred)###计算roc曲线
roc_auc = auc(fpr, tpr)  ###计算auc的值


1
什么叫数据挖掘?
从大量的、错综复杂的数据中挖掘哪些令人感兴趣的(易被理解、新颖的、潜在
有用的、非平凡的)模式或知识
➢ 挖掘的不仅仅是数据(所以“数据挖掘”并非一个精确的用词)

2
KDD步骤
1. 数据清理
2. 数据集成
3. 数据选择
4. 数据变换
5. 数据挖掘
6. 模式评估
7. 知识表示

3
为什么数据预处理:
现实世界中的数据是脏的
不完全: 缺少属性值, 缺少某些有趣的属性或仅包含聚集数据
噪音: 包含错误或孤立点
不一致: 编码或名字存在差异

4
分类的概念:
利用已知类别的对象以预测未知对象属于哪个预定义的目标类

第一步,建立一个分类模型,描述预定数据类或概念集
第二步,使用模型,对将来的或未知的对象进行预测分类

5
关联规则性质:
关联规则反映一个事物与其他事物之间的相互依
存性和关联性。若两个或多个事物之间存在一定
的关联关系,则其中一个事物就能够通过其他事
物预测到。

6
数据特征
➢ 大容量
➢ 含噪音
➢ 异质数据

7
算法的特点
➢ 模式记述语言:反映了算法可以发现什么样的知识
➢ 模式评价:反映了什么样的模式可以称为知识
➢ 模式探索:包括针对某一特定模式对参数空间的探索和对模式
空间的探索
◆主要方法
➢ 分类
➢ 聚类
➢ 相关规则
➢ 回归
➢ 其他

8
数据类型
数据库数据
数据仓库
事务数据
空间数据库
 时间数据库和时间序列数据库
 流数据
多媒体数据库
 面向对象数据库和对象-关系数据库
 异种数据库和历史(legacy)数据库
文本数据库和万维网(WWW)

9
分类:利用已知类别的对象以预测未知对象属于哪个预定义的目标类

10
决策树如何实现
首先对数据进行处理,利用归纳算法生成可读的规则和决策树
然后使用决策对新数据进行分析。

11
决策树的优点
1、决策树易于理解和解释,可以可视化分析,容易提取出规则;
2、比较适合处理有缺失属性的样本;
3、在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
4、能够处理不相关的特征,且可以同时处理标称型和数值型数据

12
决策树算法步骤
1.树以代表训练样本的单个节点(N)开始
2.如果样本都在同一个类,则该节点成为树叶,并用该类标记
3.否则,算法调用Attribute_selection_method,选择能够最好的将样本分类的属性;
确定“分裂准则”,指出“分裂点”或“分裂子集”
4.对测试属性每个已知的值,创建一个分支,并以此划分元组
5.算法使用同样的过程,递归的形成每个划分上的元组决策树。一旦一个属性出现在一个节点上,
就不在该节点的任何子节点上出现

13
朴素贝叶斯的优点
1)朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
2)对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。
3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。

14
k近邻算法核心思想
如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,
并具有这个类别上样本的特性。

15
k近邻算法步骤
1.计算测定实例�与每个训练实例��(i=1,..,N)相似度di=similary�(x,�xi)(默认越大越相似);
2.按照��由大到小的顺序排序
3.取前K个样本作为�的�个近邻

16
KNN算法的优缺点
优点:
简单直观,训练非常快,易于实现
特别适合多分类问题
训练数据无限和足够大的K,K-NN方法效果会相当好!
不足:
对噪声敏感(小K)
即使在测试时间时,也需要存储所有训练数据
查询时间慢:每个查询�(��)复杂度
在高维度上,距离的概念是违反直觉的!

17
K-Means聚类算法流程
(1) 任意选择k个对象作为初始的簇中心;
Repeat
(2)将所有对象划归为k个簇:计算所有对象到k个簇中心的距离并找出与
每个对象最近的簇中心, 将该对象划分到该中心点所代表的的簇当中去;
(3) 更新簇的平均值, 即重新计算每个簇中对象的平均值;
(4) until 对象归属的簇不再发生变化

18
Apriori算法:
Apriori算法由连接和剪枝组成。
连接:生成候选频繁项集。
剪枝:除去非频繁项集。

19
离群点:
离群点:一些与数据的一般行为或模型不一致的数据,假定使用一个给定的统计过程来产生数据对象集,离群点是一个数据对象,它显
著不同于其他数据对象,好像它是被不同的机制产生的一样。
全局离群点:在给定的数据集中,显著地偏离数据集中的其余对象。
情景离群点:关于对象的特定情境,它显著地偏离其他对象
集体离群点:在给定的数据中,某些对象作为整体显著偏离整个数据集

20
离群点特点
离群点不同于噪声数据(噪声在数据分析中不是令人感兴趣的);
离群点是有趣的,因为怀疑产生它们的机制不同于产生其他数据的机制;
离群点检测还与演变数据集上的新颖性检测(novelty detection)相关;

21
离群点检测方法:
统计学方法
基于近邻性的方法
基于聚类的方法
基于分类的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值