Python数据分析与挖掘实战 第8章

因学习中发现《Python数据分析与挖掘实战》中的代码,有些不能实现,自己学习的时候走了很多弯路,特此分享可直接实现的代码,希望能让有需要的朋友少走弯路。

8-1部分

 
 
#数据聚类离散化
from __future__ import print_function
import pandas as pd
from sklearn.cluster import KMeans
inputfile='../8/data.xls'
outfile='../8/data2.xls'
k=4
data=pd.read_excel(inputfile)
typelabel={u'肝气郁结证型系数':'A',u'热毒蕴结证型系数':'B',u'冲任失调证型系数':'C',u'气血两虚证型系数':'D',u'脾胃虚弱证型系数':'E',u'肝肾阴虚证型系数':'F'}
keys=list(typelabel.keys())
result=pd.DataFrame()

if __name__ == '__main__':
    for i in range(len(keys)):
        print(u'正在进行"%s"的聚类...'%keys[i])
        kmodel=KMeans(n_clusters=k,n_jobs=4)
        kmodel.fit(data[[keys[i]]].as_matrix())
        r1=pd.DataFrame(kmodel.cluster_centers_,columns=[typelabel[keys[i]]])   #聚类中心
        r2=pd.Series(kmodel.labels_).value_counts()                             #分类统计
        r2=pd.DataFrame(r2,columns=[typelabel[keys[i]]+'n'])

        r=pd.concat([r1,r2],axis=1).sort_values(typelabel[keys[i]])
        r.index=[1,2,3,4]
        
   r[typelabel[keys[i]]]=pd.Series.rolling(r[typelabel[keys[i]]],window=2,center=False).mean()  #计算相邻两列的均值,作为边界点
r[typelabel[keys[i]]][ 1]= 0.0 result=result.append(r.T) result=result.sort_index() result.to_excel(outfile)
 
 

8-2部分

import pandas as pd
from apriori import *
import time

inputfile='../8/apriori.txt'
data=pd.read_csv(inputfile,header=None,dtype=object)        #dtype和type的区别
start=time.clock()                                          #开始计时
print(u'转化原始数据至0-1矩阵...')                       #\n换行
ct=lambda x:pd.Series(1,index=x[pd.notnull(x)])             #匿名函数,将标签数据转化为1????????????

b=map(ct,data.as_matrix())          #as_matrix将目标转化为多维数组
c=list(b)
data=pd.DataFrame(c).fillna(0)              #DataFrame的参数不能是迭代器,所以转换下
end=time.clock()
print(u'转化完毕,用时:%0.2f'%(end-start))         #0.2两位小数

del b,c

support=0.06
confidence=0.75

ms='---'

start=time.clock()
print(u'开始搜索关联规则...')
find_rule(data,support,confidence,ms)
end=time.clock()
print(u'搜索完成,用时:%0.2f'%(end-start))

猜你喜欢

转载自blog.csdn.net/lonely2018/article/details/80169772