對中醫證型資料進行挖掘分析,運用的演算法有k-means,meanshift,apriori。完整**與資料可在我的github中找到,鏈結在此。
from sklearn.cluster import kmeans # 匯入k均值聚類演算法
from sklearn.cluster import meanshift
defkmeanstest()
: result = pd.dataframe(
)for i in
range
(len
(keys)):
# 呼叫k-means演算法,進行聚類離散化
(u'正在進行「%s」的聚類...'
% keys[i]
) kmodel = kmeans(n_clusters=k, n_jobs=4)
# n_jobs是並行數,一般等於cpu數較好
kmodel.fit(data[
[keys[i]]]
.values)
# 訓練模型
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']
)# 轉為dataframe,記錄各個類別的數目
r = pd.concat(
[r1, r2]
, axis=1)
.sort_values(typelabel[keys[i]])
# 匹配聚類中心和類別數目
r.index =[1
,2,3
,4]# r[typelabel[keys[i]]] = pd.rolling_mean(r[typelabel[keys[i]]], 2) # rolling_mean()用來計算相鄰2列的均值,以此作為邊界點。
r[typelabel[keys[i]]]
= r[typelabel[keys[i]]]
.rolling(2)
.mean(
)# rolling_mean()用來計算相鄰2列的均值,以此作為邊界點。
r[typelabel[keys[i]]]
[1]=
0.0# 這兩句**將原來的聚類中心改為邊界點。
return result
defmeanshifttest()
: result = pd.dataframe(
)for i in
range
(len
(keys)):
# 呼叫meanshift演算法,進行聚類離散化
(u'正在進行「%s」的聚類...'
% keys[i]
) kmodel = meanshift(
)# n_jobs是並行數,一般等於cpu數較好
kmodel.fit(data[
[keys[i]]]
.values)
# 訓練模型
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']
)# 轉為dataframe,記錄各個類別的數目
r = pd.concat(
[r1, r2]
, axis=1)
.sort_values(typelabel[keys[i]])
# 匹配聚類中心和類別數目
r[typelabel[keys[i]]]
= r[typelabel[keys[i]]]
.rolling(2)
.mean(
)# rolling_mean()用來計算相鄰2列的均值,以此作為邊界點。
r[typelabel[keys[i]]]
[1]=
0.0# 這兩句**將原來的聚類中心改為邊界點。
return result
if __name__ ==
'__main__'
:# 判斷是否主視窗執行,如果是將**儲存為.py後執行,則需要這句,如果直接複製到命令視窗執行,則不需要這句。
datafile =
'data.xls'
# 待聚類的資料檔案
processedfile1 =
'kmeansdata_processed.xls'
# 資料處理後檔案
processedfile2 =
'meanshiftdata_processed.xls'
# 資料處理後檔案
typelabel =
k =4# 需要進行的聚類類別數
# 讀取資料並進行聚類分析
data = pd.read_excel(datafile)
# 讀取資料
keys =
list
(typelabel.keys())
result1 = kmeanstest(
) result1 = result1.sort_index(
)# 以index排序,即以a,b,c,d,e,f順序排
result1.to_excel(processedfile1)
result2 = meanshifttest(
) result2 = result2.sort_index(
)# 以index排序,即以a,b,c,d,e,f順序排
result2.to_excel(processedfile2)
# -*- coding: utf-8 -*-
from __future__ import print_function
import pandas as pd
from apriori import
*# 匯入自行編寫的apriori函式
import time # 匯入時間庫用來計算用時
inputfile =
'apriori.txt'
# 輸入事務集檔案
data = pd.read_csv(inputfile, header=
none
, dtype=
object
)start = time.time(
)# 計時開始
print
(u'\n轉換原始資料至0-1矩陣...'
)ct =
lambda x: pd.series(
1, index=x[pd.notnull(x)])
# 轉換0-1矩陣的過渡函式
b =map
(ct, data.values)
# 用map方式執行
data = pd.dataframe(b)
.fillna(0)
# 實現矩陣轉換,空值用0填充
end = time.time(
)# 計時結束
print
(u'\n轉換完畢,用時:%0.2f秒'
%(end - start)
)del b # 刪除中間變數b,節省記憶體
support =
0.06
# 最小支援度
confidence =
0.75
# 最小置信度
ms =
'---'
# 連線符,預設'--',用來區分不同元素,如a--b。需要保證原始**中不含有該字元
start = time.time(
)# 計時開始
print
(u'\n開始搜尋關聯規則...'
)find_rule(data, support, confidence, ms)
end = time.time(
)# 計時結束
print
(u'\n搜尋完成,用時:%0.2f秒'
python資料探勘面試 位元組跳動資料探勘面試總結
1.資料探勘任務 使用者常住城市 2.資料倉儲任務 演出主藝人名標籤挖掘 3.mapreduce原理 4.mapreduce特別慢的原因 4.1 計算機效能 cpu 記憶體 磁碟健康 網路 4.2 i o操作優化 資料傾斜 map reduce數設定不合理 reduce等待過久 小檔案過多 大量的不...
python資料分析與挖掘實戰 資料探勘基礎
從大量資料 包括文字 中挖掘出隱含的 未知的 對決策有潛在價值的關係 模式和趨勢,並用這些知識和規則建立用於決策支援的模型,提高 性決策支援的方法 工具和過程,就是資料探勘 它是利用各種分析工具在大量資料中尋找其規律和發現模型與資料之間關係的過程,是統計學 資料庫技術和人工智慧技術的綜合。1.定義挖...
python與資料探勘基礎
進行txt檔案資料讀取,資料為uci資料庫的 氣病症 病馬資料,資料見 data horsecolic.txt.資料有多行,每行有22個資料,前21個為馬的病症資料,最後乙個時該馬的標籤,判斷其患病與否。實驗的要求是將所有行的前21個資料儲存到乙個二維列表dataarr中,而標籤資料單獨儲存在乙個列...