亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

4.數據預處理

標簽:
Java

import pandas as pd

from sklearn.cluster import  KMeans

import math

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签

plt.rcParams['axes.unicode_minus'] =  False #用来正常显示负号

e = math.e

datafile =  'D:/BaiduNetdiskDownload/chapter4/demo/data/discretization_data.xls'

data = pd.read_excel(datafile)

data = data[u'肝气郁结证型系数'].copy()

data.head(5)

k = 4

d1 = pd.cut(data,k,labels= range(k))#等宽离散化

#等频率离散化

w = [1.0 * i/ k for i in range(k+1)]

w = data.describe(percentiles = w)[4:4+k+1]

w[0] = w[0]*(1- 1*e -10)

d2 = pd.cut(data,w,labels= range(k))

from sklearn.cluster import KMeans#引入KMeans

kmodel = KMeans(n_clusters = k ,n_jobs=  4 )#建立模型

kmodel.fit(data.values.reshape((len(data),1)))#训练模型

c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0) #输出聚类中心,并且排序(默认随机排序)

w = c.rolling(2).mean().iloc[1:]#相比两项求中点,作为边界线

w = [0] + list(w[0]) + [data.max()]#将首末边界点加上

d3 = pd.cut(data,w,labels= range(k))

def cluster_plot(d,k):#自定义作图来显示结果


    plt.figure(figsize = (8,3))

    for j in range(0,k):

        plt.plot(data[d == j],[j for i in d[d == j]],'o')

    plt.ylim(-0.5,k-0.5)

    return plt

cluster_plot(d1,k).show()

cluster_plot(d2,k).show()

cluster_plot(d3,k).show()

错误1:series数据不存在reshape,需改为data.values.reshape

错误2:dataframe排序,不能直接data.sort[],需改为data.sort_values()

3.df的rolling_mean()移动窗口函数问题:这里移动窗口函数的使用要改为c.rolling(2).mean(),也就是把rolling_mean()函数拆开来;



作者:红领巾_66d0
链接:https://www.jianshu.com/p/f96602498d1b


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消