数据挖掘重点整理

####归一化
from sklearn.preprocessing import MinMaxScaler
mm = MinMaxScaler()
mm_data = mm.fit_transform(data) )#归一化后的数据

####数据仓库关键特征
面向主题 数据集成 随时间而变化 数据不易丢失

####数据仓库数据模型
星型模式 雪花模式 事实星座

####数据预处理的主要任务
数据清理
数据集成
数据归约

####定性属性
标称属性(nominal)
二元属性(binary)
序数属性(ordinal)

####定量属性
区间标度属性(interval-scaled)
比率标度属性(ratio-scaled)

####决策树归纳 递归划分步骤停止的条件
划分D(在N节点提供)的所有元组属于同一类
没有剩余属性可以用来进一步划分元组——使用多数表决
没有剩余的样本
给定分支没有元组,则以D中多数类创建一个树叶

信息增益表示得知特征A的信息而使得类决策属性信息的不确定性减少的程度

####属性选择度量对比
增益率
 倾向于不平衡的划分,其中一个分区比其他分区小得多
信息增益
 偏向于多值属性
基尼指数
 偏向于多值属性
 当类的数量很大时会有困难
 倾向于导致相等大小的分区和纯度

####知识发现(KDD)的流程
数据获取、数据清洗、数据集成、数据选择、数据变换、数据挖掘、模式评估、知识表示
####什么是数据挖掘
从大量的、错综复杂的数据中挖掘哪些令人感兴趣的(易被理解、新颖的、潜在有用的、非平凡的)模式或知识

◆ 离群点是显著偏离其余对象的数据对象,仿佛是被不同的机制产生的
◆ 离群点主要有全局离群点、情景离群点及集体离群点三种类型
◆ 统计学方法认定不服从假定数据服从某个统计模型的对象为离群点
◆ 基于近邻的方法认定显著偏移其近邻的对象为离群点
◆ 基于聚类的方法认定小的或稀疏的簇或不属于任何簇的对象为离群点
◆ 基于分类的方法使用一类模型划定正常类的范围
####算法强解
Apriori(强关联规则)
先验知识1:频繁项集的子集都是频繁的
先验知识2:非频繁项集的超集都不是频繁的
扫描整个数据集获取所有1频繁项集的集合,利用先验知识2合并出待选二项集(只有两个元素不同的项集合并),
再利用先验知识1缩减范围(检测任意k-1子集是否频繁),最后用支持度筛选频繁二项集,依此类推

FP树
按照出现次数对频繁一项集降序排序构成项头表,删除原数据中的非频繁一项集并对原数据按照项头表顺序排序,
开始时FP树没有数据,建立FP树时我们一条条的读入排序后的数据集,插入FP
树,插入时按照排序后的顺序,插入FP树中,排序靠前的节点是祖先节点,而靠后
的是子孙节点。如果有共用的祖先,则对应的公用祖先节点计数加1。插入后,如
果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点。直到所有的
数据都插入到FP树后,FP树的建立完成。

朴素贝叶斯 P(Y=Ci|X)
(1)计算各类出现的概率 P(Y=Ci)
(2)计算在某个类中属性xi取定某个值的概率 P(X|Y=Ci)
P(Y=Ci) P(X|Y=Ci)最大的

K近邻

  1. 计算测试点𝑥与所有样本点 𝑥1, 𝑥2, … , 𝑥𝑁 的相似度𝑑𝑖 = 𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑦(𝑥, 𝑥𝑖);
  2. 按照𝑑𝑖由大到小的顺序将𝑥1, 𝑥2, … , 𝑥𝑁排序
  3. 取前K个样本作为𝑥的𝑘个近邻

K均值
(1) 任意选择k个对象作为初始的簇中心;
(2) repeat
(3) 根据簇中对象的平均值, 将每个对象(重新)赋给最类似的簇;
(4) 更新簇的平均值, 即重新计算每个簇中对象的平均值;
(5) until 不再发生变化

####代码
Apriori(强关联规则)

from mlxtend.frequent_patterns import fpgrowth
from mlxtend.frequent_patterns import apriori
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import association_rules
import pandas as pdfrom mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
import pandas as pd
a=pd.read_excel(“Cancer.xls”)
a[“肝气郁结证型系数”]=pd.cut(a[“肝气郁结证型系数”],[0,0.179,0.258,0.35,0.504],labels=[“A1”,“A2”,“A3”,“A4”])
a[“热毒蕴结证型系数”]=pd.cut(a[“热毒蕴结证型系数”],[0,0.15,0.296,0.485,0.78],labels=[“B1”,“B2”,“B3”,“B4”])
a[“冲任失调证型系数”]=pd.cut(a[“冲任失调证型系数”],[0,0.201,0.288,0.415,0.61],labels=[“C1”,“C2”,“C3”,“C4”])
a[“气血两虚证型系数”]=pd.cut(a[“气血两虚证型系数”],[0,0.172,0.251,0.357,0.552],labels=[“D1”,“D2”,“D3”,“D4”])
a[“脾胃虚弱证型系数”]=pd.cut(a[“脾胃虚弱证型系数”],[0,0.154,0.256,0.375,0.526],labels=[“E1”,“E2”,“E3”,“E4”])
a[“肝肾阴虚证型系数”]=pd.cut(a[“肝肾阴虚证型系数”],[0,0.178,0.261,0.353,0.607],labels=[“F1”,“F2”,“F3”,“F4”])
data=a[[“肝气郁结证型系数”,“热毒蕴结证型系数”,“冲任失调证型系数”,“气血两虚证型系数”,“脾胃虚弱证型系数”,“肝肾阴虚证型系数”,“TNM分期”]]
data.columns=[“A”,“B”,“C”,“D”,“E”,“F”,“T”]
ct=lambda x:pd.Series(1,index=x)
b=map(ct,data.values)
data2=pd.DataFrame(list(b)).fillna(0)
d=apriori(data2, min_support=0.06, use_colnames=True)
fin=association_rules(d, metric=‘confidence’, min_threshold=0.75, support_only=False)

决策树

from sklearn.tree import DecisionTreeClassifier
from sklearn.feature_extraction import DictVectorizer
import pandas as pd
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.metrics import recall_score
from sklearn.tree import export_graphviz
a=pd.read_csv(“lenses.txt”,sep="\t")
fds=a.iloc[:,0:4].to_dict(orient=‘records’)
vect=DictVectorizer(sparse = False)
data=vect.fit_transform(fds)
X_train,X_test,y_train,y_test=train_test_split(data,a[“eye_types”],test_size=1/6)
tree=DecisionTreeClassifier()
tree.fit(X_train,y_train)
sc=tree.score(X_test,y_test)
y_pre=tree.predict(X_test)
k=recall_score(y_test,y_pre,average=‘micro’)
print(k)

k-means

import pandas as pd
from sklearn import preprocessing
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
b=pd.read_excel(r"consumption_data.xls").dropna().iloc[:,1:]
b=pd.DataFrame(preprocessing.scale(b),columns=[“R”,“F”,“M”])
ans=KMeans(n_clusters=3,init=“random”).fit(b)
a=pd.read_excel(r"consumption_data.xls").dropna().iloc[:,1:]
a[‘labels’]=ans.labels_
a[a[‘labels’]==0][‘R’].plot(kind=‘kde’)
plt.show()

K-近邻

from os import listdir
import pandas as pd
from functools import reduce
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn import preprocessing
########################################################
train_set=list()
def f1(x,y):
x.extend(y)
return x
def f2(t):
a=pd.read_csv(“trainingDigits/”+t,header=None)
b=a[0].apply(lambda x:list(x))
c=reduce(lambda x,y:f1(x,y),b)
train_set.append©
data=pd.Series(listdir(r"trainingDigits"))
data.apply(f2)
train_set=pd.DataFrame(train_set)
labels=data.apply(lambda x:x.split(’_’)[0])
X_train,X_test,Y_train,Y_test = train_test_split(train_set,labels,train_size=0.8)

besti=0

best=0

for i in range(1,45,2):

clf=KNeighborsClassifier(n_neighbors=i)

clf.fit(X_train,Y_train)

metric = cross_val_score(clf,X_train,Y_train,cv=10)

if metric.mean()>best:

best=metric.mean()

besti=i

print(besti)

###最好的近邻数K为3
train_set2=list()
def f3(t):
a=pd.read_csv(“testDigits/”+t,header=None)
b=a[0].apply(lambda x:list(x))
c=reduce(lambda x,y:f1(x,y),b)
train_set2.append©
data2=pd.Series(listdir(r"testDigits"))
data2.apply(f3)
train_set2=pd.DataFrame(train_set2)
labels2=data2.apply(lambda x:x.split(’_’)[0])
clf=KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train,Y_train)
print(clf.score(train_set2,labels2))
#####准确率:0.985200845665962

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值