****:python資料分析與挖掘實戰
源**有如下錯誤:
line22: 原: data.reshape 修改後: data.values.reshape
line23: 原: sort(0) 修改後: sort_values(0)
line24: 原: pd.rolling_mean(c, 2).iloc[1:] 修改後: pd.dataframe.rolling(c, 2).mean().iloc[1:]
import pandas as pd
from sklearn.cluster import kmeans
import matplotlib.pyplot as plt
plt.rcparams['font.sans-serif'] = ['simhei']
plt.rcparams['axes.unicode_minus'] = false
datafile = '../data/discretization_data.xls'
data = pd.read_excel(datafile)
data = data[u'肝氣鬱結證型係數'].copy()
k = 4
d1 = pd.cut(data, k, labels=range(k)) #等寬離散化,各個模擬依次命名為0,1,2,3
#等頻率離散化
w = [1.0*i/k for i in range(k+1)]
w = data.describe(percentiles=w)[4:4+k+1] #使用describe函式自動計算分位數
w[0] = w[0]*(1-1e-10)
d2 = pd.cut(data, w, labels=range(k))
kmodel = kmeans(n_clusters=k, n_jobs=4) #建立模型,n_jobs是並行數,一般等於cpu數較好
kmodel.fit(data.values.reshape((len(data), 1))) #訓練模型
c = pd.dataframe(kmodel.cluster_centers_).sort_values(0) #輸出聚類中心,並且排序(預設是隨機排序的)
w = pd.dataframe.rolling(c, 2).mean().iloc[1:] #相鄰兩項求中點,作為邊界點
w = [0] + list(w[0]) + [data.max()] #把首末邊界點加上
d3 = pd.cut(data, w, labels=range(k))
def cluster_plot(d, k): #自定義做圖函式來顯示聚類結果
pandas 資料離散化
連續屬性離散化的目的是為了簡化資料結構,資料離散化技術可以用來減少給定連續屬性值的個數。離散化方法經常作為資料探勘的工具。連續屬性的離散化就是將連續屬性的值域上,將值域劃分為若干個離散的區間,最後用不同的符號或整數值代表落在每個子區間中的屬性值。離散化有很多種方法,這使用一種最簡單的方式去操作 這樣...
連續資料離散化
資料規範化 import pandas as pd datafile eeeee chapter4 demo data discretization data.xls 引數初始化 data pd.read excel datafile 讀取資料 data data u 肝氣鬱結證型係數 copy k...
連續特徵離散化
參考知乎使用者 在工業界,很少直接將連續值作為邏輯回歸模型的特徵輸入,而是將連續特徵離散化為一系列0 1特徵交給邏輯回歸模型,這樣做的優勢有以下幾點 離散特徵的增加和減少都很容易,易於模型的快速迭代 這個點理解 稀疏向量內積乘法運算速度快,計算結果方便儲存,容易擴充套件 離散化後的特徵對異常資料有很...